Avogadro::Calc::EnergyCalculator#

class EnergyCalculator : public cppoptlib::Problem<Real>#

Subclassed by LennardJones, UFF

Public Functions

EnergyCalculator() = default#
~EnergyCalculator() override = default#
virtual EnergyCalculator *newInstance() const = 0#

Create a new instance of the model. Ownership passes to the caller.

virtual std::string identifier() const = 0#
Returns:

a unique identifier for this calculator.

virtual std::string name() const = 0#
Returns:

A short translatable name for this method (e.g., MMFF94, UFF, etc.)

virtual std::string description() const = 0#
Returns:

a description of the method

inline virtual bool setConfiguration(Core::VariantMap &config)#

Called to set the configuration (e.g., for a GUI options dialog)

virtual Core::Molecule::ElementMask elements() const = 0#

Indicate if your method only treats a subset of elements.

Returns:

an element mask corresponding to the defined subset

inline virtual bool acceptsUnitCell() const#

Indicate if your method can handle unit cells.

Returns:

true if unit cells are supported

inline virtual bool acceptsIons() const#

Indicate if your method can handle ions Many methods only treat neutral systems, either a neutral molecule or a neutral unit cell.

Returns:

true if ions are supported

inline virtual bool acceptsRadicals() const#

Indicate if your method can handle radicals Most methods only treat closed-shell molecules.

Returns:

true if radicals are supported

void gradient(const TVector &x, TVector &grad) override#

Calculate the gradients for this method, defaulting to numerical finite-difference methods

void cleanGradients(TVector &grad)#

Called to ‘clean’ gradients

Parameters:

grad – (e.g., for constraints)

Real constraintEnergies(const TVector &x)#

Called to get the energies for the current set of constraints. which should be added to the value() method for real energies in derived classes

Returns:

the sum of the constraint energies

void constraintGradients(const TVector &x, TVector &grad)#

Called to get the gradients for the current set of constraints. which should be added to the gradient() method in derived classes.

Parameters:
  • x – the current coordinates

  • grad – the gradient vector to be updated with constraint gradients

std::vector<Core::Constraint> constraints() const#

Called to get the constraints for this method.

Returns:

the constraints for this method

void setConstraints(const std::vector<Core::Constraint> &constraints)#
inline void setMask(TVector mask)#

Called to update the “frozen” mask (e.g., during editing)

inline TVector mask() const#
Returns:

the frozen atoms mask

virtual void setMolecule(Core::Molecule *mol) = 0#

Called when the current molecule changes.

Protected Functions

void appendError(const std::string &errorString, bool newLine = true) const#

Append an error to the error string for the model.

Parameters:
  • errorString – The error to be added.

  • newLine – Add a new line after the error string?

Protected Attributes

TVector m_mask#
std::vector<Core::Constraint> m_distanceConstraints#
std::vector<Core::Constraint> m_angleConstraints#
std::vector<Core::Constraint> m_torsionConstraints#
std::vector<Core::Constraint> m_outOfPlaneConstraints#