spec

Software for Diffraction

fourc

4-circle geometry modes

DESCRIPTION

fourc version of spec operates a standard four-circle diffractometer. These notes give a brief description of the features of fourc. Further details are given in the Four-Circle Reference section of the spec manual.

FOUR-CIRCLE MODES

The four-circle modes represent the various constraints that can be made on the transformation equations from reciprocal space to diffractometer angles. Use the setmode macro to select a four-circle mode. The different modes are numbered as follows:

0 Omega Equals Zero
1 Omega Fixed
2 Zone (Chi and Phi Fixed)
3 Phi Fixed
4 Azimuthal
5 Alpha Fixed
6 Beta Fixed

FROZEN ANGLES

Each of the four-circle modes has associated an angle (or angles) that are fixed in that mode. As a convenience, there is a freeze macro that turns on a frozen mode. When in frozen mode, all moves that specify reciprocal space coordinates will use the frozen value(s) of the current mode's fixed angle(s). Thus you can move motors around for lining up, etc, but have the the fixed parameter automatically restored to the frozen value when doing reciprocal space scans, br moves, etc. The unfreeze macro turns frozen mode off.

The frozen values are stored in variables (actually macros) named F_OMEGA (omega-fixed mode), F_CHI_Z and F_PHI_Z (zone mode), F_PHI (phi-fixed mode), F_AZIMUTH (azimuthal mode), F_ALPHA (alpha-fixed mode), and F_BETA (beta-fixed mode). You can, of course, assign values to these variables by hand.

FOUR-CIRCLE SECTORS

The sector transformations are symmetry operations on the diffractometer angles that yield eight different positions of the diffractometer circles that correspond to the same H, K and L position. A ninth sector minimizes abs(chi - 90) and abs(phi). The sectors H K L macro prints the diffractometer angles that would be used for each of the possible sectors for a particular reciprocal space position. Use the setsector macro to select a sector.

CUT POINTS

Cut points affect the direction the diffractometer circles turn to get from one position to the next. For example, if a cut point is at zero, the corresponding circle will only move through angles of 0 to 360 degrees. Thus, to get from 355 (=-5) to 5 degrees, the circle will turn 350 degrees. If a cut point is at -180, the circle will move through angles from -180 to 180. Thus the same motion from -5 to 5 will require only 10 degrees of movement. Use the cuts macro to select cut points for theta, chi and phi (and the azimuth). The two-theta motor always uses -180 as a cut point. (Only the sign of the azimuth cut point is used, and it determines the sign of the azimuth angle.)

LATTICE PARAMETERS

The setlat and setrlat macros let you set the lattice parameters in direct space or reciprocal space, respectively.

ORIENTATION MATRIX

With known lattice parameters, you need to find two (nonparallel) reflections in order to determine the orientation matrix. The macros or0 H K L and or1 H K L are used to associate the current diffractometer angles with the primary and secondary reflections. Macros called setor0 and setor1 also let you set the orientation reflections, but don't require you to move the diffractometer to the correct position. Instead, you are prompted for each of the angles and values for H, K and L. The or_swap macro is available to exchange the primary and secondary reflections.

You can also fit an orientation matrix if you have three or more known reflections (not all in the same plane), but unknown lattice parameters. Use reflex_beg to initialize a reflections data file. Use reflex H K L to add the current reflection to the file. Use reflex_end to complete the file. You then run the reflections file as a spec command file in order to fit the reflections to obtain a new orientation matrix. To calculate lattice parameters from the new orientation matrix, type calcL. You can then display the lattice parameters with the pa macro. Naturally, you can edit the reflections data file to delete or modify any of the reflection data there.

GLOBALS AND MACROS

Q[]

a built-in array which holds the following four-circle parameters:

def H 'Q[0]'
Reciprocal space coordinate.
def K 'Q[1]'
Reciprocal space coordinate.
def L 'Q[2]'
Reciprocal space coordinate.
def LAMBDA 'Q[3]'
Wavelength of X rays.
def ALPHA 'Q[4]'
Incident angle, useful for surface diffraction.
def BETA 'Q[5]'
Exit angle, useful for surface diffraction.
def OMEGA 'Q[6]'
The theta - two-theta / 2 parameter.
def AZIMUTH 'Q[7]'
Rotation angle of a reference vector about the scattering vector, useful for surface diffraction.
def F_ALPHA 'Q[8]'
Frozen value of ALPHA for alpha-fixed mode.
def F_BETA 'Q[9]'
Frozen value of BETA for beta-fixed mode.
def F_OMEGA 'Q[10]'
Frozen value of OMEGA for omega-fixed mode.
def F_AZIMUTH 'Q[11]'
Frozen value of AZIMUTH for azimuth-fixed mode.
def F_PHI 'Q[12]'
Frozen value of PHI for phi-fixed mode.
def F_CHI_Z 'Q[13]'
Frozen value of CHI for zone mode.
def F_PHI_Z 'Q[14]'
Frozen value of PHI for zone mode.
def CUT_TH 'Q[15]'
The theta cut point.
def CUT_CHI 'Q[16]'
The chi cut point.
def CUT_PHI 'Q[17]'
The phi cut point.
def CUT_AZI 'Q[18]'
The azimuth cut point flag.
G[]

a built-in array which holds the following four-circle parameters:

def g_mode 'G[0]'
Holds current four-circle mode.
def g_sect 'G[1]'
Holds current four-circle sector.
def g_frz 'G[2]'
Nonzero when frozen mode is on.
def g_haz 'G[3]'
H of azimuthal reference vector.
def g_kaz 'G[4]'
K of azimuthal reference vector.
def g_laz 'G[5]'
L of azimuthal reference vector.
def g_zh0 'G[6]'
H of first zone-mode vector.
def g_zk0 'G[7]'
K of first zone-mode vector.
def g_zl0 'G[8]'
L of first zone-mode vector.
def g_zh1 'G[9]'
H of second zone-mode vector.
def g_zk1 'G[10]'
K of second zone-mode vector.
def g_zl1 'G[11]'
L of second zone-mode vector.
calcHKL
calculates H, K, L, ALPHA, BETA, and AZIMUTH from the four-circle angles in the motor array A[].
calcA
calculates A[], OMEGA, ALPHA, BETA and AZIMUTH from H, K and L.
calcZ
calculates the phi and chi to put the two vectors specified by the six elements of the built-in Z[] array in the scattering plane.
cz
"calculate zone", prints the chi and phi necessary to put the two vectors specified as arguments in the scattering plane.
mz
"move zone", moves to the chi and phi values that put the two vectors specified as arguments into the scattering plane. Also sets zone mode and turns on frozen mode using the calculated chi and phi values.
sz
"set zone", calculates the chi and phi values that put the two vectors specified as arguments into the scattering plane. Also sets zone mode and turns on frozen mode using the calculated chi and phi values.

SEE ALSO


geo_fourc.c, C source file for the four-circle geometry calculations.
fourc.src, macro source file for the four-circle macros.
hkl.mac, macro source file for reciprocal space macros.
ub.mac, macro source file for orientation matrix macros.
The Four-Circle Reference in the spec manual.