How to do MCSCF and CI calculations

The majority of the input to a CI calculation is in the $CIDRT group, with $INTGRL, $CIINP, $TRANS, $CISORT, $GUGEM, $GUGDIA, $GUGDM, $GUGDM2, $LAGRAN groups relevant, but hardly ever given. The defaults for all these latter groups are usually correct. Perhaps the most interesting variables outside the $CIDRT group are NSTATE in $GUGDIA to include excited states in the CI computation, and IROOT in $GUGDM to select the state for properties.

The MCSCF part of GAMESS is based on the CI package, so that most of each MCSCF iteration is a CI using the current set of orbitals. The final step in each MCSCF iteration is the generation of improved MOs by one of three different methods. Thus, all of the input just mentioned for a CI run (except $CIINP, $GUGDM, and $LAGRAN) is still relevant, with the $DRT and $MCSCF groups being of primary concern to users. Once again, the defaults in any group other than $DRT and $MCSCF are probably appropriate for your run. The most interesting variable outside $DRT and $MCSCF is probably WSTATE in $GUGDM2.

Specification of the wavefunction

An MCSCF run specifies the configurations in a $DRT input group, while a CI is defined by a $CIDRT. These two different spellings allow a CI computation to follow an MCSCF in the same run, e.g. SCFTYP=MCSCF CITYP=GUGA. The two groups are almost the same, and therefore the remainder of this section refers only to "$DRT".

The configuration state functions (CSFs) to be used in a CI or MCSCF calculation are specified in the $DRT by giving a single reference CSF, and the maximum degree of electron excitation from that CSF.

The MOs are filled in the order FZC or MCC first, followed by DOC, AOS, BOS, ALP, VAL, EXT, FZV (Aufbau principle). AOS, BOS, and ALP are singly occupied MOs. The open shell singlet couplings NAOS and NBOS must give the same value, and their MOs alternate. An example is the input NFZC=1 NDOC=2 NAOS=2 NBOS=2 NALP=1 NVAL=3 which gives the reference CSF

               FZC,DOC,DOC,AOS,BOS,AOS,BOS,ALP,VAL,VAL,VAL
 
This is a doublet state with five unpaired electrons. VAL orbitals are unoccupied only in the reference CSF, they will become occupied as the other CSFs are generated.

To perform a singles and doubles CI calculation with any such reference, select the electron excitation level IEXCIT=2. For a normal CI, you would give -all- of the virtual MOs as VAL type. (yes, VAL is a bit of a misname).

Another example, for a MCSCF run, might be NMCC=3 NDOC=3 NVAL=2, which gives the reference

                MCC,MCC,MCC,DOC,DOC,DOC,VAL,VAL
 
MCSCF calculations are usually of the Full Optimized Reaction Space (FORS) type. Some workers refer to FORS as CASSCF, complete active space SCF. Choosing FORS=.TRUE. gives an excitation level of 4, as the 6 valence electrons have only 4 holes available for excitation. MCSCF runs typically have only a small number of VAL orbitals.

The next example is a first or second order CI wavefunction, NFZC=3 NDOC=3 NVAL=2 NEXT=-1 leads to

                FZC,FZC,FZC,DOC,DOC,DOC,VAL,VAL,EXT,EXT,...
 
FOCI or SOCI is chosen by selecting the appropriate flag, the correct excitation level is automatically generated. Note that the negative number for NEXT causes all remaining MOs to be included in the external orbital space. One way of viewing FOCI and SOCI wavefunctions is as all singles, or all singles and doubles from the entire MCSCF wavefunction as a reference. An equivalent way of saying this is that all CSFs with N electrons (in this case N=6) distributed in the valence orbitals in all ways (that is the FORS MCSCF wavefunction) to make the base wavefunction. To this, FOCI adds all CSFs with N-1 electrons in active and 1 electron in external orbitals. SOCI adds all possible CSFs with N-2 electrons in active orbitals and 2 in external orbitals. SOCI is often prohibitively large, but is also a very accurate wavefunction.

use of symmetry

