Avogadro::Calc::EnergyManager#
-
class EnergyManager#
Class to manage registration, searching and creation of force field (energy) calculators.
<avogadro/calc/energymanager.h>
The energy manager is a singleton class that handles the runtime registration, search, creation and eventual destruction of calculators for geometry optimization and molecular dynamics. It can be used to gain a listing of available models, register new models, etc.
- Author
Geoffrey R. Hutchison
All energy calculation can take place independent of this code, but for automated registration and look up, this is the preferred API.
Public Functions
-
bool addModel(EnergyCalculator *model)#
Add the supplied
modelto the manager, registering its ID and other relevant data for later lookup. The manager assumes ownership of the supplied object.- Returns:
True on success, false on failure.
-
bool removeModel(const std::string &identifier)#
Remove the model with the identifier identifier from the manager.
- Returns:
True on success, false on failure.
-
EnergyCalculator *model(const std::string &identifier) const#
New instance of the model for the specified
identifier. Ownership is passed to the caller.- Parameters:
identifier – The unique identifier of the model.
- Returns:
Instance of the model, nullptr if not found. Ownership passes to the caller.
-
std::set<std::string> identifiers() const#
Get a list of all loaded identifiers
-
std::set<std::string> identifiersForMolecule(const Core::Molecule &molecule) const#
Get a list of models that work for this molecule.
This is probably the method you want to get a list for a user
-
std::string recommendedModel(const Core::Molecule &molecule) const#
Get a recommended model for this molecule.
This returns the identifier for a model that works, given the charge, unit cell, spin states, etc.
Only the built-in models (GAFF, MMFF94, UFF, LJ) are ever recommended, in that order of preference. Plugin / user-installed models are never auto-selected, even if compatible with the molecule: they typically run as external processes (so can be slow to start and less robust), and when several are installed there is no principled way to rank them against each other, so the user must choose one explicitly.
- Returns:
The recommended model identifier
-
std::string nameForModel(const std::string &identifier) const#
Get the name of the model for the specified identifier.
The name is a user-visible string, and may be translated.
- Parameters:
identifier – The unique identifier of the model.
- Returns:
The name of the model, or an empty string if not found.
-
inline std::string error() const#
Get any errors that have been logged when loading models.
Public Static Functions
-
static EnergyManager &instance()#
Get the singleton instance of the energy manager. This instance should not be deleted.
-
static bool registerModel(EnergyCalculator *model)#
Register a new model with the manager.
- Parameters:
model – An instance of the calculator to manage, the manager assumes ownership of the object passed in.
- Returns:
True on success, false on failure.
-
static bool unregisterModel(const std::string &identifier)#
Unregister a charge model from the manager.
- Parameters:
identifier – The identifier for the model to remove.
- Returns:
True on success, false on failure.