sc::molecularenergy(3)
NAME
sc::MolecularEnergy - The MolecularEnergy abstract class inherits from
the Function class.
SYNOPSIS
#include <energy.h> Inherits sc::Function. Inherited by sc::SumMolecularEnergy, sc::TaylorMolecularEnergy, and sc::Wavefunction. Public Member Functions MolecularEnergy (const MolecularEnergy &) MolecularEnergy (const Ref< KeyVal > &) The KeyVal constructor. MolecularEnergy (StateIn &) void save_data_state (StateOut &) Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR initializes them. void set_checkpoint () Set up checkpointing. void set_checkpoint_file (const char *) void set_checkpoint_freq (int freq) bool if_to_checkpoint () const Check if need to checkpoint. const char * checkpoint_file () const int checkpoint_freq () const MolecularEnergy & operator= (const MolecularEnergy &) virtual double energy () A wrapper around value();. virtual Ref< Molecule > molecule () const virtual RefSCDimension moldim () const void guess_hessian (RefSymmSCMatrix &) Compute a quick, approximate hessian. RefSymmSCMatrix inverse_hessian (RefSymmSCMatrix &) RefSymmSCMatrix hessian () If a molecule hessian object is given, it will be used to provide a hessian. int hessian_implemented () const void set_x (const RefSCVector &) Set and retrieve the coordinate values. RefSCVector get_cartesian_x () Return the cartesian coordinates. RefSCVector get_cartesian_gradient () Return the cartesian gradient. RefSymmSCMatrix get_cartesian_hessian () Return the cartesian hessian. Ref< MolecularCoor > molecularcoor () virtual void symmetry_changed () Call this if you have changed the molecular symmetry of the molecule contained by this MolecularEnergy. Ref< NonlinearTransform > change_coordinates () An optimizer can call change coordinates periodically to give the function an opportunity to change its coordinate system. void print_natom_3 (const RefSCVector &, const char *t=0, std::ostream &o=ExEnv::out0()) const Nicely print n x 3 data that are stored in a vector. void print_natom_3 (double **, const char *t=0, std::ostream &o=ExEnv::out0()) const void print_natom_3 (double *, const char *t=0, std::ostream &o=ExEnv::out0()) const virtual void print (std::ostream &=ExEnv::out0()) const Print information about the object. Protected Member Functions void failure (const char *) virtual void set_energy (double) This is just a wrapper around set_value(). virtual void set_gradient (RefSCVector &) These are passed gradients and hessian in cartesian coordinates. virtual void set_hessian (RefSymmSCMatrix &) void x_to_molecule () void molecule_to_x () Protected Attributes Ref< PointGroup > initial_pg_ int print_molecule_when_changed_
Detailed Description
The MolecularEnergy abstract class inherits from the Function class.
It computes the energy of the molecule as a function of the geometry.
The coordinate system used can be either internal or cartesian.
Constructor & Destructor Documentation
- sc::MolecularEnergy::MolecularEnergy (const Ref< KeyVal > &)
- The KeyVal constructor.
- molecule
A Molecule object. There is no default.
- coor
A MolecularCoor object that describes the coordinates. If this is not given cartesian coordinates will be used. For convenience, two keywords needed by the MolecularCoor object are automatically provided: natom3 and matrixkit.
- value_accuracy
Sets the accuracy to which values are computed. The default is
1.0e-6 atomic units. - gradient_accuracy
Sets the accuracy to which gradients are computed. The default is
1.0e-6 atomic units. - hessian_accuracy
Sets the accuracy to which hessians are computed. The default is
1.0e-4 atomic units. - hessian
Specifies a MolecularHessian object that is used to compute the hessian. If this MolecularEnergy specialization does not provide a hessian of its own, and a hessian is needed, then this keyword must be specified.
- guess_hessian
Specifies a MolecularHessian object that is used to compute a guess hessian. Guess hessians are used to improve the rate of convergence of optimizations. If this keyword is not specified, and a
MolecularCoor object is given by coor, then the guess hessian is obtained from the MolecularCoor object. If neither this nor coor are given, then Function::guess_hessian is used, which returns a unit matrix. - print_molecule_when_changed
If true, then whenever the molecule's coordinates are updated they will be printed. The default is true.
- checkpoint
If true, then this object will be checkpointed during its
evaluation. Not all implementations of MolecularEnergy support checkpointing. The default is false. - checkpoint_file
Specifies the name of the file into which this object will be
checkpointed. Default is '<inpubasename>.ckpt', where
'<inputbasename>' is the name of the input file without '.in'. - checkpoint_freq
Specifies how often this object to be checkpointed. Only matters
for objects which are computed iteratively. Default is 1.
Member Function Documentation
- virtual void sc::MolecularEnergy::set_gradient (RefSCVector &) [protected,
- virtual]
These are passed gradients and hessian in cartesian coordinates. - The gradient and hessian in internal coordinates are computed.
- Reimplemented from sc::Function.
- void sc::MolecularEnergy::save_data_state (StateOut &) [virtual]
- Save the base classes (with save_data_state) and the members in the
same order that the StateIn CTOR initializes them. - This must be implemented by the derived class if the class has data.
- Reimplemented from sc::Function.
- Reimplemented in sc::CLKS, sc::HSOSKS, sc::UKS, sc::MBPT2, sc::MBPT2_R12, sc::PsiWavefunction, sc::PsiSCF, sc::PsiCCSD, sc::PsiCCSD_T, sc::CLHF, sc::CLSCF, sc::HSOSHF, sc::HSOSSCF, sc::SCF, sc::UHF, sc::UnrestrictedSCF, sc::OneBodyWavefunction, and sc::Wavefunction.
- RefSymmSCMatrix sc::MolecularEnergy::hessian () [virtual]
- If a molecule hessian object is given, it will be used to provide a
hessian. - Reimplemented from sc::Function.
- virtual void sc::MolecularEnergy::symmetry_changed () [virtual]
- Call this if you have changed the molecular symmetry of the molecule
contained by this MolecularEnergy. - Reimplemented in sc::MBPT2, sc::CLSCF, sc::HSOSSCF, sc::SCF, sc::UnrestrictedSCF, sc::OneBodyWavefunction, and sc::Wavefunction.
- Ref<NonlinearTransform> sc::MolecularEnergy::change_coordinates ()
- [virtual]
An optimizer can call change coordinates periodically to give the
function an opportunity to change its coordinate system. - A return value of 0 means the coordinates were not changed. Otherwise,
a transform object to the new coordinate system is return. The function
object applies the transform to any objects it contains. This will
obsolete the function data. - Reimplemented from sc::Function.
Author
- Generated automatically by Doxygen for MPQC from the source code.