Gromacs  2025-dev-20241002-88a4191
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Typedefs | Enumerations | Functions | Variables | Files
+ Collaboration diagram for The modular simulator:

Description

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

Todo:
Can we link to docs/doxygen/lib/modularsimulator.md?
Author
Pascal Merz pasca.nosp@m.l.me.nosp@m.rz@me.nosp@m..com

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::AndersenTemperatureCoupling
 Element implementing the Andersen thermostat. 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::DomDecHelperBuilder
 Builder for DomDecHelper. More...
 
class  gmx::EnergyData
 Data class managing energies. More...
 
class  gmx::EnergyData::Element
 Element for EnergyData. More...
 
class  gmx::ExpandedEnsembleElement
 The expanded ensemble element. More...
 
class  gmx::ForceElement
 Force element. More...
 
class  gmx::FreeEnergyPerturbationData
 The free energy perturbation data. More...
 
class  gmx::FepStateSetting
 Allows external clients to specify how to change the FEP state. 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::PropagatorTag
 Strong type used to name propagators. More...
 
struct  gmx::TimeStep
 Strong type used to denote propagation time steps. More...
 
struct  gmx::Offset
 Strong type used to denote scheduling offsets. More...
 
struct  gmx::PropagatorConnection
 Information needed to connect a propagator to a temperature and / or pressure coupling element. More...
 
class  gmx::IDomDecHelperClient
 Client interface of the DomDecHelper class. 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< integrationStage >
 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, const
RegisterRunFunction &)> 
gmx::SchedulingFunction
 The function type scheduling run functions for a step / time using a RegisterRunFunction reference.
 
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.
 
typedef std::function< void()> gmx::DomDecCallback
 Callback used by the DomDecHelper object to inform clients about system re-partitioning.
 
using gmx::ReferenceTemperatureCallback = std::function< void(ArrayRef< const real >, ReferenceTemperatureChangeAlgorithm algorithm)>
 Callback updating the reference temperature.
 

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::ReportPreviousStepConservedEnergy { Yes, No, Count }
 Enum describing whether an element is reporting conserved energy from the previous step.
 
enum  gmx::ScaleVelocities { PreStepOnly, PreStepAndPostStep }
 Which velocities the thermostat scales.
 
enum  gmx::IntegrationStage {
  gmx::IntegrationStage::PositionsOnly, gmx::IntegrationStage::VelocitiesOnly, gmx::IntegrationStage::LeapFrog, gmx::IntegrationStage::VelocityVerletPositionsAndVelocities,
  gmx::IntegrationStage::ScaleVelocities, gmx::IntegrationStage::ScalePositions, gmx::IntegrationStage::Count
}
 The different integration types we know about. More...
 
enum  gmx::NumPositionScalingValues { gmx::NumPositionScalingValues::None, gmx::NumPositionScalingValues::Single, gmx::NumPositionScalingValues::Multiple, gmx::NumPositionScalingValues::Count }
 Sets the number of different position scaling values. 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::Anisotropic, Count }
 Describes the properties of the Parrinello-Rahman pressure scaling matrix. 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<CheckpointDataOperation operation, typename T >
ArrayRef< std::conditional_t
< operation==CheckpointDataOperation::Write||std::is_const
< T >::value, const T, T > > 
gmx::makeCheckpointArrayRefFromArray (T *begin, size_t size)
 Get an ArrayRef to a C array 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 main rank)
 
virtual void gmx::ICheckpointHelperClient::restoreCheckpointState (std::optional< ReadCheckpointData > checkpointData, const t_commrec *cr)=0
 Read checkpoint (CheckpointData object only passed on main 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...
 
 gmx::PropagatorTag::PropagatorTag (std::string_view name)
 Explicit constructor.
 
 gmx::PropagatorTag::operator const std::string & () const
 Can be used as string.
 
bool gmx::PropagatorTag::operator== (const PropagatorTag &other) const
 Equality operator.
 
bool gmx::PropagatorTag::operator!= (const PropagatorTag &other) const
 Inequality operator.
 
 gmx::TimeStep::TimeStep (real timeStep)
 Explicit constructor.
 
 gmx::TimeStep::operator const real & () const
 Can be used as underlying type.
 
 gmx::Offset::Offset (int offset)
 Explicit constructor.
 
 gmx::Offset::operator const int & () const
 Can be used as underlying type.
 
bool gmx::PropagatorConnection::hasStartVelocityScaling () const
 Whether the propagator offers start velocity scaling.
 
bool gmx::PropagatorConnection::hasEndVelocityScaling () const
 Whether the propagator offers end velocity scaling.
 
bool gmx::PropagatorConnection::hasPositionScaling () const
 Whether the propagator offers position scaling.
 
bool gmx::PropagatorConnection::hasParrinelloRahmanScaling () const
 Whether the propagator offers Parrinello-Rahman scaling.
 
virtual gmx::IDomDecHelperClient::~IDomDecHelperClient ()=default
 Standard virtual destructor.
 
virtual DomDecCallback gmx::IDomDecHelperClient::registerDomDecCallback ()=0
 Register function to be informed about system re-partitioning.
 

Variables

PropagatorTag gmx::PropagatorConnection::tag
 The tag of the creating propagator.
 
std::function< void(int,
ScaleVelocities)> 
gmx::PropagatorConnection::setNumVelocityScalingVariables
 Function object for setting velocity scaling variables.
 
std::function< void(int)> gmx::PropagatorConnection::setNumPositionScalingVariables
 Function object for setting velocity scaling variables.
 
std::function< ArrayRef< real >)> gmx::PropagatorConnection::getViewOnStartVelocityScaling
 Function object for receiving view on velocity scaling (before step)
 
