Go to the previous, next section.

Vibrational Analysis

The vibrational analysis routines are designed to provide the user a variety of analysis options as well as features designed to facilitate the interface to the analysis (see section The Analysis Facility of CONGEN). The vibrational analysis and this documentation was written by Bernard R. Brooks who is presently (1990) at NIH.

To use the vibrational analysis, one must first execute then VIBRAN command. This enters a separate command parser which has its own set of commands. Control is returned to the top level of CONGEN with an END command.

In order to process commands with the vibrational analysis routines, The energy terms must all be defined, and the structure must be determined (see section Requirements for Energy Manipulations). At present, fixing constraints (see section Fixing Atoms in Place) SHAKE (see section SHAKE -- Fixing Bond Lengths Or Angles in Dynamics), and images (see section Symmetry and Molecular Images) are not supported.

Keywords used to define hydrogen bonds and nonbonded interactions may be included in the command that invokes VIBRAN.

Syntax for Vibrational Analysis Commands

Main Command Syntax

VIBRan  [hbond-spec] [nbond-spec] [nmode-spec]

nmode-spec ::= NMODe integer 

The syntax for hbond-spec is given in section Generation of Hydrogen Bonds. The syntax of nbond-spec is given in section Generation of Non-bonded Interactions. The nmode-spec allocates space on the heap. For large systems, if normal modes are to be used, It should be set to the largest number needed. Its default value is set to 10 if the number of atoms (NATOM) is greater than 50, and 3*NATOM otherwise.

Subcommand Syntax

READ    { { NORMal-modes[APPEnd]               } [FILE] unit-spec  }
        { { COORdinate  [COMParison] coor-spec }                   }

        { { COORdinate [COMParison] coor-spec } unit-spec  }
WRITe   { { NORMal-modes  [mode-spec]         } [FILE]     }
        { { SECOnd-derivatives                }            }
        { { TRAJectory trajectory-spec        }            }
        { { IC                                }            }

trajectory-spec::= mode-spec magnitude-spec [PHAS real] [SEQUential-files]

        { { COORdinate        } [COMParison]                    }
PRINt   { { IC                }                                 }
        {                                                       }
        { NORMal-modes  [mode-spec] [magnitude-spec] print-spec }

print-spec ::= [INTDerivatives] [VECTors] [DOTProducts] [DIPOle]

PROJect { { FORC   }                              }
        { { USER   } [mode-spec] [magnitude-spec] }
        { { COMP   }                              }

DIAGonalize [NOMAss]  [NFREquencies integer]

EDIT    { INCL { TRAN } [NOMAss] [NONOrmalize] [ORTHogonalize] }
        {      { ROTA }                                        }
        {      { COMP }                                        }
        {      { FORC }                                        }
        {      { USER }                                        }
        {                                                      }
        {  { DELEte} [mode-spec]                               }
        {  { ORTHogonalize } [NONOrmalize]                     }

FILL    {  NORM } [mode-spec] [magnitude-spec] [APPE]
        {  COMP }

EXPLORE [mode-spec] [magnitude-spec] [COMP] [GRID integer]

END

unit-spec ::= UNIT unit-number

mode-spec ::= MODE integer [ THRU integer ]

magnitude-spec ::= { TEMP real TFRE real } [NOMAss] [NONOrm]
                   { KCAL real TFRE real }
                   { RMS  real           }
                   { FACT real           }

I/O For Normal modes

The VIBRAN section supports it own I/O commands. Commands to read, write and print coordinates and internal coordinates are identical with those in the main program. This section can read and write the Normal Mode data structure and write out the second derivative matrix (for external use) and normal mode trajectories (for the movie programs). Also, useful information about normal modes may be printed using the PRINT NORM command.

Normal Mode vectors may only be read and written in binary (FILE) format. When writing, a unit must be specified, and a contiguous subset of modes may be specified using the mode-spec. When reading modes, all of the modes in the normal mode file will be read (assuming there is enough space). If the available space is exhausted, a warning is issued, and further reading stops. Existing modes will be deleted when the READ NORM command is executed unless the append option is used, in which case, the new modes are added sequentially at the end. No modification of modes is done upon reading (i.e. normalization, or orthogonalization).

When printing Normal Modes, a variety of options may be specified. A contiguous subset of modes may be specified (the default is all modes), and an appropriate magnitude may be specified (see section Normal Modes). For each specified mode, the frequency, eigenvalue, force projection, percentage of translation-rotation, and magnitude information will be printed. In addition, internal derivatives (by finite differences of the internal coordinate data structure), displacements in coordinate space, and dotproducts with other modes can be printed.

Trajectory files may be written out for a set of modes with a given magnitude factor. The modes for all specified modes may be written out in one file, or in separate files for different modes where sequential unit numbers are used starting with the specified unit number. The SEQUENTIAL keyword will cause sequential files to be written.

Second Derivatives

The second derivatives are computed during energy determination and they are stored in temporary array that are allocated dynamically. Once obtained, they can be written out, or diagonalized internally for small systems (up to 200 atoms).

The following is from comments in ENERGY;

IF 'NSECD=.FALSE.' THEN THE SECOND DERIVATIVES OF THE ENERGY
ARE RETURNED IN THE ARRAYS DD1,DD2,DD3,DD4,IDD4,JDD4,AND NDD4.
TREIR USAGE CAN BE SUMMARIZED BY;
    ARRAY        SPACE      TYPE         DESCRIPTION
     DD1         6*NATOM    REAL*8       DIAGONAL ELEMENTS
     DD2         6*NNB      REAL*4       NONBONDED INTERACTIONS
     DD3         9*IBLO(NATOM) R*4       EXCLUDED INTERACTIONS
     DD4         9*NND4     REAL*4       EXTRA INTERACTIONS
     IDD4        NDD4       INTEGER*2    FIRST ATOM OF EXTRAS
     JDD4        NDD4       INTEGER*2    SECOND ATOM OF EXTRAS
 IF THE LOGICAL VARIABLE 'NSECD' IS SET TO .FALSE. SECOND
