Next: Vibrational Manipulations, Previous: Second Derivatives, Up: Vibrational Analysis

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:

- Normalize double precision vector (unless NONOrm keyword is used).
- Mass weight by dividing by root(mass) (unless NOMA keyword is used).
- Multiply by appropriate scale factor from step type an length.

To convert from single precision into double precision, the procedure is:

- Save inner product (as initial step length).
- Mass weight by multiplying by root(mass) (unless NOMA keyword is used).
- Normalize vector (unless NONO keyword is used).
- Compute scale factor using initial step length and step type.

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
mode are `XNORM`

, `YNORM`

, and `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.