std::function< ArrayRef< real >)> gmx::PropagatorConnection::getViewOnEndVelocityScaling
 Function object for receiving view on velocity scaling (after step)
 
std::function< ArrayRef< real >)> gmx::PropagatorConnection::getViewOnPositionScaling
 Function object for receiving view on position scaling.
 
std::function
< PropagatorCallback()> 
gmx::PropagatorConnection::getVelocityScalingCallback
 Function object to request callback allowing to signal a velocity scaling step.
 
std::function
< PropagatorCallback()> 
gmx::PropagatorConnection::getPositionScalingCallback
 Function object to request callback allowing to signal a position scaling step.
 
std::function< Matrix3x3 *()> gmx::PropagatorConnection::getViewOnPRScalingMatrix
 Function object for receiving view on pressure scaling matrix.
 
std::function
< PropagatorCallback()> 
gmx::PropagatorConnection::getPRScalingCallback
 Function object to request callback allowing to signal a Parrinello-Rahman scaling step.
 

Files

file  andersentemperaturecoupling.cpp
 Defines Andersen temperature coupling for the modular simulator.
 
file  andersentemperaturecoupling.h
 Declares Andersen temperature coupling for the modular simulator.
 
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  expandedensembleelement.cpp
 Defines the expanded ensemble element for the modular simulator.
 
file  expandedensembleelement.h
 Declares the expanded ensemble element for the modular simulator.
 
file  firstorderpressurecoupling.cpp
 Defines the element performing first-order pressure coupling for the modular simulator.
 
file  firstorderpressurecoupling.h
 Declares the element performing first-order pressure coupling 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  mttk.cpp
 Defines classes related to MTTK pressure coupling.
 
file  mttk.h
 Declares classes related to MTTK pressure coupling.
 
file  nosehooverchains.cpp
 Defines classes related to Nose-Hoover chains for the modular simulator.
 
file  nosehooverchains.h
 Declares classes related to Nose-Hoover chains for 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  pullelement.cpp
 Defines the pull element for the modular simulator.
 
file  pullelement.h
 Declares the pull element for the modular simulator.
 
file  referencetemperaturemanager.cpp
 Defines the a helper struct managing reference temperature changes.
 
file  referencetemperaturemanager.h
 Declares the a helper struct managing reference temperature changes.
 
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  trotterhelperfunctions.h
 Defines helper functions used by the Trotter decomposition algorithms (Nose-Hoover chains, MTTK)
 
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.
 

Enumeration Type Documentation

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.

enum gmx::IntegrationStage
strong

The different integration types we know about.

Enumerator
PositionsOnly 

Moves the position vector by the given time step.

VelocitiesOnly 

Moves the velocity vector by the given time step.

LeapFrog 

Manual fusion of the previous two propagators.

VelocityVerletPositionsAndVelocities 

Manual position (full dt) and velocity (half dt) fusion.

ScaleVelocities 

Only scale velocities, don't propagate.

ScalePositions 

Only scale positions, don't propagate.

Count 

The number of enum entries.

Sets the number of different position scaling values.

Enumerator
None 

No position scaling (either this step or ever)

Single 

Single scaling value (either one group or all values =1)

Multiple 

Multiple scaling values, need to use T-group indices.

Count 

The number of enum entries.

Sets the number of different velocity scaling values.

Enumerator
None 

No velocity scaling (either this step or ever)

Single 

Single T-scaling value (either one group or all values =1)

Multiple 

Multiple T-scaling values, need to use T-group indices.

Describes the properties of the Parrinello-Rahman pressure scaling matrix.

Enumerator
No 

Do not apply velocity scaling (not a PR-coupling run or step)

Diagonal 

Apply velocity scaling using a diagonal matrix.

Anisotropic 

Apply velocity scaling using a matrix with off-diagonal elements.

Function Documentation

gmx::CheckpointError::CheckpointError ( const ExceptionInitializer details)
inlineexplicit

Creates an exception object with the provided initializer/reason.

Parameters
[in]detailsInitializer for the exception.
Exceptions
std::bad_allocif 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.

template<typename... Ts>
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.

gmx::ElementNotFoundError::ElementNotFoundError ( const ExceptionInitializer details)
inlineexplicit

Creates an exception object with the provided initializer/reason.

Parameters
[in]detailsInitializer for the exception.
Exceptions
std::bad_allocif 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.

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.

Template Parameters
operationWhether we are reading or writing
TThe type of values stored in the ArrayRef
Parameters
containerThe container the ArrayRef is referencing to
Returns
The ArrayRef
See Also
ArrayRef
template<CheckpointDataOperation operation, typename T >
ArrayRef<std::conditional_t<operation == CheckpointDataOperation::Write || std::is_const<T>::value, const T, T> > gmx::makeCheckpointArrayRefFromArray ( T *  begin,
size_t  size 
)

Get an ArrayRef to a C array whose const-ness is defined by the checkpointing operation.

Template Parameters
operationWhether we are reading or writing
TThe type of values stored in the ArrayRef
Parameters
beginPointer to the beginning of array.
sizeNumber of elements in array.
Returns
The ArrayRef
See Also
ArrayRef
gmx::MissingElementConnectionError::MissingElementConnectionError ( const ExceptionInitializer details)
inlineexplicit

Creates an exception object with the provided initializer/reason.

Parameters
[in]detailsInitializer for the exception.
Exceptions
std::bad_allocif 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.

virtual void gmx::ISimulatorElement::scheduleTask ( Step  ,
Time  ,
const RegisterRunFunction  
)
pure virtual
gmx::SimulationAlgorithmSetupError::SimulationAlgorithmSetupError ( const ExceptionInitializer details)
inlineexplicit

Creates an exception object with the provided initializer/reason.

Parameters
[in]detailsInitializer for the exception.
Exceptions
std::bad_allocif 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.