The CI part of the program can work with D2h, and any of its Abelian subgroups. However, $DRT allows the input of some (but not all) higher point groups. For these non-Abelian groups, the program automatically assigns the orbitals to an irrep in the highest possible Abelian subgroup. For the other non-Abelian groups, you must at present select GROUP=C1. Note that when you are computing a Hessian matrix, many of the displaced geometries are asymmetric, hence you must choose C1 in $DRT (however, be sure to use the highest symmetry possible in $DATA!).

The symmetry of the reference CSF given in your $DRT determines the symmetry of the CSFs which are generated. As an example, consider a molecule with Cs symmetry, and these two reference CSFs

                ...MCC...DOC DOC VAL VAL
                ...MCC...DOC AOS BOS VAL
Suppose that the 2nd and 3rd active MOs have symmetries a' and a". Both of these generate singlet wavefunctions, with 4 electrons in 4 active orbitals, but the former constructs 1-A' CSFs, while the latter generates 1-A" CSFs. However, if the 2nd and 3rd orbitals have the same symmetry type, an identical wavefunction will be generated.

selection of orbitals

The first step is to partition the orbital space into core, active, and external sets, in a manner which is sensible for your chemical problem. This is a bit of an art, and the user is referred to the references quoted at the end of this section. Having decided what MCSCF to perform, you now must consider the more pedantic problem of what orbitals to begin the MCSCF calculation with.

You should always start an MCSCF run with orbitals from some other run, by means of GUESS=MOREAD. Do not expect to be able to use HCORE or HUCKEL! Example 6 is a poor example, converging only because methylene has so much symmetry, and the basis is so small. If you are beginning your MCSCF problem, use orbitals from some appropriate converged SCF run. Thus, a realistic example of an MCSCF calculation is examples 8 and 9. Once you get an MCSCF to converge, you can and should use these MCSCF MOs (which will be Schmidt orthogonalized) at other nearby geometries.

Starting from SCF orbitals can take a little bit of care. Most of the time (but not always) the orbitals you want to correlate will be the highest occupied orbitals in the SCF. Fairly often, however, the correlating orbitals you wish to use will not be the lowest unoccupied virtuals of the SCF. You will soon become familiar with NORDER=1 in $GUESS, as well as the nearly mandatory GUESS=MOREAD. You should also explore SYMLOC in $LOCAL and MVOQ in $SCF, as the occupied and especially the virtual canonical SCF MOs are often spread out over regions of the molecule other than "where the action is".

Convergence of MCSCF is by no means guaranteed. Poor convergence can invariably be traced back to either a poor initial selection of orbitals, or a poorly chosen number of active orbitals. My advice is, before you even start:
"Look at the orbitals.
Then look at the orbitals again".
Later, if you have any trouble:
"Look at the orbitals some more".
This probably means running PLTORB, as few people are able to see orbital shapes in the LCAO matrix in the log files.

Even if you don't have any trouble, look at the orbitals to see if they converged to what you expected, and have reasonable occupation numbers. MCSCF is by no means the sort of "black box" that RHF is these days, so LOOK VERY CAREFULLY AT YOUR RESULTS.

MCSCF implementation

The MCSCF program is of the type termed "unfolded two step" by Roos. This means that the orbitals and the CI coefficient optimizations are separated. The latter are obtained in a conventional CI diagonalization, while the former are obtained by a separate orbital improvement step.

Each MCSCF iteration consists of the following steps: transformation of the integrals to the current MO basis, sorting of these integrals, generation of the Hamiltonian matrix, optimization of the CI coefficients by a Davidson method diagonalization, generation of the second order density matrix, and finally orbital improvement by one of three different algorithms. On the first iteration at the first geometry, you will receive the normal amount of output from each of these stages, while each subsequent iterations will produce only a summarizing single line.

Each iteration contains MICIT orbital improvements. A microiteration consists of an integral transformation over the new MOs, followed immediately by a orbital improvement, reusing the current 2nd order density matrix. This avoids the CI diagonalization step, which may be of some use in MCSCF calculations with a large number of CSFs (e.g. more than 80,000 or 100,000). If the number of CSFs is less than this, using additional microiterations is a poor idea, except in the FOCAS method.

