detci - Determinant Configuration Interaction Program
The program detci diagonalizes the nonrelativistic
electronic Hamiltonian operator in a basis of Slater determinants. The set
of determinants used (CI space) may be chosen in a variety of ways. The
program can handle any CI space which can be formulated as a Restricted
Active Space CI. This includes CISD, CISDT, CISDTQ, etc., up to Full CI, as
well as multireference CI's in which the references are chosen as all
determinants in which up to n electrons are excited in some MO active space.
This includes CISD[T], CISD[TQ], and second-order CI (SOCI).
Restricted Active Space CI:
- 1.
- Determinant Based Configuration Interaction Algorithms for Complete and
Restricted Configuration Interaction Spaces, J. Olsen, B. O. Roos, P.
Jorgensen, and H. J. Aa. Jensen, J. Chem. Phys. 89, 2185 (1988).
- 2.
- Passing the One-Billion Limit in Full Configuration-Interaction (FCI)
Calculations, J. Olsen, P. Jorgensen, and J. Simons, Chem. Phys. Lett.
169, 463 (1990).
Tertiary virtual subspaces (RAS IV):
- 1.
- Compact Variational Wavefunctions Incorporating Limited Triple and
Quadruple Excitations, C. D. Sherrill and H. F. Schaefer, J. Phys. Chem.
100, 6069-6075 (1996).
DETCI Program:
- 1.
- C. D. Sherrill, Computational Algorithms for Large-Scale Full and
Multi-Reference Configuration Interaction Wavefunctions, PhD thesis,
University of Georgia, Athens, GA, 1996.
input.dat - Input file
file71 - Transformed one-electron integrals
file72 - Transformed two-electron integrals
file50 - Diagonal of Hamiltonian
file51 - CI vectors
file52 - Sigma vectors
file53 - D file (correction vectors)
The following command-line arguments are available:
- -quiet
- This gives the same result as PRINT=0.
- -o fname
- Gives the filename for the output file. Defaults to output.dat.
- -e
- This option causes the total CI energy or energies to be written to a file
called detci_energies.dat.
- -c value
- Gives a looser convergence on the CI vector, useful in DETCAS
calculations. The value is a real number, not an integer as in
CONVERGENCE. The convergence used will be the looser of
value and CONVERGENCE.
Additional input for this program is read from the file The
following keywords are valid:
- CONVERGENCE
= integer
- Convergence desired on the CI vector. Convergence is achieved when the RMS
of the error in the CI vector is less than 10**(-n). The default is 4 for
energies and 7 for gradients. This is not the same CI vector convergence
criterion as found in GUGACI.
- DOCC =
integer_array
- This vector gives the number of doubly occupied orbitals in each irrep.
There is no default.
- SOCC =
integer_array
- This vector gives the number of singly occupied orbitals in each irrep.
There is no default.
- DIAG_METHOD
= string
- This specifies which method is to be used in diagonalizing the
Hamiltonian. The valid options are: RSP, to form the entire H
matrix and diagonalize using libciomr to obtain all eigenvalues (n.b.
requires HUGE memory); OLSEN, to use Olsen's preconditioned inverse
subspace method (1990); MITRUSHENKOV, to use a 2x2 Olsen/Davidson
method; and DAVIDSON (or SEM) to use Liu's Simultaneous
Expansion Method, which is identical to the Davidson method if only one
root is to be found. There also exists a SEM debugging mode,
SEMTEST. The SEM method is the most robust, but it also
requires 2(N*M)+1 CI vectors on disk, where N is the maximum number of
iterations and M is the number of roots.
- PRECONDITIONER
= string
- This specifies the type of preconditioner to use in the selected
diagonalization method. The valid options are: DAVIDSON which
approximates the Hamiltonian matrix by the diagonal elements;
H0BLOCK_INV which uses an exact Hamiltonian of H0_BLOCKSIZE and
explicitly inverts it; GEN_DAVIDSON which does a spectral
decomposition of H0BLOCK; ITER_INV using an iterative approach to
obtain the correction vector of H0BLOCK. The H0BLOCK_INV, GEN_DAVIDSON,
and ITER_INV approaches are all formally equivalent but the ITER_INV is
less computationally expensive. Default is DAVIDSON.
- REFERENCE =
string
- This specifies the type of reference function. This is RHF or ROHF. UHF
and TWOCON are not supported. For ROHF, a multiplicity of 1 implies an
open-shell singlet. The program will run for open-shell singlets, but it
has not been properly adapted to use a correct two-determinant reference
in this case, so running with open-shell singlet references is not advised
except for full CI's.
- UPDATE =
string
- DAVIDSON employs the standard DAVIDSON update or correction vector
formula, while OLSEN uses the OLSEN correction vector. Default is
DAVIDSON.
- HD_OTF =
boolean
- If TRUE the diagonal elements of the Hamiltonian matrix are computed
on-the-fly, otherwise a diagonal element vector is written to a separate
file on disk. Default is TRUE.
- HD_AVE =
string
- HD_EXACT uses the exact diagonal energies which results in
expansion vectors which break spin symmetry. HD_KAVE averages the
diagonal energies over a spin-coupling set yielding spin pure expansion
vectors. ORB_ENER employs the sum of orbital energy approximation
giving spin pure expansion vectors but usually doubles the number of
davidson iterations. EVANGELISTI uses the sums and differences of
orbital energies with the SCF reference energy to produce spin pure
expansion vectors. LEININGER approximation which subtracts the
one-electron contribution from the orbital energies, multiplies by 0.5,
and adds the one-electron contribution back in, producing spin pure
expansion vectors and developed by yours truly and works as well as
EVANGELISTI.
- NODFILE =
boolean
- Only possible if NUM_ROOTS = 1. Uses the last vector space in the BVEC
file to write scratch DVEC rather than using a separate DVEC file.
- ENERGY_CONVERGENCE
= integer
- Convergence desired on the CI energy. The default is 6 for single point
energies and 8 for gradients or CASSCF.
- EX_LVL =
integer
- Excitation level for excitations into virtual orbitals (default 2, i.e.
CISD).
- VAL_EX_LVL
= integer
- Excitation level for references in orbitals of RAS II. Defaults to zero.
- FCI =
boolean
- If this flag is set to TRUE, then the storage of strings is
simplified for a Full CI and the calculation requires less overhead.
However, the final results should be identical to those when FCI =
FALSE. May cause unpredictable results if FCI = TRUE but
EX_LVL is not consistent with a Full CI.
- FROZEN_DOCC
= integer_array
- The number of lowest energy doubly occupied orbitals in each irreducible
representation from which there will be no excitations. The Cotton
ordering of the irredicible representations is used. The default is the
zero vector.
- FROZEN_UOCC
= integer_vector
- The number of highest energy unoccupied orbitals in each irreducible
representation into which there will be no excitations. The default is the
zero vector.
- FREEZE_CORE =
boolean
- This option determines whether the frozen core orbitals are to be included
implicitly (true) or explicitly (false). In the former case, the energetic
contributions from the frozen core orbitals are folded into the
one-electron integrals and into the "frozen core energy"
computed by the transformation program. The default is true.
- EXPORT_VECTOR
= boolean
- This specifies whether to store converged vector(s) at the end of the run.
The vector(s) is(are) stored in a transparent format such that other
programs can use it easily. The format is specified in
src/lib/libqt/slaterdset.h. The default is false.
- NUM_EXPORT
= integer
- If EXPORT_VECTOR is set to true, the this determines the number of
vectors that need to be exported at the end of the run. The default is 1.
- GUESS_VECTOR
= string
- This specifies which type of guess vector to use in the CI iteration.
Currently only used by the SEM iteration method. Accepted values are
UNIT for a unit vector guess (NUM_ROOTS and
NUM_INIT_VECS must both be 1); H0_BLOCK to use eigenvectors
from the H0 BLOCK submatrix (default); DFILE to use
NUM_ROOTS previously converged vectors in the D file; and
MP2 to use the MP2 wavefunction as a guess (not working at the
moment).
- H0_BLOCKSIZE
= integer
- This parameter specifies the size of the "H0" block of the
Hamiltonian which is solved exactly. The n determinants with the lowest
SCF energy are selected, and a submatrix of the Hamiltonian is formed
using these determinants. This submatrix is used to accelerate convergence
of the CI iterations in the OLSEN and MITRUSHENKOV iteration
schemes, and also to find a good starting guess for the SEM method
if GUESS_VECTOR = H0_BLOCK. Defaults to 40. Note that the program
may change the given size for Ms=0 cases (Ms0 = TRUE) if it
determines that the H0 block includes only one member of a pair of
determinants related by time reversal symmetry. For very small block
sizes, this could conceivably eliminate the entire H0 block; the program
should print warnings if this occurs.
- H0_BLOCK_COUPLING_SIZE
= integer
- Parameters which specifies the size of the coupling block within the
generalized davidson preconditioner. Default value is 1000.
- MAX_DET =
integer
- Sets the maximum number of determinants; if the CI space is larger than
this, the program aborts. This option exists to ensure that very large
calculations are not run by accident. During the current developmental
phase, the default is 10000, but it will be raised before long.
- MAXITER =
integer
- Maximum number of iterations to diagonalize the Hamiltonian. Defaults to
12.
- Ms0 =
boolean
- If TRUE, use the Ms=0 component of the state. Defaults to
TRUE if closed-shell and to FALSE otherwise. Related to the
S parameter.
- NPRINT =
integer
- This value specifies the number of determinants which will be printed,
along with their coefficients, in the list of most important determinants
in the final CI vector. The default is 20.
- NUM_ROOTS =
integer
- This value gives the number of roots which are to be obtained from the
secular equations. The default is one. If more than one root is required,
set DIAG_METHOD to SEM (or, for very small cases, RSP
or SEMTEST).
- NUM_INIT_VECS
= integer
- The number of initial vectors to use in the CI iterative procedure.
Defaults to the number of roots.
- OPDM =
boolean
- If TRUE calculate the one-particle density matrix and make
OPDM_WRITE default to TRUE. The default value of OPDM
is FALSE.
- OPDM_FILE =
integer
- File (unit number) for writing the one-particle density matrix if
OPDM_WRITE = TRUE. The default value is currently 73.
- OPDM_WRITE
= boolean
- Flag for whether or not to write the one-particle density matrix to disk.
- OPDM_PRINT
= boolean
- Flag for whether or not to print the one-particle density matrix.
- OPDM_DIAG =
boolean
- Flag for whether or not to diagonalize the one-particle density matrix.
- WRTNOS =
boolean
- Flag for whether or not to write the CI natural orbitals to PSIF_CHKPT.
- ORBSFILE =
integer
- File (unit number) for writing various CI natural orbitals. The default
value is 76.
- OPDM_AVE =
boolean
- Flag for whether or not to average the OPDM over several roots in order to
obtain a state-average one-particle density matrix. This density matrix
can be diagonalized to obtain the CI natural orbitals.
- ORBS_ROOT =
integer
- Flag for setting the root number for which CI natural orbitals are written
to PSIF_CHKPT. The default value is 1 (lowest root).
- PRINT =
integer
- This option determines the verbosity of the output. A value of 1 or 2
specifies minimal printing, a value of 3 specifies verbose printing.
Values of 4 or 5 are used for debugging. Do not use level 5 unless the
test case is very small (e.g. STO H2O CISD).
- ROOT =
integer
- The root to write out the two-particle density matrix for (the
one-particle density matrices are written for all roots). Useful for a
state-specific CASSCF or CI optimization on an excited state.
- S = integer
- The value of the spin quantum number S is given by this option. The
default is 0 (singlet). The only thing this is actually used for is
determining the phase of the redundant half of the CI vector when the Ms=0
component is used (i.e., Ms0 = TRUE). For cases where S is not an
integer, this parameter need not be entered because such a state can't
have an Ms=0 component.
- TPDM =
boolean
- If TRUE calculate the two-particle density matrix and make
TPDM_WRITE default to TRUE. The default value of TPDM
is FALSE.
- TPDM_FILE =
integer
- File (unit number) for writing the two-particle density matrix if
TPDM_WRITE = TRUE. The default value is currently 74.
- TPDM_WRITE
= boolean
- Flag for whether or not to write the two-particle density matrix to disk.
- TPDM_PRINT
= boolean
- Flag for whether or not to print the two-particle density matrix.
Typically a very bad idea except for debugging small cases.
There is also some less commonly used input, which novice uses of
PSI will have no need to use.
- BENDAZZOLI
= boolean
- Use some routines to calculate sigma based on the papers of Bendazzoli et
al. Seems to be slower and not worthwhile; may disappear eventually. Works
only for full CI and I don't remember if I could see how their clever
scheme might be extended to RAS in general.
- CALC_SSQ =
boolean
- If TRUE, calculate the expectation value of the S^2 operator for the final
CI wavefunction for each root. In principle, DETCI should yield S^2
eigenfunctions. The default is FALSE.
- COLLAPSE_SIZE
integer
- Gives the number of vectors to retain when the Davidson subspace is
collapsed (see MAXNVECT below). If greater than one, the collapsed
subspace retains the best estimate of the CI vector for the previous n
iterations. Defaults to 1.
- FIRST_TMP_UNIT
= integer
- Gives the file (unit) number associated with the first scratch file used
by DETCI. Other scratch files are numbered consecutively from this point,
int the order H(diag), C, S, D. Each of these logical files takes up a
number of physical files specified by the even more obscure input
parameters NUM_HD_TMP_UNITS, NUM_C_TMP_UNITS, NUM_S_TMP_UNITS,
NUM_D_TMP_UNITS. The user can also specify different starting points
for each of these sets using the parameters FIRST_HD_TMP_UNIT and
so forth. Splitting a file across several units may help avoid the
size-of-integer problem in addressing large files that is present in DETCI
and in PSI I/O libraries; but then again, I haven't tested it to see what
happens. The first unit of each section is printed out under the heading
FILES in the parameter output beginning the DETCI run.
- FZC =
boolean
- Determines whether the frozen core orbitals are treated as truly frozen
(i.e., absent entirely from calculation, FZC = TRUE) or whether
they are present but restricted to be doubly occupied (FZC =
FALSE). In the GUGA CI program, this is the distinction between what
it calls FZC and COR orbitals. Generally, the integrals for frozen core
orbitals are not needed by DETCI but they may be needed for MCSCF or
gradients.
- ICORE =
integer
- Specifies how to handle buffering of CI vectors. A value of 0 makes the
program perform I/O one RAS subblock at a time; 1 uses entire CI vectors
at a time; and 2 uses one irrep block at a time. Values of 0 or 2 cause
some inefficiency in the I/O (requiring multiple reads of the C vector
when constructing H in the iterative subspace if DIAG_METHOD = SEM), but
require less core memory.
- ISTOP =
boolean
- If TRUE then DETCI will stop after string information is formed and
before integrals are read. May eventually change to an integer so that the
user can select from multiple stopping points.
- MAXNVECT =
integer
- Gives the maximum number of Davidson subspace vectors which can be held on
disk for the CI coefficient and sigma vectors. (There is one H(diag)
vector and the number of D vectors is equal to the number of roots). When
the number of vectors on disk reaches the value of MAXNVECT, the
Davidson subspace will be collapsed to COLLAPSE_SIZE vectors for
each root. This is very helpful for saving disk space. Defaults to
MAXITER * NUM_ROOTS + NUM_INIT_VECS.
- MIXED =
boolean
- This determines whether "mixed" RAS II/RAS III excitations are
allowed into the CI space. This is useful for placing additional
constraints on a RAS CI.
- MIXED4 =
boolean
- This is similar to the MIXED keyword, but refers to excitations into RAS
IV.
- NUNITS =
integer
- Number of scratch files to be used in storing the C vectors (and also for
the sigma vectors).
- OEI_ERASE =
boolean
- This determines whether the program erases the one-electron integrals file
after it has been read. The default will eventually be true, but during
development the default is false.
- OEI_FILE =
integer
- This keyword allows the user to specify the transformed one-electron
integral file. The default is 71.
- PRINT_CIBLKS
= boolean
- Specifies whether the program should print out a summary of all the blocks
in the CI vector (which can be cast into matrix form, see refs.)
- R4S =
boolean
- Restricts the RAS IV strings to the minimal set, saving memory. If you are
concerned about this option, you should write David for advice unless you
are a DETCI expert.
- REF_SYM =
integer
- This option allows the user to look for CI vectors of a different irrep
than the reference. This probably only makes sense for Full CI, and it
would probably not work with unit vector guesses. Numbering starts from
zero for the totally-symmetric irrep.
- REPL_OTF =
boolean
- Tells DETCI whether or not to do string replacements on the fly. Can save
a gigantic amount of memory (especially for truncated CI's) but is
somewhat flaky and hasn't been tested for a while. As I recall, it only
works for certain classes of RAS calculations. Contact David for
assistance. Eventually, the on-the-fly replacement stuff should be redone
in a much smarter way so that it doesn't take eons of CPU time. Work along
these lines was once started and may be completed eventually.
- RESTART =
boolean
- This option allows the user to resume a DETCI iteration that terminated
prematurely. It assumes that the CI and sigma vectors are on disk; the
number of vectors specified by RESTART_VECS is collapsed down to
one vector per root.
- RESTART_VECS
= integer
- If RESTART = TRUE this specifies the number of CI (and sigma)
vectors to read from disk. Typically this is the number of successfully
completed iterations from a previous run times the number of roots for
that run.
- TEI_ERASE =
boolean
- This determines whether the program erases the two-electron integrals file
after it has been read. The default will eventually be true, but during
development the default is false.
- TEI_FILE =
integer
- This keyword allows the user to specify the transformed two-electron
integral file. The default is 72.
- MPN =
boolean
- When this option is TRUE DETCI will compute the MPn series out to kth
order where k is determined by maxnvect. For open-shell systems (REF=ROHF,
WFN = ZAPTN), DETCI will compute the ZAPTn series. GUESS_VECTOR must be
set to TRUE. HD_OTF must be set to TRUE. HD_AVE must be set to orb_ener.
- SAVE_MPN2 =
integer
- When MPN is TRUE and WIGNER is TRUE then this option becomes valid. If set
to 1 then MP(2n-1) energy is saved. If set to 2 then MP(2n-2) energy is
saved. If any other value MPn energy is saved. The default is 0.