OnWorks favicon

detci - Online in the Cloud

Run detci in OnWorks free hosting provider over Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator

This is the command detci that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator



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

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)


output.dat - Output file


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

-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

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

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.

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

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.

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.

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

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.

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.

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

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.

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

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.

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.

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

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

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.

9 Feb, 1996 detci(1)

Use detci online using onworks.net services

Free Servers & Workstations

Download Windows & Linux apps

Linux commands