Search:

Specifying Occupancies For Parallel Finite-difference Frequency Calculations

One always needs to be aware that use of the OCCUPATION keyword implies some symmetry (or, most precisely, the number of symmetry species in the point group used in the calculation). More often than not, the SCF procedure will converge to the lowest state, but there are sometimes problems; there are sometimes cases where one wants to calculate some state other than the ground state, etc. Now, when one does harmonic frequency calculations with VIB=FINDIF, this generally leads to the situation in which the displaced geometries (used in the energy or gradient calculations) sometimes have lower symmetry than the reference structure. That is, whatever OCCUPATION specification works for the equilibrium structure will not work for all of the displaced points, except in the special case that the molecule has no symmetry at all. Have a means to run such a calculation is useful when 1) the default SCF doesn't hit the correct state (at whatever geometry); and 2) special cases like Renner-Teller or Jahn-Teller molecules.

It is possible to specify different occupations for different points when one uses VIB=FINDIF in conjunction with FREQ_ALGORITHM=PARALLEL, this sort of calculation now being amply documented on this website. To do this, one must use a ZMAT file with an additional %fdocc record, similar to that below:

water
H
O 1 R
H 2 R 1 A

R = 0.964342931099346
A = 101.930518017393339

*CFOUR(CALC=MP2,BASIS=PVDZ,VIB=FINDIF,FREQ_ALGORITHM=PARALLEL)

%fdocc
3-1-1-0
3-1-1-0
3-1-1-0
3-1-1-0
4-1

When the zmatxxx files are generated at the initialization of the process, the lines following the %fdocc record are read and then inserted after the string OCCUPATION= and then written to an individual line in the resulting files. For example, with the file above, zmat005 becomes:

 Perturbed geometry   5 for parallel findif calculationH      0.000000000000000    -1.415268243139379     1.019038824647199O      0.000000000000000    -0.000033233167397    -0.128444365590006H      0.000000000000000     1.415795677621501     1.019466462450225 *CFOUR(CALC=MP2,BASIS=PVDZ,VIB=0     ,FREQ_ALGORITHM=PARALLELOCCUPATION=4-1DERIV_LEV=1,COORD=CARTESIAN,UNITS=BOHR) %fdocc3-1-1-03-1-1-03-1-1-03-1-1-04-1 Of course, it is necessary to know beforehand what the occupations will be, but this is generally an easy thing to work out.   And if


you make a mistake, you can simply edit your zmatxxx files and insert the correct OCCUPATION information the old fashioned way...