Gromacs
2021.3
|
The modular simulator improves extensibility, adds Monte Carlo capabilities, promotes data locality and communication via interfaces, supports multi-stepping integrators, and paves the way for some task parallelism.
For more information, see page_modularsimulator
docs/doxygen/lib/modularsimulator.md
?Classes | |
struct | gmx::IsSerializableType< T > |
Struct allowing to check if data is serializable through the KeyValueTree serializer. More... | |
struct | gmx::IsSerializableEnum< T, bool > |
Struct allowing to check if enum has a serializable underlying type. More... | |
class | gmx::CheckpointData< operation > |
} More... | |
struct | gmx::test::anonymous_namespace{checkpointdata.cpp}::IsVectorOfSerializableType< T > |
Struct allowing to check if type is vector of serializable data. More... | |
class | gmx::CheckpointHelper |
Checkpoint helper. More... | |
class | gmx::CheckpointHelperBuilder |
Builder for the checkpoint helper. More... | |
class | gmx::CompositeSimulatorElement |
Composite simulator element. More... | |
class | gmx::ComputeGlobalsElement< algorithm > |
Encapsulate the calls to compute_globals More... | |
class | gmx::ConstraintsElement< variable > |
Constraints element. More... | |
class | gmx::DomDecHelper |
Infrastructure element responsible for domain decomposition. More... | |
class | gmx::EnergyData |
Data class managing energies. More... | |
class | gmx::EnergyData::Element |
Element for EnergyData. More... | |
class | gmx::ForceElement |
Force element. More... | |
class | gmx::FreeEnergyPerturbationData |
The free energy perturbation data. More... | |
class | gmx::ModularSimulator |
The modular simulator. More... | |
class | gmx::ISimulatorElement |
The general interface for elements of the modular simulator. More... | |
class | gmx::ISignaller |
The general Signaller interface. More... | |
class | gmx::INeighborSearchSignallerClient |
Interface for clients of the NeighborSearchSignaller. More... | |
class | gmx::ILastStepSignallerClient |
Interface for clients of the LastStepSignaller. More... | |
class | gmx::ILoggingSignallerClient |
Interface for clients of the LoggingSignaller. More... | |
class | gmx::IEnergySignallerClient |
Interface for clients of the EnergySignaller. More... | |
class | gmx::ITrajectorySignallerClient |
Interface for signaller clients of the TrajectoryElement. More... | |
class | gmx::ITrajectoryWriterClient |
Interface for writer clients of the TrajectoryElement. More... | |
class | gmx::ITopologyHolderClient |
Client requiring read access to the local topology. More... | |
class | gmx::ICheckpointHelperClient |
Client that needs to store data during checkpointing. More... | |
class | gmx::ElementNotFoundError |
Exception class signalling that a requested element was not found. More... | |
class | gmx::MissingElementConnectionError |
Exception class signalling that elements were not connected properly. More... | |
class | gmx::SimulationAlgorithmSetupError |
Exception class signalling that the ModularSimulatorAlgorithm was set up in an incompatible way. More... | |
class | gmx::CheckpointError |
Exception class signalling an error in reading or writing modular checkpoints. More... | |
struct | gmx::PropagatorThermostatConnection |
Information needed to connect a propagator to a thermostat. More... | |
struct | gmx::PropagatorBarostatConnection |
Information needed to connect a propagator to a barostat. More... | |
class | gmx::ParrinelloRahmanBarostat |
Element implementing the Parrinello-Rahman barostat. More... | |
class | gmx::PmeLoadBalanceHelper |
Infrastructure element responsible for PME load balancing. More... | |
class | gmx::Propagator< algorithm > |
Propagator element. More... | |
class | gmx::SignallerBuilder< Signaller > |
Builder for signallers. More... | |
class | gmx::NeighborSearchSignaller |
Element signalling a neighbor search step. More... | |
class | gmx::LastStepSignaller |
Element signalling the last step. More... | |
class | gmx::LoggingSignaller |
Element signalling a logging step. More... | |
class | gmx::TrajectorySignaller |
Element signalling trajectory writing. More... | |
class | gmx::EnergySignaller |
Element signalling energy related special steps. More... | |
class | gmx::ModularSimulatorAlgorithm |
The modular simulator. More... | |
class | gmx::StatePropagatorData |
StatePropagatorData and associated data. More... | |
class | gmx::TopologyHolder |
Object holding the topology. More... | |
class | gmx::TopologyHolder::Builder |
Builder for the topology holder. More... | |
class | gmx::TrajectoryElement |
Trajectory element signals and handles trajectory writing. More... | |
class | gmx::TrajectoryElementBuilder |
Build the TrajectoryElement More... | |
class | gmx::VelocityScalingTemperatureCoupling |
Element implementing the a velocity-scaling thermostat. More... | |
Typedefs | |
typedef std::function< void()> | gmx::CheckBondedInteractionsCallback |
The function type allowing to request a check of the number of bonded interactions. | |
using | gmx::Step = int64_t |
Step number. | |
using | gmx::Time = double |
Simulation time. | |
typedef std::function< void()> | gmx::SimulatorRunFunction |
The function type that can be scheduled to be run during the simulator run. | |
typedef std::function< void(SimulatorRunFunction)> | gmx::RegisterRunFunction |
The function type that allows to register run functions. | |
typedef std::function< void(Step, Time)> | gmx::SignallerCallback |
The function type that can be registered to signallers for callback. | |
typedef std::function< void(gmx_mdoutf *, Step, Time, bool, bool)> | gmx::ITrajectoryWriterCallback |
Function type for trajectory writing clients. | |
typedef std::function< void(Step)> | gmx::PropagatorCallback |
Generic callback to the propagator. | |
Enumerations | |
enum | gmx::CheckpointDataOperation { Read, Write, Count } |
The operations on CheckpointData. More... | |
enum | gmx::ComputeGlobalsAlgorithm { LeapFrog, VelocityVerlet } |
The different global reduction schemes we know about. | |
enum | gmx::EnergySignallerEvent { EnergyCalculationStep, VirialCalculationStep, FreeEnergyCalculationStep } |
The energy events signalled by the EnergySignaller. | |
enum | gmx::TrajectoryEvent { StateWritingStep, EnergyWritingStep } |
The trajectory writing events. | |
enum | gmx::ModularSimulatorBuilderState { AcceptingClientRegistrations, NotAcceptingClientRegistrations } |
Enum allowing builders to store whether they can accept client registrations. | |
enum | gmx::RegisterWithThermostat { True, False } |
Whether built propagator should be registered with thermostat. | |
enum | gmx::RegisterWithBarostat { True, False } |
Whether built propagator should be registered with barostat. | |
enum | gmx::IntegrationStep { PositionsOnly, VelocitiesOnly, LeapFrog, VelocityVerletPositionsAndVelocities, Count } |
The different integration types we know about. More... | |
enum | gmx::NumVelocityScalingValues { gmx::NumVelocityScalingValues::None, gmx::NumVelocityScalingValues::Single, gmx::NumVelocityScalingValues::Multiple, Count } |
Sets the number of different velocity scaling values. More... | |
enum | gmx::ParrinelloRahmanVelocityScaling { gmx::ParrinelloRahmanVelocityScaling::No, gmx::ParrinelloRahmanVelocityScaling::Diagonal, gmx::ParrinelloRahmanVelocityScaling::Full, Count } |
Sets the type of Parrinello-Rahman pressure scaling. More... | |
Functions | |
template<CheckpointDataOperation operation, typename T > | |
ArrayRef< std::conditional_t < operation==CheckpointDataOperation::Write||std::is_const < T >::value, const typename T::value_type, typename T::value_type > > | gmx::makeCheckpointArrayRef (T &container) |
Get an ArrayRef whose const-ness is defined by the checkpointing operation. More... | |
template<typename... Ts> | |
auto | gmx::checkUseModularSimulator (Ts &&...args) -> decltype(ModularSimulator::isInputCompatible(std::forward< Ts >(args)...)) |
Whether or not to use the ModularSimulator. More... | |
virtual void | gmx::ISimulatorElement::scheduleTask (Step, Time, const RegisterRunFunction &)=0 |
Query whether element wants to run at step / time. More... | |
virtual void | gmx::ISimulatorElement::elementSetup ()=0 |
Method guaranteed to be called after construction, before simulator run. | |
virtual void | gmx::ISimulatorElement::elementTeardown ()=0 |
Method guaranteed to be called after simulator run, before deconstruction. | |
virtual | gmx::ISimulatorElement::~ISimulatorElement ()=default |
Standard virtual destructor. | |
virtual void | gmx::ISignaller::signal (Step, Time)=0 |
Function run before every step of scheduling. | |
virtual void | gmx::ISignaller::setup ()=0 |
Method guaranteed to be called after construction, before simulator run. | |
virtual | gmx::ISignaller::~ISignaller ()=default |
Standard virtual destructor. | |
virtual | gmx::INeighborSearchSignallerClient::~INeighborSearchSignallerClient ()=default |
Standard virtual destructor. | |
virtual std::optional < SignallerCallback > | gmx::INeighborSearchSignallerClient::registerNSCallback ()=0 |
Return callback to NeighborSearchSignaller. | |
virtual | gmx::ILastStepSignallerClient::~ILastStepSignallerClient ()=default |
Standard virtual destructor. | |
virtual std::optional < SignallerCallback > | gmx::ILastStepSignallerClient::registerLastStepCallback ()=0 |
Return callback to LastStepSignaller. | |
virtual | gmx::ILoggingSignallerClient::~ILoggingSignallerClient ()=default |
Standard virtual destructor. | |
virtual std::optional < SignallerCallback > | gmx::ILoggingSignallerClient::registerLoggingCallback ()=0 |
Return callback to LoggingSignaller. | |
virtual | gmx::IEnergySignallerClient::~IEnergySignallerClient ()=default |
Standard virtual destructor. | |
virtual std::optional < SignallerCallback > | gmx::IEnergySignallerClient::registerEnergyCallback (EnergySignallerEvent)=0 |
Return callback to EnergySignaller. | |
virtual | gmx::ITrajectorySignallerClient::~ITrajectorySignallerClient ()=default |
Standard virtual destructor. | |
virtual std::optional < SignallerCallback > | gmx::ITrajectorySignallerClient::registerTrajectorySignallerCallback (TrajectoryEvent)=0 |
Return callback to TrajectoryElement. | |
virtual | gmx::ITrajectoryWriterClient::~ITrajectoryWriterClient ()=default |
Standard virtual destructor. | |
virtual void | gmx::ITrajectoryWriterClient::trajectoryWriterSetup (gmx_mdoutf *outf)=0 |
Setup method with valid output pointer. | |
virtual void | gmx::ITrajectoryWriterClient::trajectoryWriterTeardown (gmx_mdoutf *outf)=0 |
Teardown method with valid output pointer. | |
virtual std::optional < ITrajectoryWriterCallback > | gmx::ITrajectoryWriterClient::registerTrajectoryWriterCallback (TrajectoryEvent)=0 |
Return callback to TrajectoryElement. | |
virtual | gmx::ITopologyHolderClient::~ITopologyHolderClient ()=default |
Standard virtual destructor. | |
virtual void | gmx::ITopologyHolderClient::setTopology (const gmx_localtop_t *)=0 |
Pass pointer to new local topology. | |
virtual | gmx::ICheckpointHelperClient::~ICheckpointHelperClient ()=default |
Standard virtual destructor. | |
virtual void | gmx::ICheckpointHelperClient::saveCheckpointState (std::optional< WriteCheckpointData > checkpointData, const t_commrec *cr)=0 |
Write checkpoint (CheckpointData object only passed on master rank) | |
virtual void | gmx::ICheckpointHelperClient::restoreCheckpointState (std::optional< ReadCheckpointData > checkpointData, const t_commrec *cr)=0 |
Read checkpoint (CheckpointData object only passed on master rank) | |
virtual const std::string & | gmx::ICheckpointHelperClient::clientID ()=0 |
Get unique client id. | |
gmx::ElementNotFoundError::ElementNotFoundError (const ExceptionInitializer &details) | |
Creates an exception object with the provided initializer/reason. More... | |
gmx::MissingElementConnectionError::MissingElementConnectionError (const ExceptionInitializer &details) | |
Creates an exception object with the provided initializer/reason. More... | |
gmx::SimulationAlgorithmSetupError::SimulationAlgorithmSetupError (const ExceptionInitializer &details) | |
Creates an exception object with the provided initializer/reason. More... | |
gmx::CheckpointError::CheckpointError (const ExceptionInitializer &details) | |
Creates an exception object with the provided initializer/reason. More... | |
Variables | |
std::function< void(int)> | gmx::PropagatorThermostatConnection::setNumVelocityScalingVariables |
Function variable for setting velocity scaling variables. | |
std::function< ArrayRef< real >)> | gmx::PropagatorThermostatConnection::getViewOnVelocityScaling |
Function variable for receiving view on velocity scaling. | |
std::function < PropagatorCallback()> | gmx::PropagatorThermostatConnection::getVelocityScalingCallback |
Function variable for callback. | |
std::function< ArrayRef< rvec >)> | gmx::PropagatorBarostatConnection::getViewOnPRScalingMatrix |
Function variable for receiving view on pressure scaling matrix. | |
std::function < PropagatorCallback()> | gmx::PropagatorBarostatConnection::getPRScalingCallback |
Function variable for callback. | |
Files | |
file | checkpointhelper.cpp |
Defines the checkpoint helper for the modular simulator. | |
file | checkpointhelper.h |
Declares the checkpoint helper for the modular simulator. | |
file | compositesimulatorelement.cpp |
Defines the composite element for the modular simulator. | |
file | compositesimulatorelement.h |
Declares the composite element for the modular simulator. | |
file | computeglobalselement.cpp |
Defines the global reduction element for the modular simulator. | |
file | computeglobalselement.h |
Declares the global reduction element for the modular simulator. | |
file | constraintelement.cpp |
Defines the constraint element for the modular simulator. | |
file | constraintelement.h |
Declares the constraint element for the modular simulator. | |
file | domdechelper.cpp |
Defines the domain decomposition helper for the modular simulator. | |
file | domdechelper.h |
Declares the domain decomposition helper for the modular simulator. | |
file | energydata.cpp |
Defines the microstate for the modular simulator. | |
file | energydata.h |
Declares the energy element for the modular simulator. | |
file | forceelement.cpp |
Defines the force element for the modular simulator. | |
file | forceelement.h |
Declares the force element for the modular simulator. | |
file | freeenergyperturbationdata.cpp |
Defines the free energy perturbation element for the modular simulator. | |
file | freeenergyperturbationdata.h |
Declares the free energy perturbation element for the modular simulator. | |
file | modularsimulator.cpp |
Defines the modular simulator. | |
file | modularsimulator.h |
Provides the modular simulator. | |
file | modularsimulatorinterfaces.h |
Declares the main interfaces used by the modular simulator. | |
file | parrinellorahmanbarostat.cpp |
Defines the Parrinello-Rahman barostat for the modular simulator. | |
file | parrinellorahmanbarostat.h |
Declares the Parrinello-Rahman barostat for the modular simulator. | |
file | pmeloadbalancehelper.cpp |
Declares the PME load balancing helper for the modular simulator. | |
file | pmeloadbalancehelper.h |
Declares the PME load balancing helper for the modular simulator. | |
file | propagator.cpp |
Defines the propagator element for the modular simulator. | |
file | propagator.h |
Declares the propagator element for the modular simulator. | |
file | signallers.cpp |
Defines the signallers for the modular simulator. | |
file | signallers.h |
Declares the signallers for the modular simulator. | |
file | simulatoralgorithm.cpp |
Defines the modular simulator algorithm. | |
file | simulatoralgorithm.h |
Provides the modular simulator algorithm. | |
file | statepropagatordata.cpp |
Defines the state for the modular simulator. | |
file | statepropagatordata.h |
Declares the state for the modular simulator. | |
file | topologyholder.cpp |
Defines the topology class for the modular simulator. | |
file | topologyholder.h |
Declares the topology class for the modular simulator. | |
file | trajectoryelement.cpp |
Defines the trajectory element for the modular simulator. | |
file | trajectoryelement.h |
Declares the trajectory element for the modular simulator. | |
file | velocityscalingtemperaturecoupling.cpp |
Defines a velocity-scaling temperature coupling element for the modular simulator. | |
file | velocityscalingtemperaturecoupling.h |
Declares a velocity-scaling temperature coupling element for the modular simulator. | |
|
strong |
The operations on CheckpointData.
This enum defines the two modes of operation on CheckpointData objects, reading and writing. This allows to template all access functions, which in turn enables clients to write a single function for read and write access, eliminating the risk of having read and write functions getting out of sync.
|
strong |
The different integration types we know about.
PositionsOnly: Moves the position vector by the given time step VelocitiesOnly: Moves the velocity vector by the given time step LeapFrog: Is a manual fusion of the previous two propagators VelocityVerletPositionsAndVelocities: Is a manual fusion of VelocitiesOnly and PositionsOnly, where VelocitiesOnly is only propagated by half the time step of the positions.
|
strong |
|
strong |
|
inlineexplicit |
Creates an exception object with the provided initializer/reason.
[in] | details | Initializer for the exception. |
std::bad_alloc | if out of memory. |
It is possible to call this constructor either with an explicit ExceptionInitializer object (useful for more complex cases), or a simple string if only a reason string needs to be provided.
auto gmx::checkUseModularSimulator | ( | Ts &&... | args | ) | -> decltype(ModularSimulator::isInputCompatible(std::forward<Ts>(args)...)) |
Whether or not to use the ModularSimulator.
GMX_DISABLE_MODULAR_SIMULATOR environment variable allows to disable modular simulator for all uses.
See ModularSimulator::isInputCompatible() for function signature.
|
inlineexplicit |
Creates an exception object with the provided initializer/reason.
[in] | details | Initializer for the exception. |
std::bad_alloc | if out of memory. |
It is possible to call this constructor either with an explicit ExceptionInitializer object (useful for more complex cases), or a simple string if only a reason string needs to be provided.
ArrayRef<std::conditional_t<operation == CheckpointDataOperation::Write || std::is_const<T>::value, const typename T::value_type, typename T::value_type> > gmx::makeCheckpointArrayRef | ( | T & | container | ) |
|
inlineexplicit |
Creates an exception object with the provided initializer/reason.
[in] | details | Initializer for the exception. |
std::bad_alloc | if out of memory. |
It is possible to call this constructor either with an explicit ExceptionInitializer object (useful for more complex cases), or a simple string if only a reason string needs to be provided.
|
pure virtual |
Query whether element wants to run at step / time.
Element can register one or more functions to be run at that step through the registration pointer.
Implemented in gmx::EnergyData::Element, gmx::StatePropagatorData::Element, gmx::Propagator< algorithm >, gmx::FreeEnergyPerturbationData::Element, gmx::ComputeGlobalsElement< algorithm >, gmx::CheckpointHelper, gmx::ForceElement, gmx::VelocityScalingTemperatureCoupling, gmx::TrajectoryElement, gmx::ConstraintsElement< variable >, gmx::ParrinelloRahmanBarostat, and gmx::CompositeSimulatorElement.
|
inlineexplicit |
Creates an exception object with the provided initializer/reason.
[in] | details | Initializer for the exception. |
std::bad_alloc | if out of memory. |
It is possible to call this constructor either with an explicit ExceptionInitializer object (useful for more complex cases), or a simple string if only a reason string needs to be provided.