DERIVATIVES WILL BE GENERATED. 'DIAGSD' IS SET TO .TRUE. IF ONLY
THE DIAGONAL (DD1) SECOND DERIVATIVES ARE DESIRED.
FOR DD1 EACH ATOM REQUIRES 6 SEQUENTIAL R*8 LOCATIONS. THE 
SEQUENCE IS XX,XY,YY,XZ,YZ,ZZ  WHERE EACH IS THE PARTIAL SECOND
DERIVATIVE OF THE ENERGY WRT THE CORRESPONDING MOTIONS OF THE 
PARTICULAR ATOM. DD2 IS STORED IN THE SAME MANNER EXCEPT THAT
EACH 6 R*4 LOCATIONS CORRESPOND TO A PARTICULAR NONBONDED
INTERACTION. THE SEQUENCE OF NONBONDED INTERACTIONS IS DEFINED
BY THE INTEGER ARRAYS 'INBLO' AND 'JNB'. SINCE THE NONBONDED
INTERACTIONS ONLY INVOLVE RADIAL FORCES, ONLY 6 LOCATIONS ARE 
NEEDED.(IE  XY=YX). DD3 CONTAINS THE SECOND DERIVATIVES FOR ATOMS
THAT INTERACT THROUGH THE EXCLUDED LIST. SINCE SYMMETRY IS NOT
PRESENT FOR ANGLES,ETC... 9 LOCATIONS ARE NEEDED GIVEN BY THE
SEQUENCE  XIXJ,YIXJ,ZIXJ,XIYJ,YIYJ,ZIYJ,XIZJ,YIZJ,ZIZJ. ATOM
I IS ALWAYS LESS THAN ATOM J. THE SEQUENCE OF EXCLUDED 
INTERACTIONS IS DEFINED BY 'IBLO' AND 'INB'.
DD4 CONTAINS ALL OTHER INTERACTIONS NOT CONTAINED ABOVE.
THESE ARE USUALLY 1-4 DIHEDRAL INTERACTIONS AND HYDROGEN BONDS.
INFORMATION IS STORED AS IT IS IN DD3. SINCE SOME CODE REFERENCES
BOTH DD3 AND DD4, THE DIFFERENCE OF THEIR BASES IS NEEDED. THIS
IS STORED IN IDD3AD (IE  IDD3AD=BASE(DD3)-BASE(DD4) ).
CODE TO CONVERT THIS STORAGE SCHEME TO SIMPLE UPPER TRIANGULAR
FORM CAN BE FOUND IN 'MINMIZ' UNDER THE NEWTON RAPHSON SECTION.

Normal Modes

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:

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

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

  1. Save inner product (as initial step length).
  2. Mass weight by multiplying by root(mass) (unless NOMA keyword is used).
  3. Normalize vector (unless NONO keyword is used).
  4. 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.

Manipulation of Normal Modes

There are several commands that con modify the normal mode vector space. In addition to the obvious ones such as READ NORMal-modes and DIAGonalize, there is also an EDIT command which can be used to modify the normal mode data structure. The EDIT DELETE command will delete specified modes from the date structure. The EDIT ORTHogonalize command is used to orthogonalize and optionally normalize a particular subset of normal modes. Additional modes can be added three at a time with the EDIT INCLude TRANslation and EDIT INCLude ROTAtion commands. These commands will add on the translation and rotation eigenvectors respectively. This option is important when individual Coreolis coupling terms are needed. Single additional modes may be added with the EDIT INCLude COMP or the EDIT INCLude FORCe or the EDIT INCLude USER commands. For the COMP option, the difference between the comparison and main coordinate sets will be appended, for the FORCe option, the current values in the force arrays (from the last energy evaluation) will be appended. There is also the ability to specify a user vector. this is done by the inclusion of the subroutine USERNM in your USERSB and using the USERLINK facility, see section Interfacing to CONGEN. For all of the EDIT INCLude options, the defaults are to mass weight, normalize, and orthogonalize to the rest of the vector space. To skip any of these steps, the NOMA, NONO, and NOOR keywords must be specified.

There are two commands which are used to obtain information about particular normal modes without modifications. These are the PRINT NORMal-modes and PROJect subcommands. The PROJect command will project one of; FORCe (the current force), COMParison (the difference between the main coordinates and the comparison set), and USER (a user supplied mode or coordinate displacement). The information displayed is:

MODE integer    - mode number
FREQUENCY       - frequency of this mode
NORMAL DOTPR    - actual dotproduct of normalized vectors
PROJECTION      - ratio of guess vector projection to step length
APPROX DEL E    - estimate of energy increase along this mode
TYPE            - type of step (FACT, RMS, KCAL, TEMP)
STEP            - step length for this step type

The NOMAss and NONOrm keywords may be used to prevent mass weighting or normalization of modes.

The comparison coordinates can be modified with the FILL COMP command. This command will copy the main coordinate set to the comparison set, and then step along the specified mode by the specified magnitude. When the append (APPE keyword) is used, the main coordinates are not first copied. The FILL NORM command will fill the normal mode coordinate displacement arrays with the specified vector. Again, the append option will prevent the zeroing of these arrays before stepping along the mode. Several other commands use and modify the normal coordinate displacement vectors, so the FILL NORM command should be executed just before exiting to CONGEN with the END command.

Exploring Energy Surfaces

The EXPLORE command does a linear search along a given normal mode. The GRID option gives the number of points evaluated.

This command is presently incomplete in CONGEN.

Go to the previous, next section.