
/** \page mpqccomponents CCA Components

Common Component Architecture (CCA) component wrappers, conforming to interfaces
developed for the 
<a href="http://www.cca-forum.org/~cca-chem">CCA Chemistry Component Toolkit</a>, 
have been created to encapsulate some MPQC functionality.
The following components are provided by MPQC:


<ul>
  <li> \ref modelfac
  <li> \ref coormodel
  <li> \ref evalfac
</ul>

\section modelfac MPQC.Chemistry_QC_ModelFactory

This is an implementation of the Chemistry.QC.ModelFactory interface.
This factory produces model objects (implementing the Chemistry.QC.Model
interface) based on the MPQC package.  The MPQC model allows calculation
of molecular energies and energy derivatives using a variety of methods.

\subsection modelfacpp Provides Ports
<ul>
  <li>Chemistry.QC.ModelFactory <em>ModelFactory</em>
</ul>

\subsection modelfacup Uses Ports
<ul>
  <li>Chemistry.QC.MoleculeFactory <em>MoleculeFactory</em> (required)
</ul>

\subsection modelfacparam Parameters
<ul>
  <li><b>theory</b> The method for determining the electronic structure.
      Defaults to HF.
      <ul>
         <li> <em>HF</em>  Hartree-Fock method.
         <li> <em>B3LYP</em> Density Functional Theory (DFT) with
              B3LYP functional.
         <li> Use keyval input for other options.
      </ul>
  <li><b>basis</b> The atomic orbital basis set.  Defaults to <em>STO-3G</em>.
      <ul>
         <li> Any basis set defined in the MPQC package.
         <li> Use keyval input for mixed basis sets.
      </ul>
   <li><b>molecule_filename</b> Path to the molecule file (see cca-chem-generic
       documentation for format).  No default -- required.
   <li><b>keyval_filename</b> Path to the keyval input file (see below).
       No default -- optional.
</ul>

\subsection modelfackeyval Keyval Input
The <b>theory</b> and <b>basis</b> parameters allow very basic calculations
to be performed.  More complex calculations will require the use of a
keyval input file.  The keyval file format is the same as that used to run
MPQC stand-alone, and any valid MPQC options may be used.  The molecular
energy object must be named <tt>model</tt>.  The user-supplied keyval
cannot contain a molecule section; the molecule section will
be automatically inserted by the ModelFactory using the required
<b>molecule_filename</b>.  This molecule section should be referred to as
<tt>$:molecule</tt>.

Example keyval input:
<pre>
  model<CLHF>:(
    molecule=$:molecule
    basis<GaussianBasisSet>:(
      name = "6-31G"
      molecule = $:molecule
    )
  )
</pre>

\section coormodel MPQC.ChemistryOpt_CoordinateModel

This is an implementation of the ChemistryOpt.CoordinateModel interface based
on the MPQC package.  It supports molecular structure optimization in
cartesian, symmetrized internal, and redundant internal coordinates.
Hessian approximation is supported.

\subsection coormodelpp Provides Ports
<ul>
  <li> ChemistryOpt.CoordinateModel <em>CoordinateModel</em>
</ul>

\subsection coormodelup Uses Ports
<ul>
  <li> Chemistry.QC.ModelFactory <em>ModelFactory</em> (required)
  <li> Chemistry.QC.ModelFactory <em>BackupModelFactory</em> (optional)
  <li> Chemistry.MoleculeViewer <em>MoleculeViewer</em> (optional)
</ul>

A backup model factory may be supplied.  If an error is detected in the
primary model, then a model obtained from the backup factory will be used.
The molecule viewer is currently only used to communicate with the
 python viewer, in which case component instantiation and connection
is handled automatically.

\subsection coormodelparam Parameters
<ul>
  <li><b>grad_rms</b> RMS gradient convergence criteria.  Defaults to 0.00030.
  <li><b>grad_max</b> Max gradient convergence criteria.  Defaults to 0.00045.
  <li><b>disp_rms</b> RMS displacement convergence criteria.  Defaults to
      0.00120.
  <li><b>disp_max</b> Max displacement convergence criteria.  Defaults to
      0.00180.
  <li><b>coordinate_type</b> Optimization coordinate type.  Defaults to
      <em>symmetrized</em>.
     <ul>
       <li> <em>cartesian</em> Cartesian coordinates.
       <li> <em>symmetrized</em> Symmetrized internal coordinates.
       <li> <em>redundant</em> Redundant internal coordinates.
     </ul>
  <li><b>multiple_guess_h</b> Compute new guess Hessian at each call to
      guess_hessian_solve() (<em>true</em>) or use guess from first iteration
      only (<em>false</em>).  Only meaningful
      in conjunction with solvers supporting use of dense guess Hessians
      with limited-memory methods.  Defaults to <em>true</em>.
  <li><b>use_current_geom</b> If <b>multiple_guess_h</b> is <em>true</em>,
      either use the current geometry (<em>true</em>) or the geometry at
      which the earliest correction pair used by the solver was determined
      (<em>false</em>) when computing the guess Hessian.  Defaults to
      <em>false</em>.
</ul>

\section evalfac MPQC.IntegralEvaluatorFactory

This is an implementation of the 
Chemistry.QC.GaussianBasis.IntegralEvaluatorFactory interface.
This factory produces molecular integral evaluator objects 
based on the MPQC package. 
This code is experimental and does not currently support derivative integrals.

\subsection evalfacpp Provides Ports
<ul>
  <li> Chemistry.QC.GaussianBasis.IntegralEvaluatorFactory 
       <em>IntegralEvaluatorFactory</em>
</ul>

\subsection evalfacparam Parameters
<ul>
  <li><b>package</b> Integral package, either <tt>intv3</tt> or <tt>cints</tt>. 
      Defaults to <tt>intv3</tt>.
  <li><b>integral_buffer</b> Integral buffer type, either <tt>opaque</tt> or <tt>array</tt>.
      The <tt>opaque</tt> option uses pointers and is therefore higher performance. 
      The <tt>array</tt> option may be used by components implemented in languages which are 
      not pointer-aware.
</ul>

*/
