Welcome | spec | C-PLOT | Support | Users | Contact
 
Contents -> STANDARD MACRO GUIDE -> Reciprocal Space Macros
spec Manual


3.8. - Reciprocal Space Macros



The following macros are general and applicable to most geometry configurations. Macros special to the four-circle geometry configuration are described in the Four-Circle Reference that follows this guide.
    ca H K L                # Display calculated positions for H K L
    cal H K L               # As above, but don't reset positions
    ci tth th chi phi       # Display calculated H K L for angles
    br H K L                # Move to H K L
    mk H K L                # Move to H K L
    ubr H K L               # Move to H K L while updating screen
    umk H K L               # Move to H K L while updating screen
    mi ALPHA BETA           # Move to ALPHA BETA
    wh                      # Display H, K, L, tth, th, chi, phi, etc.
    pa                      # Display geometry parameters
    


The difference between ca and cal is that the first macro restores the A[] angles and H, K and L to the current diffractometer position, while the second macro leaves them at the calculated values.

There is no difference between the br and mk macros, except their names.

The ubr and umk macros continuously read the motor positions from the controller and show the positions on the screen. The frequency of updates is set by the global variable UPDATE.
    # Go to a Bragg position
    def br '_br $*; move_poll'
    def _br '
          if ($# != 3) {
                   print "Usage:  br H K L"
                   exit
           }
           waitmove; { H=$1; K=$2; L=$3 } getangles; calcA
           onp; offt; printf("\nbr %g %g %g\n", H, K, L); offp; ont
           move_em
    '
    
    # Calculate motor positions for a given H, K, and L
    def cal '
          if ($# != 3) {
                  print "Usage:  cal H K L"
                  exit
          } ;
          {H = $1; K = $2; L = $3 } calcA; calcHKL
          onp
          printf("\nCalculated Positions:\n")
          _var
          offp
    '
    # As above but reset positions to diffractometer positions
    def ca '
          if ($# != 3) {
                  print "Usage:  ca H K L"
                  exit
          } ;
          {H = $1; K = $2; L = $3 } calcA; calcHKL
          onp
          printf("\nCalculated Positions:\n")
          _var
          offp
          waitmove; getangles; calcHKL
    '
    
    # Where - reciprocal and real space
    def wh '
          waitmove; getangles; calcHKL
          onp
          _var
          offp
    '
    
    # A macro called by "wh", "ca" and "ci" to display important
    # geometry quantities.  (Four-circle version.)
    def _var '
            printf("\nH K L =  %.5g  %.5g  %.5g\n", H, K, L)
            printf("ALPHA = %.5g  BETA = %.5g", ALPHA, BETA)
            printf("  AZIMUTH = %.5g  LAMBDA = %g\n\n", AZIMUTH, LAMBDA)
            _mot 4
    '
    



  Top
  Prev | Next