Provided by: psi3_3.4.0-5_amd64 bug

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

       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.

                                            9 Feb, 1996                                  detci(1)