Go to the previous, next section.
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
.
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.
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 }
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.
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.
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
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.
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.
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.