There are two ways that normal modes are stored internally in CONGEN. The most common usage is as one double precision mass weighted array. A series of such arrays usually span an orthonormal basis (as would be the case upon diagonalization). The second method is to represent a normal mode as three non mass weighted coordinate displacement arrays, stored in single precision. The program automatically converts between them as necessary. Whenever interconversion is to be done, a "magnitude specification" may be given. This specification requires a step type and step length. The valid step types are; FACT (simple factor), TEMP (put mode at this temperature), KCAL (put in the specified Kcals), and RMS (step along until this RMS is reached). When specifying TEMP or KCAL, a terminal frequency may be specified (default TFREQ is 5.0) which prevents excessive stepping along very low, or translation-rotation modes.
The procedure used in going from double precision to coordinate displacement arrays is:
To convert from single precision into double precision, the procedure is:
Whenever a magnitude-specification is called for, some interconversion will take place. The conversion from double precision to coordinate displacements takes place in the subcommands:
PRINt NORMal-modes WRITe TRAJectory PROJect FILL EXPLore
The interconversion from coordinated displacements to double precision takes place in the subcommands:
PROJect EDIT NORMal-modes
Normal modes are always stored in double-precision. Only one mode
is represented as coordinate displacements (at any one time), and its
use is usually temporary. The arrays for this one coordinate displacement
ZNORM. These arrays can be filled using the
FILL command and then used in other pars of CONGEN.
The Normal Mode data structure of double precision arrays is local to the Vibrational analysis section of CONGEN, and the storage space for these arrays is released when exiting to CONGEN via the END command.