MPQC  3.0.0-alpha
sc::Function Class Reference

The Function class is an abstract base class that, given a set of coordinates, will compute a value and possibly a gradient and hessian at that point. More...

#include <math/optimize/function.h>

Inheritance diagram for sc::Function:
sc::SavableState sc::Compute sc::DescribedClass sc::RefCount sc::ETraIn sc::MolecularEnergy sc::Volume mpqc::TA::Wavefunction sc::MolcasPT2R12 sc::SumMolecularEnergy sc::TaylorMolecularEnergy sc::Wavefunction sc::BatchElectronDensity sc::ElectronDensity sc::Orbital sc::Shape

Public Member Functions

Gradient Members

These are analogous to the routines that deal with values, but work with gradients instead.

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
 
AccResultRefSCVectorgradient_result ()
 
Hessian Members

These are analogous to the routines that deal with values, but work with the hessian instead.

virtual RefSymmSCMatrix hessian ()
 
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
 
AccResultRefSymmSCMatrixhessian_result ()
 
Members that check whether the desired accuracies were set to the default values.
virtual bool desired_value_accuracy_set_to_default () const
 
virtual bool desired_gradient_accuracy_set_to_default () const
 
virtual bool desired_hessian_accuracy_set_to_default () const
 
virtual void guess_hessian (RefSymmSCMatrix &)
 Compute a quick, approximate hessian.
 
virtual RefSymmSCMatrix inverse_hessian (RefSymmSCMatrix &)
 
Members that check the availability of values, gradients, and hessians.
virtual int value_implemented () const
 
virtual int gradient_implemented () const
 
virtual int hessian_implemented () const
 
virtual void set_x (const RefSCVector &)
 Set and retrieve the coordinate values.
 
RefSCVector get_x () const
 
const RefSCVectorget_x_no_copy () const
 
virtual Ref< NonlinearTransformchange_coordinates ()
 An optimizer can call change coordinates periodically to give the function an opportunity to change its coordinate system. More...
 
virtual void print (std::ostream &=ExEnv::out0()) const
 Print information about the object.
 
void print_desired_accuracy (std::ostream &=ExEnv::out0()) const
 similar to print(), but only prins desired accuracies
 
virtual bool throw_if_tolerance_exceeded () const
 Overridden Compute member.
 
- Public Member Functions inherited from sc::SavableState
SavableStateoperator= (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 &)
 
DescribedClassoperator= (const DescribedClass &)
 
ClassDescclass_desc () const MPQC__NOEXCEPT
 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.
 
Ref< DescribedClassref ()
 Return this object wrapped up in a Ref smart pointer. More...
 
- Public Member Functions inherited from sc::RefCount
size_t identifier () const
 Return the unique identifier for this object that can be compared for different objects of different types. More...
 
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...
 
- Public Member Functions inherited from sc::Compute
virtual void obsolete ()
 Marks all results as being out of date. More...
 

Protected Member Functions

Update Members

Update the various computable results.

virtual void set_value (double)
 
virtual void set_gradient (RefSCVector &)
 
virtual void set_hessian (RefSymmSCMatrix &)
 
virtual void set_matrixkit (const Ref< SCMatrixKit > &)
 Set the SCMatrixKit that should be used to construct the requisite vectors and matrices.
 
virtual void set_dimension (const RefSCDimension &)
 
- 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::RefCount
 RefCount (const RefCount &)
 
RefCountoperator= (const RefCount &)
 
- 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< SCMatrixKitmatrixkit_
 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_.
 
bool desired_value_accuracy_set_to_default_
 
bool desired_gradient_accuracy_set_to_default_
 
bool desired_hessian_accuracy_set_to_default_
 
bool throw_if_tolerance_exceeded_
 

Accuracy Setting Members

Set the accuracies with which the various computables have been computed.

virtual void set_actual_value_accuracy (double)
 
virtual void set_actual_gradient_accuracy (double)
 
virtual void set_actual_hessian_accuracy (double)
 
RefSCVectorget_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.
 
 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...
 
virtual ~Function ()
 
Functionoperator= (const Function &)
 
Ref< SCMatrixKitmatrixkit () const
 Return the SCMatrixKit used to construct vectors and matrices.
 
RefSCDimension dimension () const
 Return the SCDimension of the problem.
 
virtual 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...
 
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...
 
AccResultdoublevalue_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.
 

Additional Inherited Members

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

Detailed Description

The Function class is an abstract base class that, given a set of coordinates, will compute a value and possibly a gradient and hessian at that point.

Constructor & Destructor Documentation

◆ Function()

sc::Function::Function ( const Ref< KeyVal > &  ,
double  funcacc = DBL_EPSILON,
double  gradacc = DBL_EPSILON,
double  hessacc = DBL_EPSILON 
)

The keyval constructor reads the following keywords:

matrixkit

Gives a SCMatrixKit object. If it is not specified, a default SCMatrixKit is selected.

value_accuracy

Sets the accuracy to which values are computed. The default is the machine accuracy.

gradient_accuracy

Sets the accuracy to which gradients are computed. The default is the machine accuracy.

hessian_accuracy

Sets the accuracy to which hessians are computed. The default is the machine accuracy.

throw_if_tolerance_exceeded

If this is true, then an exception will be thrown if a result cannot be computed to the desired accuracy. The default is true.

Member Function Documentation

◆ change_coordinates()

virtual Ref<NonlinearTransform> sc::Function::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 in sc::MolecularEnergy.

◆ do_value()

int sc::Function::do_value ( int  )

If passed a nonzero number, compute the value the next time compute() is called.

Return a nonzero number if the value was previously to be computed.

◆ gradient_implemented()

virtual int sc::Function::gradient_implemented ( ) const
virtual
Returns
1 (gradient implemented, analytically or numerically) or 0 (gradient not implemented, default).

Reimplemented in sc::UnionShape, sc::Uncapped5SphereExclusionShape, sc::MolecularEnergy, sc::ReentrantUncappedTorusHoleShape, sc::NonreentrantUncappedTorusHoleShape, sc::UncappedTorusHoleShape, and sc::SphereShape.

◆ hessian_implemented()

virtual int sc::Function::hessian_implemented ( ) const
virtual
Returns
1 (hessian implemented, analytically or numerically) or 0 (hessian not implemented, default).

Reimplemented in sc::MolecularEnergy.

◆ save_data_state()

◆ value_implemented()

virtual int sc::Function::value_implemented ( ) const
virtual

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

Generated at Sun Jan 26 2020 23:24:05 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.8.16.