There are presently three orbital improvement options, controlled by FULLNR, FOCAS, and SOSCF flags in $MCSCF. All three MCSCF orbital optimizations run in parallel. These are discussed briefly in the following paragraphs.

FULLNR means a full Newton-Raphson step is taken. This is the most powerful convergence method, and therefore will normally take the fewest iterations to converge. Computing the exact orbital hessian requires two virtual orbital indices be included in the transformation, making this step quite time consuming, and of course memory for storage of the orbital hessian must be available. Because both the transformation and orbital improvement steps of FULLNR is time consuming, FULLNR is not the default. You may want to try FULLNR where convergence is difficult, assuming you have already tried preparing good starting orbitals by the hints below. It is likely that convergence for excited states will be obtained only by using FULLNR.

The FULLNR MCSCF code in GAMESS is adapted from the HONDO7 program, and was written by Michel Dupuis at IBM. It uses the the augmented hessian matrix approach to solve the Newton-Raphson equations. There are three suboptions for computation of the orbital hessian. DM2 is the fastest but takes more memory than TEI. The FORMULA option is incompatible with the most recent integral transformation code, and is no longer a working option.

FOCAS is a first order, complete active space MCSCF optimization procedure. Since it requires only one virtual orbital index in the transformation to compute the orbital gradient (aka the Lagrangian), the total MCSCF job often runs faster than FULLNR, even though it may take twice as many iterations to converge. The use of microiterations during a FOCAS is crucial to its ability to converge.

The FOCAS code was also written by Michel Dupuis while at IBM. It is based on a novel approach due to Meier and Staemmler, using very fast but numerous microiterations to improve the convergence of what is intrinsically a first order method.

SOSCF is a method built from the FOCAS code, which seeks to combine the speed of FOCAS with the second order convergence properties of FULLNR. SOSCF is an approximate Newton-Raphson, based on a diagonal guess at the orbital hessian, and in fact has much in common with the SOSCF option in $SCF. Its time requirements per iteration are like FOCAS, with a convergence rate better than FOCAS but not as good as FULLNR. Because it usually requires the least CPU time, disk space, and memory needs, SOSCF is the default.

miscellaneous hints

It is very helpful to execute a EXETYP=CHECK run before doing any MCSCF or CI run. The CHECK run will tell you the total number of CSFs, the electronic state, and the charge and multiplicity your $DRT generated. The CHECK run also lets the program feel out the memory that will be required to actually do the run. Thus the CHECK run can potentially prevent costly mistakes, or tell you when a calculation is prohibitively large.

One way to improve upon the SCF orbitals as starting MOs is to generate modified virtual orbitals (MVOs). MVOs are obtained by diagonalizing the Fock operator of a very positive ion, within the virtual orbital space only. As implemented in GAMESS, MVOs can be obtained at the end of any RHF, ROHF, or GVB run by setting MVOQ in $SCF nonzero, at the cost of a single SCF cycle. Typically, we use MVOQ=+6. Generating MVOs does not change any of the occupied orbitals, but generates more valence-like LUMOs.

Another way to improve SCF starting orbitals is by a partial localization of the occupied orbitals. Typically MCSCF active orbitals are concentrated in the part of the molecule where bonds are breaking, etc. Canonical SCF MOs are normally more spread out. By choosing LOCAL=BOYS along with SYMLOC=.TRUE. in $LOCAL, you can get orbitals which are localized, but still retain orbital symmetry to help speed the MCSCF along.

Pasting the virtuals from a MVOQ run onto the occupied orbitals of a SYMLOC run (the two can be done in the same SCF computation) gives the best possible set of starting orbitals. If you also take the time to design your active space carefully, select the appropriate starting orbitals from this combined $VEC (NORDER in $GUESS is often still necessary), and inspect your converged results, you will be able to carry out MCSCF computations correctly.

A very common MCSCF wavefunction has 2 electrons in 2 active MOs. This is the simplest possible wavefunction describing a singlet diradical. While this function can be obtained in a MCSCF run (using NDOC=1 NVAL=1), it can be obtained much faster by use of the GVB code, with one GVB pair. This GVB-PP(1) wavefunction is also known in the literature as two configuration SCF (TCSCF). The two configuration form of this GVB is equivalent to the three configurations obtained in this MCSCF, as optimization in natural form (20 and 02) causes the coefficient of the 11 CSF to vanish.

