It is apparent from the SCF procedure that the SCF virtual orbitals
are not well defined. The ``second half'' of Koopmans' theorem---that
the electron affinity for adding an extra electron to an N-electron
state
by placing it in virtual spin orbital
is just the orbital energy
---gives rather poor
results [1]. Similarly, one may find that the virtual SCF
orbitals do not even have the qualitative shape expected for a given
molecular state.
The CI natural orbital (CINO) procedure is one way to obtain more meaningful virtual orbitals. A new set of MO's can be constructed by diagonalizing the CI one-particle density matrix (our program ONEPDM). This yields a set of orbitals which are ordered according to their populations. This is a rather useful property; for instance, the LUMO will be well-described by the lowest virtual CINO, whereas in SCF this may not always be the case. Also, the most important configurations in the CI wavefunction will involve excitations to the lowest CINO's; conversely, excitations into the highest-lying CINO's will be relatively unimportant in the CI wavefunction, and this suggests an easy way to reduce the size of a CI calculation [2,3,4]. This cannot be done with SCF canonical orbitals. Davidson makes the interesting point that ``the very high energy [SCF virtual] orbitals, which are purely an artifact of orthogonalizing a double-zeta basis set, often make the largest energy contribution'' to a Møller-Plesset (MPn) wavefunction [5]. Another advantage of CINO's is that the low-lying virtuals do a much better job of describing non-dynamical correlation; this is very useful for multi-reference CI (MRCI) calculations [6].
One apparent disadvantage of CINO's is that since they are ordered according to population, they no longer have ``energies.'' Although one could calculate a Hartree-Fock energy for these orbitals, in my opinion this would not be a meaningful quantity. Populations, not energies, are the correct handle for dealing with CINO's. Thus CINO's, while giving a more accurate picture of the virtuals, do not by themselves give us improved results for Koopmans' theorem.
It is relatively easy to obtain CINO's from PSI 2.0. Obviously, the first step is to run a CI calculation. Usually CISD is sufficient to give very reasonable virtual orbitals, but in principle we can obtain CINO's from any CI procedure. The program ONEPDM, which usually analyzes the CI wavefunction and prints out the most important configurations, can be told to diagonalize the one-particle density matrix and write the resulting CINO's to file30, as shown below:
onepdm: ( mk_opdm = true wrtnos = true print = ((on noso opdmmo)) )
After the CINO's have been obtained, it is generally helpful to examine their populations (e.g., to determine which are the most important correlating orbitals). There are two ways to do this, and both should give similar results. The populations of the natural orbitals in the CISD which is used to obtain them are simply the eigenvalues of the OPDM. These are automatically printed if the above input is used for obtaining the CINO's.
An alternative is to use these CINO's in a subsequent CISD procedure; one can then print the populations of the MO's (actually NO's) using the following input options:
onepdm: ( mk_opdm = true print = ((on opdmmo)) )These two approaches should give nearly identical populations, but the former method is preferred and more often used. Note that for the latter method, it is essential that the subsequent calculation use the CINO's, and not the SCF MO's! If the SCF program is run again, it will write the SCF orbitals in file30 and destroy the CINO's that have just been placed there. How do you tell SCF not to run? By putting a simple `exec' statement in input.dat
psi: ( exec = ($ints $drt $trans $cisort $gugaci $onepdm "psiclean") )
Here, we have listed all the programs which need to run, except for cscf, which we skip. I think you could probably accomplish the same thing by putting the following in your input deck:
psi: ( scf = " " )The CI energy using the CINO's may not be exactly the same as that obtained using SCF orbitals; it may increase or decrease slightly. One might wonder what would happen if we were to do a CI with the CINO's, diagonalize the one-particle density matrix, and write to file30 a new set of CINO's (i.e. to iterate the CINO procedure). This procedure is not recommended, and surprisingly, it may diverge after several iterations [7].
These considerations of making sure SCF doesn't overwrite the CINO's also apply to MRCI calculations based on CINO's; be careful! If you were doing a CINO-MRCI, you would need to make sure that file30 contained the CINO's and use an exec statement like that above, which skips the SCF step.