Search:

# Calculating Harmonic Frequencies By Finite Differences In Parallel

The following gives a general overview for how to run harmonic frequency calculations in an efficient manner, if one is using finite differences of analytic gradients for the force constant evaluation. A typical input file for such a calculation might look like this:

   water    H    O 1 R    H 2 R 1 A       R    =        0.964203501252364    A    =      103.602079370900668       *CFOUR(CALC=CCSD[T],BASIS=ANO0,CC_CONV=9,LINEQ_CONV=9    SCF_CONV=9,DROPMO=1    FREQ_ALGORITHM=PARALLEL,VIB=FINDIF)


The two keywords on the bottom line are the directives for the harmonic frequency calculation; the latter is the usual" one, and the former is that which needs to be used for this (coarse-grained) parallel approach.

The procedure:

1. With a GENBAS file in place (and the ZMAT like that above), do the following.

xjoda
xsymcor

After doing this, you will find a number of files labeled zmat001, zmat002 ... zmatxxx (for this example, xxx=005) in the directory. Each of these is the input file appropriate to calculate one of the required gradients at a displaced geometry. For example, here is zmat005:

   Perturbed geometry   5 for parallel findif calculation    H      0.000000000000000    -1.431648717236431     1.000452716317203   O      0.000000000000000    -0.000033594695136    -0.126101668361393   H      0.000000000000000     1.432181889426114     1.000872265792465      *CFOUR(CALC=CCSD[T],BASIS=ANO0,CC_CONV=9,LINEQ_CONV=9   SCF_CONV=9,DROPMO=1   FREQ_ALGORITHM=PARALLEL,VIB=0   DERIV_LEV=1,COORD=CARTESIAN,UNITS=BOHR)


2. Run a separate job, using each of the zmatxxx files as input. The specifics of doing this, of course, depend on your local machine configuation and your predilections. The important thing, however, is to invoke the executable xja2fja after the xcfour run. This extracts the relevant parts from the JOBARC file and writes them to a formatted file called FJOBARC. Keep this file. For bookkeeping purposes, it is a good idea to name this file something like fja.xxx, where this is the relevant contents of the JOBARC file for the job associated with the input file zmatxxx.

In short, something like this:

cp /whatever/directory/you/areusing/zmat005 ZMAT
xcfour
xja2fja
cp FJOBARC /whatever/directory/you/want/fja.005

Do this for each of the zmatxxx files.

3. At the end, you will have fja.001, fja.002 ... fja.xxx.

4. Place the original ZMAT file, together with the fja.xxx files in a clean directory, together with an appropriate GENBAS file. Then invoke the following script:

#!/bin/csh
xjoda
xsymcor
foreach i (fja.*)
cp \$i FJOBARC
xja2fja
xsymcor
end
xjoda

5. This should produce the desired set of harmonic frequencies. For the ZMAT example file here, the output from xsymcor at the end of the script is as follows:

  Vibrational frequencies  (cm-1) :
1 1659.61804    73.02578
2 3834.88901     6.37419
Vibrational frequencies  (cm-1) :
1 3958.09739    42.64690
@CHECKOUT-I, Total execution time :       0.0000 seconds.


and the first part of the xjoda output is

                     Normal Coordinate Analysis
----------------------------------------------------------------
Irreducible         Harmonic       Infrared        Type
Representation       Frequency      Intensity
----------------------------------------------------------------
(cm-1)         (km/mol)
----------------------------------------------------------------
----                 0.0000i        0.0000       ---------
----                 0.0000i        0.0000       ---------
----                 0.0000i        0.0000       ---------
----                 0.0000         0.0000       ---------
----                 0.0000         0.0000       ---------
----                 0.0000         0.0000       ---------
A1              1659.6203        73.0258       VIBRATION
A1              3834.8942         6.3742       VIBRATION
B2              3958.1028        42.6469       VIBRATION
----------------------------------------------------------------


6. If one is doing this as part of an anharmonic calculation - or any other calculation of a harmonic force field that is not taking place at a stationary point on the potential energy surface - the option

FD_PROJECT=OFF

is necessary (and is the defaut) which disables the projection of the rotational coordinates from the displacements used. This will require that more gradients are evaluated to get the harmonic frequencies, but it is absolutely necessary to do this at a non-stationary geometry. All will proceed as above, except that the number of displaced points goes from five to eight in the present example. At the end, the xsymcor and xjoda outputs are:

  Vibrational frequencies  (cm-1) :
1 1659.61769    73.02580
2 3834.88868     6.37419
Vibrational frequencies  (cm-1) :
1    0.75341     0.00000
Vibrational frequencies  (cm-1) :
1    0.65364   251.04696
Vibrational frequencies  (cm-1) :
1    1.60022i   89.07105
2 3958.09722    42.64684
@CHECKOUT-I, Total execution time :       0.0000 seconds.


and

                    Normal Coordinate Analysis
----------------------------------------------------------------
Irreducible         Harmonic       Infrared        Type
Representation       Frequency      Intensity
----------------------------------------------------------------
(cm-1)         (km/mol)
----------------------------------------------------------------
----                 1.6002i       89.0711       ROTATION
----                 0.0000i        0.0000      TRANSLATION
----                 0.0000         0.0000      TRANSLATION
----                 0.0937         0.8736      TRANSLATION
----                 0.6881         0.0000       ROTATION
----                 0.7159       250.1733       ROTATION
A1              1659.6200        73.0258       VIBRATION
A1              3834.8939         6.3742       VIBRATION
B2              3958.1026        42.6468       VIBRATION
----------------------------------------------------------------


respectively. The rotational frequencies are (effectively) zero, and the harmonic frequencies are (effectively) unchanged, because the geometry used in this example is the real minimum at the CCSD(T)/ANO0 (Taylor-Almlöf valence double-zeta) level of theory.

Finally, if gradients are unavailable at the desired level of theory, the procedures here can be used together with FD_CALCTYPE=ENERONLY, the only difference being that there will be (perhaps many) more displaced points, and an additional (unperturbed) point with its corresponding input file, zmat000.