If you are using many CSFs (say 75,000 or more), the main bottleneck in the GAMESS CI/MCSCF code is formation and diagonalization of the Hamiltonian, rather than the integral transformation and orbital improvement steps. Large numbers of CSFs also require a great deal of disk storage for the Hamiltonian matrix. The largest MCSCF calculation we have attempted to date had 370,000 CSFs, and required 10 GBytes of disk storage for the Hamiltonian. On most machines you should try to stay under 100,000 CSFs, which usually means about 10 active orbitals.

When you are using many CSFs, so that the cost of the integral transformation and orbital improvement are small, you would be wise to switch to FULLNR, which will minimize the total number of iterations.

If you choose an excitation level IEXCIT smaller than that needed to generate the FORS space, you must use the FULLNR method. Both FOCAS and SOSCF assume complete active spaces. Be sure to set FORS=.FALSE. in $MCSCF or else VERY POOR or even NO CONVERGENCE will result.

references

There are several review articles about second order MCSCF methodologies. Of these, Roos' is a nice overview of the subject, while the other 3 are more technical.

  1. a. "The Multiconfiguration SCF Method" B.O.Roos, in "Methods in Computational Molecular Physics", edited by G.H.F.Diercksen and S.Wilson D.Reidel Publishing, Dordrecht, Netherlands, 1983, pp 161-187.
  1. b. "The Multiconfiguration SCF Method" B.O.Roos, in "Lecture Notes in Quantum Chemistry", edited by B.O.Roos, Lecture Notes in Chemistry v58, Springer-Verlag, Berlin, 1994, pp 177-254.
  2. "Optimization and Characterization of a MCSCF State" Olsen, Yeager, Jorgensen in "Advances in Chemical Physics", vol.54, edited by I.Prigogine and S.A.Rice, Wiley Interscience, New York, 1983, pp 1-176.
  3. "Matrix Formulated Direct MCSCF and Multiconfiguration Reference CI Methods" H.-J.Werner, in "Advances in Chemical Physics", vol.69, edited by K.P.Lawley, Wiley Interscience, New York, 1987, pp 1-62.
  4. "The MCSCF Method" R.Shepard, ibid., pp 63-200.

    Two papers germane to the FULLNR implementation are

  5. "General second order MCSCF theory: A Density Matrix Directed Algorithm" B.H.Lengsfield, III, J.Chem.Phys. 73,382-390(1980).
  6. "The use of the Augmented Matrix in MCSCF Theory" D.R.Yarkony, Chem.Phys.Lett. 77,634-635(1981).

    Two papers germane to the FOCAS implementation are

  7. "An Efficient first-order CASSCF method based on the renormalized Fock-operator technique." U.Meier, V.Staemmler Theor.Chim.Acta 76, 95-111(1989)
  8. "Modern tools for including electron correlation in electronic structure studies" M.Dupuis, S.Chen, A.Marquez, in "Relativistic and Electron Correlation Effects in Molecules and Solids", edited by G.L.Malli, Plenum, NY 1994

    The next set of references discuss the choice of orbitals for the active space. This is a matter of some importance, and needs to be understood well by the user!

  9. "The CASSCF Method and its Application in Electronic Structure Calculations" B.O.Roos, in "Advances in Chemical Physics", vol.69, edited by K.P.Lawley, Wiley Interscience, New York, 1987, pp 339-445.
  10. "Are Atoms Intrinsic to Molecular Electronic Wavefunctions?" K.Ruedenberg, M.W.Schmidt, M.M.Gilbert, S.T.Elbert Chem.Phys. 71, 41-49, 51-64, 65-78 (1982).

    The final references are simply some examples of FORS MCSCF applications, the latter done with GAMESS.

  11. D.F.Feller, M.W.Schmidt, K.Ruedenberg, J.Am.Chem.Soc. 104, 960-967(1982).
  12. M.W.Schmidt, P.N.Truong, M.S.Gordon, J.Am.Chem.Soc. 109, 5217-5227(1987).

Back to list of topics...