by Mike Schmidt
The main change in this is the ability to compute gradients for RHF+CI wavefunctions, and therefore the option to optimize geometries, get numerical hessians, etc. This code was strung together by Simon.
The gradient may be computed for an excited state, provided that the orbitals are generated by RHF. As an example of the input, please see the revised example 5,
and for some other tests involving CI gradients of the ground state, you can see
Here is a bit from the manual, describing the limitations:
Input changes for CI gradient are pretty small. There is a new group $TRFDM2 to control the back transformation of the 2e- density matrix, and the obscure group $LAGRAN is now relevant as the CI Lagrangian must be formed when doing the CI gradient. There is seldom any need to give either of these groups.
A more important input change is NCONV in $SCF. I found that it was necessary to increase the convergence of the RHF calculation in order to get accurate CI gradients, so the default for NCONV is changed from 5 to 6 when a CI gradient is performed. Since MP2 gradients are also sensitive to the SCF convergence, I have made NCONV=6 for MP2 gradients as well. The default remains 5 for all other cases. It is conceivable that some direct SCF computations may have trouble converging to NCONV=6, and I'd like to see any such input decks.
Convergence of CI eigenvector. The default value for CVGTOL although good enough, CI diagonalization restart can cause problems. If a CI eigenvector file from a previous CI (such as the previous geometry) exists, this is used as the initial guess by the current CI. In some cases, the program did not properly iterate to convergence, so the way to force it to always do 3 Davidson iterations, at least. This leads to accurate CI eigenvectors, and thus accurate CI gradients. However, note that the CI diagonalization may affect MCSCF runs, which do a CI every iteration. Changes by Mike Schmidt reduces the total number of iterations to converge 7-azaindole from 10 to 9, and that in other runs it produced slightly lower energies in the same number of iterations. There could also be some influence on numerical MCSCF hessians, which restart from the vib0 CI eigenvector on each displacement. The new results are sure to be more accurate than old ones.
cphf drc efinp gamess gradex grd1 grd2a gugdga gugdgb gugdm gugdm2 hess hss1a hss1b hss2a hss2b int2a lagran parley rhfuhf rxncrd scflib statpt symorb trfdm2 zmatrx TRFDM2 is actually a file we stopped using 3 years ago, and had to pull off the 4.5 year old backup tape made when we moved from Fargo to Ames. It is really a blast from the past!
Persons not in Ames who would like to take a copy of the source code will find a new tar file in /u2/guest/gamess.tar.Z.
Simon: CIGRD.SRC is gone. The three routines derived from the RHF response equations were pretty easy to merge back into the originals, using NDER=1 or NDER=2 to distinguish between CI gradients or RHF hessians. The other three routines in this file are renamed XDELTA (to keep it near the Z's), ZDENCI, and ZGRDCI, and these are merged into CPHF.SRC. The variable NDER is returned by a call to the routine DERCHK, to avoid having to test RUNTYP vs. DRC, IRC, ... to see if gradients are being used. I'm sure I tickled some of your other code along the way too. I'm going to keep your original files for a few days, in case you need to 'diff' your originals vs. the way they ended up. I have not tried to use the response density of the CI for properties, or provide SCF properties, as we have done for MP2. Ran out of steam.