Class Scine::Utils::IRCOptimizer¶
-
template<class
OptimizerType
>
classIRCOptimizer
: public Scine::Utils::IRCOptimizerBase¶ A version of the GeometryOptimizer that optimizes along an internal reaction coordinate (IRC).
This optimizer mass-weights the actual gradient in order to optimize in the mass-weighted coordinate system.
- 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
-
IRCOptimizer
(Core::Calculator &calculator)¶ Construct a new IRCOptimizer object.
- Parameters
calculator
: The calculator to be used for the single point/gradient calculations.
-
virtual int
optimize
(AtomCollection &atoms, const Eigen::VectorXd &mode, bool forward = true)¶ See IRCOptimizerBase::optimize().
- Return
int The final number of optimization cycles carried out.
- Parameters
atoms
: The AtomCollection (Geometry) to be optimized.mode
: The mode to follow in the IRC.forward
: A boolean signaling to follow the mode forwards (true, current positions + mode) or backwards (false, current positions - mode)
-
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.
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.