Notes for major update: September 2004 (RAK)

New capabilities:

Symmetry-adapted cartesian coordinates (with rotations and translations projected out)
are now used by default when determining frequencies by finite differences. The method
should be perfectly general.  Abelian symmetry is exploited in the gradient
calculations and to use the minimum number of displacements possible.  The DOCC
may be specified in the input.  Both order O(h^2) and O(h^4) with frequencies or
energies are working.  See test cases ( scf-freq-first-3 scf-freq-first-5
scf-freq-none-3 scf-freq-none-5 ).

Constraints may now be applied to both analytic and numerical optimizations
(which use delocalized coordinates for efficiency).  See test cases
(scf-opt11, scf-opt12 and scf-opt2-numer).

Here is a table including the newly defined jobtypes "FC" and "SYMM_FC", as well
as the default coordinates that are used.

jobtype=freq    dertype=first  symmetry-adapted cartesians
jobtype=freq    dertype=none   symmetry-adapted cartesians
jobtype=fc      dertype=first  delocalized internals (or user-defined SALCs)
jobtype=symm_fc dertype=first  delocalized internals (or user-defined SALCs)
jobtype=opt     dertype=first  redundant internals
jobtype=opt     dertype=none   delocalized internals (or user-defined SALCS)

More details:

The default displacement size (disp_size) has been increased to 0.005

optking --energy_save and --grad_save now delete (for DETCI and CC
wavefunctions) binary CC files and CI files to permit multiple
finite difference calculations with different point groups.  Similar things
may need to be done for other wavefunction types such as like DETCAS (or not).

when optking makes displacements, it sets chkpt_wt_override_occ to 1
The following functions now check if chkpt_rd_override_occ to see
whether or not to read the DOCC vector.
  transqt : transqt.c
  cscf : guess.c
DETCI cannot do finite displacements at present with the DOCC
specified in the input.  The ras_set() function must be modified
to not read the DOCC vector when chkpt_rd_override_occ()==1.  I tried
and failed to do this, but it's probably easy for a DETCI-ite.

Test case cc3 has been fixed.  The frequencies in test case cc3 have
changed because I discovered (upon observing changing frequencies
when different coordinates were used) that the geometry was not CCSD
optimized. (oops)

Constraints may now be applied to both analytic and numerical
optimizations.  In the case of analytic optimizations, the redundant
internal is projected out of the step take.  In the case of numerical
optimizations, delocalized internals are used to avoid redundancy, but
simple constraints can still be applied to the geometry step taken.

I have tested the finite difference frequencies on a number of
molecules including:
c2h4    c2h6  co2     h2co
h2o     hooh  ketene  nh3

Input does not force planar molecules into the yz plane, so b1 and b2
irrep labels on the frequencies may be reversed.  If you want the b1
and b2 labels to come out properly for e.g., h2co and ketene, you must
input the geometry in the yz and plane and set "input: (no_reorient = true)".

You can set the DOCC vector in input for any frequency by finite difference
test cases.  The occupations of the displaced geometries are determined by
a correlation table (in input).  The occupation guessing currently in PSI3
is so poor, that it is usually required for the user to set the DOCC vector.
(In order to get this to work and also in order to get the point group of the
displaced geometries detected, none of the displaced geometries get reoriented
by input.  Optking provides the irrep of the displacement in the checkpoint
file, input --chkptgeom uses this irrep label, the docc vector (for the
reference point group) from chkpt and its correlation table to set the new
occupations in the checkpoint file. cscf detects chkpt_rd_override_occ() and ignores the
occupation in the input.dat file.

For testing, the user can set "subgroup=c1" in the input and run a whole finite-difference
calculation without symmetry.

Typical O(h^2) accuracy is about .1 cm-1 in the frequencies.  If you set
optking: (points = 5), then you get .001 cm-1 accuracy with more displacements.

You can compute frequencies of only one irrep. For example, if you want frequencies
for only the b2 irrep in C2v, just add "optking: (freq_irrep = 3)" to your input file.

Someone (David) needs to update psi3 to use the psi_start() function.  For medium-sized
molecules or O(h^4) displacements, the return value from optking cannot be big enough
to represent the number of displacements.  If psi3 used psi_start() it would be very
easy to add a psio_rd to obtain the number of displacements produced.

The optking test cases have been streamlined and updated to the following:
Optimization:
scf-opt   H2O
scf-opt2  allene
scf-opt3  BH3
scf-opt4  ethane
scf-opt5  methane
scf-opt6  CO2 (160 degrees)
scf-opt7  H2CO
scf-opt8  does not exist at present
scf-opt9  HOOH (C2)
scf-opt10  ketene (delocalized coordinates, linear angles omitted)
scf-opt11  H2O (fixed H-O-H angle)
scf-opt12  ketene (fixed C-C bond length)

Numerical optimizations (using delocalized coordinates)
scf-opt-numer (H2O)
scf-opt2-numer (H2O with 160 degrees fixed)
mp2-opt-numer (H2O)
cisd-opt-numer (H2O)
cc2 (H2O)

Frequencies by finite differences
symmetry adapted cartesian coordinates
scf-freq-first-3 (H2O)
scf-freq-first-5 (H2CO)
scf-freq-none-3 (ketene)
scf-freq-none-5 (C2H4)

Symm_FC - force constants for symmetric internal coordinates
scf-symm-fc-numer (H2O, gives A1 forces constants)
scf-fc-numer (H2O, gives force constants)

These test cases have now been deleted because obselete or redundant:
ccsd-freq-symm-numer
ccsd-opt
ccsd-opt-numer
scf-freq-numer
scf-freq-symm-numer
scf-opt8
