
/** \page mpqcsimp Simple Input

The simple input format consists of keywords followed by a ":" followed by
a value.  The keywords are case sensitive.  The values might be modified by
options found in parenthesis.  For example, the following input performs an
optimization of water using density functional theory with the B3LYP
exchange-correlation functional:

<pre>
\% B3LYP optimization of water
optimize: yes
method: KS (xc = B3LYP)
basis: 3-21G*
molecule: (angstrom)
    O    0.172   0.000   0.000
    H    0.745   0.000   0.754
    H    0.745   0.000  -0.754
</pre>
<br>

Comments begin with a <tt>%</tt> and continue to the end of the line.
Keyword values, such as method names, method options, or
basis set names containing special characters, such as a space,
parentheses, or square braket, must be quoted inside a pair of double quotes:
<pre>
\% DZP CCSD(T)_R12 energy of H2
optimize: no
method: "CCSD(T)_R12" (f12="stg-3g[1.0]")
basis: "DZP (Dunning)"
auxbasis: cc-pV6Z (uc)
molecule:
    H    0.000   0.000   0.700
    H    0.000   0.000  -0.700
</pre>
<br>

The accepted keywords are:

<dl>

<dt><tt>molecule</tt><dd> Gives the atoms types and coordinates.  The
  following options can be used

  <dl>
     <dt><tt>bohr</tt><dd> The coordinates are given in Bohr.
     <dt><tt>angstrom</tt><dd>  The coordinates are given in Angstroms (the default).
     <dt><tt>charge</tt><dd>  This option can be given after an "element x y z"
                  quadruple.  This will override the charge on the
                  atom.  For example, <tt>(charge = 0)</tt> can be given
                  for the ghost atoms in a counterpoise correction
                  calculation.
  </dl>

<dt><tt>multiplicity</tt><dd> Gives the multiplicity of the molecule.  The
  default is <tt>1</tt>.

<dt><tt>charge</tt><dd> Specificies the charge on the molecule.  The
  default is <tt>0</tt>.

<dt><tt>optimize</tt><dd> If <tt>yes</tt>, then an optimization will be
  performed.  The default is <tt>no</tt>.  The following options can be
  given:

  <dl>
   <dt> Choice of coordinates </dt>
   <dd>
    <dl> Choice of coordinates
     <dt><tt>cartesian</tt></dt> <dd> Use Cartesian coordinates. </dd>
     <dt><tt>internal</tt></dt> <dd> Use internal coordinates. </dd>
     <dt><tt>redundant</tt></dt> <dd> Use redundant internal coordinates. </dd>
    </dl>
   </dd>
   
   <dt> <tt>convergence</tt> </dt>
   <dd> A floating-point number that specifies the convergence thresholds. The default is 1e-4. \sa sc::Convergence
   </dd>

  </dl>

<dt><tt>gradient</tt><dd> If <tt>yes</tt>, then a gradient calculation will
  be performed.  The default is <tt>no</tt>.

<dt><tt>frequencies</tt><dd> If <tt>yes</tt>, then the frequencies will be
  obtained.  The default is <tt>no</tt>. The following options can be
  given:

  <dl>
   <dt> <tt>accuracy</tt> </dt>
   <dd> A floating-point number that specifies the desired relative accuracy of the computed frequencies. The default is
        1e-5.
   </dd>
  </dl>

<dt><tt>precise_findif</tt><dd> Set to <tt>yes</tt> if need to compute numerical gradient/frequencies
  computation to high precision. The default is <tt>no</tt>.

<dt><tt>accuracy</tt><dd> Specifies an estimate of the accuracy with which the wave function should be
  computed. The value should be given as a real number, which specifies the target accuracy for
  the energy. The default is 1e-6 (same as the default for <tt>value_accuracy</tt> keyword of
  Function class). The accuracy is not guaranteed to be achieved and thus the user is advised caution.

<dt><tt>method</tt><dd> Specifices the method.  There is no default and the
  possible values are:

   <dl>

     <dt><tt>HF</tt><dd> Hartree-Fock.  Unrestricted HF is used if
        <tt>multiplicity</tt> > 1
     <dt><tt>RHF</tt><dd> Restricted Hartree-Fock.
     <dt><tt>UHF</tt><dd> Unrestricted Hartree-Fock.
     <dt><tt>KS</tt><dd> Kohn-Sham.  Unrestricted KS is used if
        <tt>multiplicity</tt> > 1
     <dt><tt>RKS</tt><dd> Restricted Kohn-Sham.
     <dt><tt>UKS</tt><dd> Unrestricted Kohn-Sham.
     <dt><tt>MP2</tt><dd> Second-order M&oslash;ller-Plesset perturbation theory. Unrestricted MP2 is used
     if <tt>multiplicity</tt> > 1
     <dt><tt>UMP2</tt><dd> Unrestricted MP2. No gradient, optimization, of frequencies are possible.
     <dt><tt>RMP2</tt><dd> Restricted MP2. No gradient, optimization, of frequencies are possible.
     <dt><tt>ZAPT2</tt><dd>  Z-averaged second-order perturbation theory.
                Only available for <tt>multiplicity</tt> > 1.  No gradient,
                optimization, or frequencies are possible.
     <dt><tt>MP2</tt><dd> Second-order M&oslash;ller-Plesset perturbation theory. Unrestricted MP2 is used
     if <tt>multiplicity</tt> > 1
     <dt><tt>MP2-R12</tt><dd> The explicitly-correlated MP2 method
                (<tt>RMP2-R12</tt> and <tt>UMP2-R12</tt>, the R12 equivalents of <tt>RMP2</tt> and
                <tt>UMP2</tt>, are also allowed).
                An auxiliary basis should be specified for this method (see <tt>auxbasis</tt> keyword).
                No gradient, optimization, or frequencies are possible.
     <dt><tt>CCSD(2)_R12</tt><dd> The explicitly-correlated CCSD method
                (<tt>RCCSD(2)_R12</tt> and <tt>UCCSD(2)_R12</tt> are also allowed).
                An auxiliary basis should be specified for this method (see <tt>auxbasis</tt> keyword).
                No gradient, optimization, or frequencies are possible.
     <dt><tt>CCSD(T)_R12</tt><dd> The explicitly-correlated CCSD method
                (<tt>RCCSD(T)_R12</tt> and <tt>UCCSD(T)_R12</tt> are also allowed)
                An auxiliary basis should be specified for this method (see <tt>auxbasis</tt> keyword).
                No gradient, optimization, or frequencies are possible.
     <dt><tt>CC3(2)_R12</tt><dd> The explicitly-correlated (ground-state) CC3 method
                (<tt>RCC3(2)_R12</tt> and <tt>UCC3(2)_R12</tt> are also allowed).
                An auxiliary basis should be specified for this method (see <tt>auxbasis</tt> keyword).
                No gradient, optimization, or frequencies are possible.
   </dl>

   The following options are valid with the <tt>KS</tt>, <tt>RKS</tt>, and
   <tt>UKS</tt> methods:
   <dl>
     <dt><tt>grid</tt><dd> Specifies the grid to be used for numerical
        integrations.  The following values can be given:
        <dl>
           <dt><tt>xcoarse</tt><dd>
           <dt><tt>coarse</tt><dd>
           <dt><tt>medium</tt><dd>
           <dt><tt>fine</tt><dd>
           <dt><tt>xfine</tt><dd>
           <dt><tt>ultrafine</tt><dd>
        </dl>
     <dt><tt>xc</tt><dd> Specifies the exchange-correlation functional.
        There is no default.  See the table in the StdDenFunctional
        class documentation for the possible values.
   </dl>

   The following options are valid with R12 methods:
   <dl>
     <dt><tt>f12</tt><dd> Specifies the correlation factor used to construct the geminals.
     The default value is <tt>stg-6g[1.3]</tt> (geminal exponent of 1.5 is a compromise value
     that seems to work well with most orbital basis sets; if the specialized R12-optimized basis sets of
     Peterson are used, the respecive recommended values will be used automatically).
     The following values can be given:
     <dl>
       <dt><tt>stg-Ng[Y]</tt><dd>Use a Slater-type geminal, \f$ \exp(- Y r_{12})\f$,
       where Y is the orbital exponent (typical values between 0.5 and 2.0),
       expanded in terms of N Gaussian-type geminals (N must be greater or equal to 1). The use
       of this correlation factor requires that the Libint2 library was used to configure
       and compile MPQC.
       <dt><tt>r12</tt><dd>Use the linear correlation factor, which was used in the original
       R12 theory. The linear factor is less effective than the Slater-type geminal and should only be
       used by experts. The use of this correlation factor requires that the Libint1 library
       was used to configure and compile MPQC.
       <dt><tt>none</tt><dd>R12-dependent terms will not be used. This is only useful for comparing
       with the standard methods or accessing certain features (e.g. DF-MP2) not available
       with the conventional implementations.
     </dl>
     
     <dt><tt>app</tt><dd> Specifies the R12 approximation. The default is <tt>app=C</tt> and should be fine for most non-expert uses.
     The following values can be given:
     <dl>
       <dt><tt>A'</tt><dd>Use approximation A'.
       <dt><tt>A''</tt><dd> Use approximation A'' (unpublished method by Valeev).
       <dt><tt>B</tt><dd> Use approximation B.
       <dt><tt>C</tt><dd>Use approximation C. This is the default.
     </dl>

     <dt><tt>ansatz</tt><dd> Specifies the R12 ansatz used to generate the geminal functions.
     The following values can be given:
     <dl>
       <dt><tt>diag</tt><dd> Use the diagonal orbital-invariant ansatz with coefficients
       fixed by the first-order cusp-conditions (due to Ten-no). This is the default and recommended for
       most non-experts.
       <dt><tt>ijij</tt><dd> Same meaning as <tt>diag</tt>.
       <dt><tt>ijkl</tt><dd> Use the original orbital-invariant ansatz of Klopper.
       <dt><tt>ijpq</tt><dd> Use pq ansatz.
     </dl>

     <dt><tt>ri</tt><dd> Specifies the manner in which the resolution-of-the-identity is used.
     The default is <tt>ri=cabs+</tt> and should be used by all non-experts.
     The following values can be given:
     <dl>
       <dt><tt>abs</tt><dd>Use the Auxiliary Basis Set method of Klopper and Samson.
       <dt><tt>abs+</tt><dd>Same as <tt>abs</tt> but use the union of the orbital and the
                            given auxiliary basis as the actual auxiliary
                            basis set used. 
       <dt><tt>cabs</tt><dd>Use the Complementary Auxiliary Basis Set method of Valeev.
       <dt><tt>cabs+</tt><dd>Same as <tt>cabs</tt>
                            but use the union of the orbital and the
                            given auxiliary basis as the actual auxiliary
                            basis set used. This is the default.
     </dl>
   </dl>

<dt><tt>basis</tt><dd> Specifies the basis set.  There is no default.  See
  the table in the GaussianBasisSet class documentation for the
  available basis sets. The following options can be
  given:
  <dl>
     <dt><tt>uc</tt><dd> Uncontract the basis.
     <dt><tt>puream</tt><dd> Force the use of solid harmonics for all shells (see <tt>puream</tt> keyword of GaussianBasisSet).
     This will be set by default for Psi-based wave functions.
     <dt><tt>split</tt><dd> Split generally-contracted shells (see SplitBasisSet). May be necessary for
     certain Integral factory types. Will be set automatically when needed.
  </dl>

<dt><tt>auxbasis</tt><dd> Specifies the auxiliary basis set for R12
  methods.  There is no default.  See the table in the GaussianBasisSet
  class documentation for the available basis sets. Refer to the documentation for
  keyword <tt>basis</tt> for the list of options that can be given.

<dt><tt>dfbasis</tt><dd> Specifies the density-fitting basis set.
  There is no default.  See the table in the GaussianBasisSet
  class documentation for the available basis sets. Refer to the documentation for
  keyword <tt>basis</tt> for the list of options that can be given.

<dt><tt>symmetry</tt><dd> Specifices the Schoenflies symbol of the point
  group of the molecule.  The default is <tt>auto</tt>, which will cause the
  program to find the highest order Abelian subgroup of the molecule.

<dt><tt>docc</tt><dd> Gives the number of doubly occupied orbitals in each
  each irreducible representation in a parenthesized list.  The symmetry
  must be specified and not be <tt>auto</tt>.  The method must be
  spin-restricted.

<dt><tt>socc</tt><dd> Gives the number of single occupied orbitals in each
  each irreducible representation in a parenthesized list.  The symmetry
  must be specified and not be <tt>auto</tt>.  The method must be
  spin-restricted.

<dt><tt>alpha</tt><dd> Gives the number of alpha occupied orbitals in each
  each irreducible representation in a parenthesized list.  The symmetry
  must be specified and not be <tt>auto</tt>.  The method must be
  spin-unrestricted.

<dt><tt>beta</tt><dd> Gives the number of beta occupied orbitals in each
  each irreducible representation in a parenthesized list.  The symmetry
  must be specified and not be <tt>auto</tt>.  The method must be
  spin-unrestricted.

<dt><tt>frozen_docc</tt><dd> Gives the number of frozen core orbitals.  Can
  be either a single integer (e.g. <tt>frozen_docc=0</tt> will not freeze core orbitals)
  or a parenthesized list giving the frozen core
  orbitals in each irreducible representation.  In the latter case the
  symmetry must be given and not be <tt>auto</tt>. The default is to automatically
  determine the frozen core orbitals.

<dt><tt>frozen_uocc</tt><dd> Gives the number of frozen virtual orbitals.
  Can be either a single integer or a parenthesized list giving the frozen
  virtual orbitals in each irreducible representation.  In the latter case
  the symmetry must be given and not be <tt>auto</tt>.

<dt><tt>scf</tt><dd> Specifies the parameters of the self-consistent field procedure used in
all HF and DFT methods. The following options can be used

  <dl>
     <dt><tt>maxiter</tt><dd> The maximum number of iterations. The default is 40 (same as
     the default for <tt>maxiter</tt> keyword of SCF class).
  </dl>

<dt><tt>lindep</tt><dd> Specifies the tolerance used to detect linearly dependent basis functions.
  All eigevectors of the overlap matrix with eigenvalues smaller than the maximum eigenvalue
  times this tolerance are eliminated using the symmetric orthogonalization. The default is <tt>1e-8</tt>
  (same as the default for <tt>lindep_tol</tt> keyword of Wavefunction class).

<dt><tt>restart</tt><dd> Set to <tt>yes</tt> to restart an optimization.
  The default is <tt>no</tt>.

<dt><tt>checkpoint</tt><dd> Set to <tt>no</tt> to not save checkpoint files
  during an optimization.  The default is <tt>yes</tt>.

<dt><tt>tmpstore</tt><dd> Specifies how the large temporary data will be held.
The default is <tt>disk</tt>, i.e. to write such files to disk. Setting this keyword to
<tt>mem</tt> will force the algorithm to hold such data in memory.

<dt><tt>tmpdir</tt><dd> Gives the directory to which large temporary files will be
written. The default is to write such files into the current working directory, i.e. <tt>./</tt> .

<dt><tt>memory</tt><dd> Gives a hint for the amount of memory in bytes that
  can be used.  This is typically a lower bound, more memory will be used
  in practice and the exact amount cannot be precisely controlled.  The
  format is a fixed or floating point number optionally followed (without
  spaces) by one of the following suffixes: KB, MB, GB, KIB, MIB, or GIB.

<dt><tt>debug</tt><dd> Specifies the amount of information printed out (this should help troubleshooting).
  Nonnegative integer values are accepted. The higher the value the more output will be produced. The default
  is <tt>0</tt>.

</dl>

*/
