sc::MolecularEnergy Class Reference

The MolecularEnergy abstract class inherits from the Function class. More...

`#include <energy.h>`

Inheritance diagram for sc::MolecularEnergy:
[legend]
Collaboration diagram for sc::MolecularEnergy:
[legend]

## Public Member Functions

| MolecularEnergy (const MolecularEnergy &)
| MolecularEnergy (const Ref< KeyVal > &)
| The KeyVal constructor. More...
| 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. More...
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. More...
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. More...
Ref< NonlinearTransform > | change_coordinates ()
| An optimizer can call change coordinates periodically to give the function an opportunity to change its coordinate system. More...
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.
Public Member Functions inherited from sc::Function
| Function (StateIn &)
| Function (const Function &)
| Function (const Ref< KeyVal > &, double funcacc=DBL_EPSILON, double gradacc=DBL_EPSILON, double hessacc=DBL_EPSILON)
| The keyval constructor reads the following keywords: More...
Function & | operator= (const Function &)
Ref< SCMatrixKit > | matrixkit () const
| Return the SCMatrixKit used to construct vectors and matrices. More...
RefSCDimension | dimension () const
| Return the SCDimension of the problem.
virtual double | value ()
| Return the value of the function.
int | value_needed () const
| Returns nonzero if the current value is not up-to-date.
int | do_value (int)
| If passed a nonzero number, compute the value the next time compute() is called. More...
AccResultdouble & | value_result ()
virtual void | set_desired_value_accuracy (double)
| Set the accuracy to which the value is to be computed.
virtual double | actual_value_accuracy () const
| Return the accuracy with which the value has been computed.
virtual double | desired_value_accuracy () const
| Return the accuracy with which the value is to be computed.
virtual int | value_implemented () const
| Information about the availability of values, gradients, and hessians. More...
virtual int | gradient_implemented () const
RefSCVector | get_x () const
const RefSCVector & | get_x_no_copy () const
virtual RefSCVector | gradient ()
int | gradient_needed () const
int | do_gradient (int)
virtual void | set_desired_gradient_accuracy (double)
virtual double | actual_gradient_accuracy () const
virtual double | desired_gradient_accuracy () const
AccResultRefSCVector & | gradient_result ()
int | hessian_needed () const
int | do_hessian (int)
virtual void | set_desired_hessian_accuracy (double)
virtual double | actual_hessian_accuracy () const
virtual double | desired_hessian_accuracy () const
AccResultRefSymmSCMatrix & | hessian_result ()
Public Member Functions inherited from sc::SavableState
SavableState & | operator= (const SavableState &)
void | save_state (StateOut &)
| Save the state of the object as specified by the StateOut object. More...
void | save_object_state (StateOut &)
| This can be used for saving state when the exact type of the object is known for both the save and the restore. More...
virtual void | save_vbase_state (StateOut &)
| Save the virtual bases for the object. More...
Public Member Functions inherited from sc::DescribedClass
| DescribedClass (const DescribedClass &)
DescribedClass & | operator= (const DescribedClass &)
ClassDesc * | class_desc () const throw ()
| This returns the unique pointer to the ClassDesc corresponding to the given type_info object. More...
const char * | class_name () const
| Return the name of the object's exact type.
int | class_version () const
| Return the version of the class.
Public Member Functions inherited from sc::RefCount
int | lock_ptr () const
| Lock this object.
int | unlock_ptr () const
| Unlock this object.
void | use_locks (bool inVal)
| start and stop using locks on this object
refcount_t | nreference () const
| Return the reference count.
refcount_t | reference ()
| Increment the reference count and return the new count.
refcount_t | dereference ()
| Decrement the reference count and return the new count.
int | managed () const
void | unmanage ()
| Turn off the reference counting mechanism for this object. More...
int | managed () const
| Return 1 if the object is managed. Otherwise return 0.
Public Member Functions inherited from sc::Identity
Identifier | identifier ()
| Return the Identifier for this argument. More...
Public Member Functions inherited from sc::Compute
virtual void | obsolete ()
| Marks all results as being out of date. More...

## 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. More...
virtual void | set_hessian (RefSymmSCMatrix &)
void | x_to_molecule ()
void | molecule_to_x ()
Protected Member Functions inherited from sc::Function
virtual void | set_matrixkit (const Ref< SCMatrixKit > &)
| Set the SCMatrixKit that should be used to construct the requisite vectors and matrices. More...
virtual void | set_dimension (const RefSCDimension &)
RefSCVector & | get_x_reference ()
| Get read/write access to the coordinates for modification.
void | do_change_coordinates (const Ref< NonlinearTransform > &)
| Change the coordinate system and apply the given transform to intermediates matrices and vectors. More...
virtual void | set_value (double)
virtual void | set_actual_value_accuracy (double)
virtual void | set_actual_gradient_accuracy (double)
virtual void | set_actual_hessian_accuracy (double)
Protected Member Functions inherited from sc::SavableState
| SavableState (const SavableState &)
| SavableState (StateIn &)
| Each derived class StateIn CTOR handles the restore corresponding to calling save_object_state, save_vbase_state, and save_data_state listed above. More...
Protected Member Functions inherited from sc::Compute
virtual void | compute ()=0
| Recompute at least the results that have compute true and are not already computed. More...

## Protected Attributes

Ref< PointGroup > | initial_pg_
int | print_molecule_when_changed_
Protected Attributes inherited from sc::Function
Ref< SCMatrixKit > | matrixkit_
| Used to construct new matrices.
RefSCVector | x_
| The variables.
RefSCDimension | dim_
| The dimension of x_.
AccResultdouble | value_
| The value of the function at x_.
AccResultRefSCVector | gradient_
| The gradient at x_.
AccResultRefSymmSCMatrix | hessian_
| The hessian at x_.

## Additional Inherited Members

Static Public Member Functions inherited from sc::SavableState
static void | save_state (SavableState *s, StateOut &)
static SavableState * | restore_state (StateIn &si)
| Restores objects saved with save_state. More...
static SavableState * | key_restore_state (StateIn &si, const char *keyword)
| Like restore_state, but keyword is used to override values while restoring. More...
static SavableState * | dir_restore_state (StateIn &si, const char *objectname, const char *keyword=0)

## 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

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.

RefSymmSCMatrix sc::MolecularEnergy::hessian | ( |  | ) |

virtual

If a molecule hessian object is given, it will be used to provide a hessian.

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::MBPT2, sc::MBPT2_R12, sc::SumMolecularEnergy, sc::HCoreWfn, sc::SCF, sc::PsiCCSD_T, sc::PsiCCSD, sc::Wavefunction, sc::HSOSSCF, sc::PsiSCF, sc::HSOSKS, sc::OneBodyWavefunction, sc::UKS, sc::CLSCF, sc::CLKS, sc::UnrestrictedSCF, sc::TaylorMolecularEnergy, sc::TCSCF, sc::ExtendedHuckelWfn, sc::OSSSCF, sc::PsiWavefunction, sc::UHF, sc::CLHF, sc::HSOSHF, sc::MP2BasisExtrap, sc::OSSHF, and sc::TCHF.

virtual void sc::MolecularEnergy::set_gradient | ( | RefSCVector & |  | ) |

protectedvirtual

These are passed gradients and hessian in cartesian coordinates.

The gradient and hessian in internal coordinates are computed.

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::Wavefunction, sc::SCF, sc::OneBodyWavefunction, sc::HSOSSCF, sc::CLSCF, sc::UnrestrictedSCF, sc::TCSCF, and sc::OSSSCF.

The documentation for this class was generated from the following file:

- energy.h