[Disclaimer: MRCI's are not trivial. Even though we have attempted to document some of the important issues in running an MRCI calculation, this document certainly doesn't explain everyhing. We suggest that you collaborate with someone who actually understands the intricacies of MRCI before proceeding with your project.]
A Short Justification
A full CI exactly solves the Schrödinger equation within some basis set, but is usually too large a calculation to do. However, CISD can almost always be done, and usually isn't very challenging (to the computer or the user). A more thorough treatment requires a larger CI expansion, including more CSFs. MRCI is a way to systematically include those CSFs that contribute most signifigantly to the correlation energy.
A Short Explanation
The basic idea is this: the CI matrix elements that are largest can never be predicted with absolute certainty. In general, double excitations from some CSF interact most strongly with it, and single excitations interact strongly with them [1,2]. Both are important in the calculation of the correlation energy. When there is more than one dominant electronic configuration, as evidenced by a smaller CI coefficient on the reference and larger CI coefficients on the next however many CSFs, the system has multi--reference character, and those other important CSFs need to be treated properly [2]. In short, we need to get the non--dynamical correlation right. To do this, we first identify which CSFs (a small number of them) are the most important for the description of the electronic state of interest. We will call these CSFs the references. Second, we take all single and double excitations from all of the references, and there it is. We have done a MR--CISD calculation.
Currently, PSI 2.0.x allows for two types of MRCI wavefunctions: those in which references are chosen a priori and those in which you pick them out yourself. Both are made more effective by the use of CI Natural Orbitals [3,4,5]. Getting reference CSFs by excitation class into some valence space is black--boxish and easier. Picking them by the size of their CI coefficient in some previous CI expansion is the most efficient, but it is also more tedious. Neither of these methods presently have gradient capability, because (among other things) onepdm does not work for these cases.
To Use CISD[T], CISD[TQ], etc.
These are the a priori methods. First, decide what molecular orbitals
you need in the valence space by choosing MOs based on the number of symmetry
orbitals that can be formed from the valence atomic orbitals
(or by looking at the populations of the SCF or natural orbitals and using
the most heavily occupied ones). Next, set
excitation level and valence excitation level according to what calculation
you are going to do. ex_lvl is what you want to do with each
reference. val_ex_lvl is how you get the references. Perhaps an
example would be useful? To do a CISD[TQ] calculation on C
H
O,
the following input would be appropriate:
frozen_docc = (1 0 0 0) val_orb = (4 0 2 2) val_ex_lvl = 2 ex_lvl = 2drt and gugaci need all this, so I put it all in the default section. This puts the lowest 4a
, 2b
and 2b
orbitals that are not frozen
in the valence space, and finds all CSFs which are single and double
excitationsl within this space. These CSFs become the references.
There are no space or spin symmetry restrictions on the references
when they are generated using val_orb; this is an important
point for the second-order CI (see below).
The multireference CI
and all single and double excitations from
each of the references to construct the final CI expansion. For CISD[T],
val_ex_lvl = 1 ex_lvl = 2and for CIS[DTQ] (for the sake of illustration),
val_ex_lvl = 3 ex_lvl = 1
If you are using CI natural orbitals (CINO's), then you want to make sure that your MRCI calculation does not accidentally overwrite the CINO's with SCF canonical orbitals. If you obtained the CINO's correctly, then they are contained in your ``checkpoint'' file, file30. This is also where the SCF program writes the SCF canonical orbitals. This means that, during the MRCI job, you do NOT want the SCF program cscf to run. You can specify this in several ways; the way that we usually do this is by using the following in the input file:
psi: ( exec = ($ints $drt "makepk" $trans $cisort $gugaci $onepdm) )
Second-Order CI
The second-order CI (SOCI) is also an a priori, class-selected MRCISD. We do a full CI in the internal space, without any spin or space symmetry restrictions. Each of the CSFs generated by this full CI is used as a reference for the MRCI. Thus, for SOCI, set
val_ex_lvl = number of non-frozen electrons ex_lvl = 2
The SOCI provides potential energy surfaces which are very nearly parallel to the full CI surfaces, but SOCI is also very expensive in terms of the number of CSFs required. Very few people have actually reported SOCI results. Bauschlicher often reports CASSCF MRCISD's in which he uses a the CSFs generated by a CASSCF to define the references for the MRCISD. This is very similar to a SOCI, except that all the CSFs in the CASSCF must have the correct space and spin symmetry. Thus a SOCI is even larger than a CASSCF MRCISD. Actually, Bauschlicher more often reports CASSCF MRCISD's in which he throws away some of the CASSCF references which have low CI coefficients. Roger Grev has shown that if CISD Natural Orbitals are used, then SOCI energies obtained using them are almost the same as SOCI energies obtained using CAS orbitals [4]. This indicates that the CISD Natural Orbital procedure provides valence orbitals which are good correlating orbitals for describing nondynamical correlation effects.
To Generate MRCI Wave Functions Using Specific Reference CSFs
This requires a rather complicated bit of input, made much easier thanks to David Sherrill's program multiref. Here's a sample drt section:
% The following drt section was generated by multiref
drt: (
label = "DZP h2o Multireference CI calculation"
opentype = none
int_spc = off
num_refs = 4
multi_orbs = (3 4 19 20 )
references = (
(doc uoc doc uoc )
(bet alp alp bet )
(doc uoc uoc doc )
(uoc doc doc uoc )
)
)
First, an explanation of the long way around.
symmetry type followed by all orbitals of 2
symmetry type, etc.
;
)
Likewise, the third is a double excitation from orbital 19 to 20.
Now, how did we arrive at this? Well, after doing a CISD calculation on this system and staring at the onepdm output for a while, we chose the four most important CSFs as determined by the magnitude of their CI coefficients. If you are using CI natural orbitals, then you want to make sure that you are looking at the onepdm output for a CISD using the natural orbitals. That is, you obtain the natural orbitals, and then, using these orbitals (i.e. NOT running SCF again, explained above) you do another CISD.
Now notice that the drt input section says it was generated by multiref. This program makes using term-selected MRCI's much easier; in fact, it becomes a trivial task. The multiref program figures out all this complicated input for you. All you need is a onepdm output, in output.dat of course, containing the CSFs you want included. The multiref program reads the references in this format and converts them to the complicated format shown in the drt section above. Once again, if you are using CI natural orbitals, make sure that the only onepdm section in the output.dat file is that for the CISD using natural orbitals (although odds are that the use of CINOs vs. SCF orbitals doesn't actually change which are the most important few CSFs). The multiref program reads the first onepdm section it can find in output.dat, I think. To be safe, make sure output.dat contains only one such section. Don't be afraid to hack up output.dat --- just be sure that the CSFs you want included are at the top of the list, e.g.
ROOT 1
THE 5 MOST IMPORTANT CONFIGURATIONS
1 .973436 ( 926) 2A1X 3A1X 1B1X 1B2X
2 -.070976 ( 625) 2A1X 3A1B 1B1X 1B2A 2B2B 4A1A
3 -.063822 ( 919) 2A1X 3A1X 1B1X 2B2X
4 -.057205 ( 457) 2A1X 1B1X 1B2X 4A1X
5 -.050205 ( 748) 2A1X 3A1X 1B2X 2B1X
The multiref program requires some information from file30, and it also needs the user to specify how many references to use. To do this, just include a multiref section in input.dat, and set a value for the keyword num_refs. Note that the old version of the multiref program required a small input deck called mref.inp; this information is no longer required. For more information, see the HowTo page for multiref.
When you run sherrill/bin/multiref, you will find a new file called drt.inp in that directory. Append this to input.dat, and you are now ready to run the MRCI calculation. One last time, if you are using CINOs, remember to add an exec statement that will stop SCF from running and writing over your CINO's in file30. The same exec statement as before should work, under the same circumstances.
Multireference Davidson Correction:
If you use a few (1-20) references, you might want to use the
multireference analog of the Davidson correction. In my personal
opinion, using the Davidson correction for very large reference spaces
is a silly idea. Please note that the so-called ``Davidson correction''
printed out by GUGA-CI is not correct for MRCI's! You have to
do the calculation yourself, using the multireference Davidson
correction formula. See the
CI Notes
for more details.
Open-shell systems:
These are very tricky, and I suggest that you contact Roger Grev
or David Sherrill if you are uncertain about what's going on.
A good familiarity with Graphical Unitary Group theory is helpful.
With the help of Tim Van Huis, I (CDS) have recently modified the program
multiref to hopefully work with open-shell systems. However,
I have not been able to test it extensively, so be careful!
One difficulty
is that open-shell orbitals (and internal orbitals in general) are
moved to the end of the Shavitt graph, in reverse-Cotton order,
and that the first internal space occupancy must be alp or doc,
not bet.
Another difficulty is encountered in trying to obtain the Davidson-corrected energy for multireference open-shell systems. When you go to compute the reference energy (by setting ex_lvl = 0), you will discover much to your dismay that other spin couplings appear in the CI space. This is apparently due to the fact that int_spc is hardwired to off for multireference cases (even if you specify something different). Thus, if you really want the correct Davidson correction, you need to include all the spin couplings that appear in the reference energy calculation as references in the MRCI procedure. This is done automatically if int_spc is off, so you may actually be using more references than you realize; you need to include the coefficients of all these references for the correct MR Davidson correction. See the files in ~sherrill/Chem/mrci_demo for a demonstration of MRCI calculations on the doublet B1 state of NH2.