DESCRIPTION
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 secondorder CI (SOCI).
REFERENCES
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 OneBillion Limit in Full ConfigurationInteraction (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, 60696075 (1996).
DETCI Program:
 1.

C. D. Sherrill,
Computational Algorithms for LargeScale Full and
MultiReference Configuration Interaction Wavefunctions,
PhD thesis, University of Georgia, Athens, GA, 1996.
FILES REQUIRED
input.dat  Input file file71  Transformed oneelectron integrals file72  Transformed twoelectron integrals
TEMPORARY FILES USED
file50  Diagonal of Hamiltonian file51  CI vectors file52  Sigma vectors file53  D file (correction vectors)
FILES UPDATED
output.dat  Output file
INPUT FORMAT
The following commandline 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 openshell singlet. The
program will run for openshell singlets, but it has not been properly
adapted to use a correct twodeterminant reference in this case, so
running with openshell 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 onthefly,
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 spincoupling 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 oneelectron
contribution from the orbital energies, multiplies by 0.5, and adds
the oneelectron 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 oneelectron 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 closedshell 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 oneparticle 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 oneparticle density matrix if
OPDM_WRITE = TRUE. The default value is currently 73.
 OPDM_WRITE = boolean

Flag for whether or not to write the oneparticle density matrix
to disk.
 OPDM_PRINT = boolean

Flag for whether or not to print the oneparticle density matrix.
 OPDM_DIAG = boolean

Flag for whether or not to diagonalize the oneparticle 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 stateaverage oneparticle 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 twoparticle density matrix for
(the oneparticle density matrices are written for all roots).
Useful for a statespecific 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 twoparticle 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 twoparticle density matrix if
TPDM_WRITE = TRUE. The default value is currently 74.
 TPDM_WRITE = boolean

Flag for whether or not to write the twoparticle density matrix
to disk.
 TPDM_PRINT = boolean

Flag for whether or not to print the twoparticle 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 sizeofinteger 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 oneelectron 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 oneelectron
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 totallysymmetric 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 onthefly 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 twoelectron 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 twoelectron
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 openshell 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(2n1) energy is saved. If set to 2 then MP(2n2)
energy is saved. If any other value MPn energy is saved.
The default is 0.