File GeometryOptimizer.h¶
- Copyright
This code is licensed under the 3-clause BSD license.
Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.
See LICENSE.txt for details.
-
namespace
Scine
This header file contains functions that allow for common notation for common things that can be done at a different degree of derivatives.
This header contains alias definitions defining which classes to use for the different degrees of derivatives.
-
namespace
Utils
-
class
GeometryOptimizerBase
- #include <GeometryOptimizer.h>
The base class for all Geometry optimizers.
The purpose of the geometry optimizers is to wrap technical details needed for the actual optimization into a class that is easily used and has a small set of data needed in its constructor, is mainly configured via its settings, and then exposes the optimization through a simple function accepting a geometry (AtomCollection)
The main purpose of this base class is to hide the template parameter(s) of the derived class(es).
Subclassed by Scine::Utils::GeometryOptimizer< OptimizerType >
Public Functions
-
GeometryOptimizerBase
() Default constructor.
-
virtual
~GeometryOptimizerBase
() Virtual default destructor.
-
virtual int
optimize
(AtomCollection &atoms) = 0 The main functionality of the geometry optimizer.
This function wraps the optimize functions of the underlying optimizer.
- Return
int The final number of optimization cycles carried out.
- Parameters
atoms
: The AtomCollection (Geometry) to be optimized.
-
virtual void
setSettings
(const Settings &settings) = 0 Function to apply the given settings to underlying classes.
- Parameters
settings
: The new settings.
-
virtual Settings
getSettings
() const = 0 Get the public settings as a Utils::Settings object.
- Return
Settings A settings object with the current settings.
-
virtual void
addObserver
(std::function<void(const int&, const double&, const Eigen::VectorXd&)> function) = 0 Add an observer function that will be triggered in each iteration.
- Parameters
function
: A function to be executed in every loop of the optimization. The function will have access to the current cycle count, the current value and to a const reference of the current parameters.
-
virtual void
clearObservers
() = 0 Clear all existing observer functions.
For optimization problems with very fast evaluations of the underlying function the removal of all observers can increase performance as the observers are given as std::functions and can not be added via templates.
Public Members
-
bool
transformCoordinates
= true Switch to transform the coordinates from Cartesian into an internal space.
The optimization will be carried out in the internal coordinate space possibly accellerating convergence.
Public Static Attributes
-
constexpr const char *
geooptTransfromCoordinatesKey
= "geoopt_transfrom_coordinates"¶
-
-
template<class
OptimizerType
, classConvergenceCheckType
>
classGeometryOptimizerSettings
: public Scine::Utils::Settings - #include <GeometryOptimizer.h>
Settings for a GeometryOptimizer.
Uses template arguments in order to automatically include the settings of underlying objects into the given settings.
- Template Parameters
OptimizerType
: The underlying Optimizer class.ConvergenceCheckType
: The underlying ConvergenceCheck class.
Public Functions
-
GeometryOptimizerSettings
(const GeometryOptimizerBase &base, const OptimizerType &optimizer, const ConvergenceCheckType &check) Construct a new GeometryOptimizerSettings object.
Sets the default values of the settings to the current values set in the objects given to the constructor.
- Parameters
base
: The geometry optimizer.optimizer
: The optimizer.check
: The convergence check criteria.
-
template<class
OptimizerType
>
classGeometryOptimizer
: public Scine::Utils::GeometryOptimizerBase - #include <GeometryOptimizer.h>
Basically just a templated version of the base class GeometryOptimizerBase, where the template defines the actual optimizer used in the geometry optimization.
- Template Parameters
OptimizerType
: Expects any of the Optimizer classes. Note that some special optimizers may not yet be supported or may need additional specialization.
Public Functions
-
GeometryOptimizer
(Core::Calculator &calculator) Construct a new GeometryOptimizer object.
- Parameters
calculator
: The calculator to be used for the single point/gradient calculations.
-
virtual int
optimize
(AtomCollection &atoms) See GeometryOptimizerBase::optimize().
- Return
int The final number of optimization cycles carried out.
- Parameters
atoms
: The AtomCollection (Geometry) to be optimized.
-
virtual void
setSettings
(const Settings &settings) Function to apply the given settings to underlying classes.
- Parameters
settings
: The new settings.
-
virtual Settings
getSettings
() const Get the public settings as a Utils::Settings object.
- Return
Settings A settings object with the current settings.
-
virtual void
addObserver
(std::function<void(const int&, const double&, const Eigen::VectorXd&)> function) Add an observer function that will be triggered in each iteration.
- Parameters
function
: A function to be executed in every loop of the optimization. The function will have access to the current cycle count, the current value and to a const reference of the current parameters.
-
virtual void
clearObservers
() Clear all existing observer functions.
For optimization problems with very fast evaluations of the underlying function the removal of all observers can increase performance as the observers are given as std::functions and can not be added via templates.
-
template<>
intoptimize
(AtomCollection &atoms) The main functionality of the geometry optimizer.
This function wraps the optimize functions of the underlying optimizer.
- Return
int The final number of optimization cycles carried out.
- Parameters
atoms
: The AtomCollection (Geometry) to be optimized.
-
template<>
intoptimize
(AtomCollection &atoms) The main functionality of the geometry optimizer.
This function wraps the optimize functions of the underlying optimizer.
- Return
int The final number of optimization cycles carried out.
- Parameters
atoms
: The AtomCollection (Geometry) to be optimized.
Public Members
-
OptimizerType
optimizer
The underlying optimizer, public in order to change it’s settings.
-
GradientBasedCheck
check
The underlying convergence check, public in order to change it’s settings.
Private Members
-
Core::Calculator &
_calculator
¶
-
class
-
namespace