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

**PROGRAM:**

**NAME**

detci - Determinant Configuration Interaction Program

**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 second-order 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 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.

**FILES** **REQUIRED**

input.dat - Input file

file71 - Transformed one-electron integrals

file72 - Transformed two-electron 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 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).

**=**

__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.

9 Feb, 1996 detci(1)

Use detci online using onworks.net services