Shift has several unique input statements which are only used in the passing of information from the programs performing the function value and derivative calculations. These statements are discussed in the ``Writing Your Own Module'' chapter (page ).
In addition, it understands:
MAXSHIFT <Parameter code> <RMS limit>
The MAXSHIFT statement allows a limit to be placed on the size of any shift for any atom. While the RANGE statement limits the allowed values of a parameter, MAXSHIFT limits the allowed range of shifts which may be applied. <Parameter code> is either XYZ, B, or OCC (ALL is not allowed). The <RMS limit> times the root-mean-square of all shifts gives the upper limit for the size of any particular shift. If a shift is greater than this limit it is clipped to that limit.
(The r.m.s. shift is determined in a robust fashion; all shifts greater than 4 times the r.m.s. are ignored.)
MAXSHIFT is only useful when using steepest descent or conjugate gradient. When the shifts are not scaled by the curvatures some parameters will be vastly overshifted, especially temperature factors of heavy atoms. The MAXSHIFT statement causes the resulting oscillations to damp much quicker. When using a minimization method which utilizes curvature, such as preconditioned conjugate gradient there is no need to use this statement.
RMSTEP <Parameter code> <RMS shift>
The RMSTEP statement gives Shift an initial amount of shift to be applied. The parameter code identifies whether a RMS coordinate (XYZ), B factor (B), or occupancy (OCC) is being defined. The short loops will refine this number to find the best value. Because this number is refined its choice is not critical but values 1 1/2 to 2 times larger than the expected final value seem to work best. Default values exist for the RMSTEP statement so that in a long loop it need not to be given.
RMSTEP is ignored whenever the Gradient/Curvature or Preconditioned Conjugate Gradient methods are used. In both of these cases the curvature is used to determine the initial stepsize.