Gromacs  2020.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Typedefs | Enumerations | Functions
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

Typedefs

typedef std::function< void()> gmx::CheckBondedInteractionsCallback
 The function type allowing to request a check of the number of bonded interactions.
 
typedef std::unique_ptr
< CheckBondedInteractionsCallback > 
gmx::CheckBondedInteractionsCallbackPtr
 Pointer to 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::unique_ptr
< SimulatorRunFunction > 
gmx::SimulatorRunFunctionPtr
 Pointer to the function type that can be scheduled to be run during the simulator run.
 
typedef std::function< void(SimulatorRunFunctionPtr)> gmx::RegisterRunFunction
 The function type that allows to register run functions.
 
typedef std::unique_ptr
< RegisterRunFunction > 
gmx::RegisterRunFunctionPtr
 Pointer to 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::unique_ptr
< SignallerCallback > 
gmx::SignallerCallbackPtr
 Pointer to 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::unique_ptr
< ITrajectoryWriterCallback > 
gmx::ITrajectoryWriterCallbackPtr
 Pointer to the function type for trajectory writing clients.
 
typedef std::function< void(Step)> gmx::PropagatorCallback
 Generic callback to the propagator.
 
typedef std::unique_ptr
< PropagatorCallback > 
gmx::PropagatorCallbackPtr
 Pointer to generic callback to the propagator.
 

Enumerations

enum  gmx::ComputeGlobalsAlgorithm { LeapFrog, VelocityVerletAtFullTimeStep, VelocityVerletAfterCoordinateUpdate }
 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::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

virtual void gmx::ISimulatorElement::scheduleTask (Step, Time, const RegisterRunFunctionPtr &)=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::signallerSetup ()=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 SignallerCallbackPtr gmx::INeighborSearchSignallerClient::registerNSCallback ()=0
 Return callback to NeighborSearchSignaller.
 
virtual gmx::ILastStepSignallerClient::~ILastStepSignallerClient ()=default
 Standard virtual destructor.
 
virtual SignallerCallbackPtr gmx::ILastStepSignallerClient::registerLastStepCallback ()=0
 Return callback to LastStepSignaller.
 
virtual gmx::ILoggingSignallerClient::~ILoggingSignallerClient ()=default
 Standard virtual destructor.
 
virtual SignallerCallbackPtr gmx::ILoggingSignallerClient::registerLoggingCallback ()=0
 Return callback to LoggingSignaller.
 
virtual gmx::IEnergySignallerClient::~IEnergySignallerClient ()=default
 Standard virtual destructor.
 
virtual SignallerCallbackPtr gmx::IEnergySignallerClient::registerEnergyCallback (EnergySignallerEvent)=0
 Return callback to EnergySignaller.
 
virtual gmx::ITrajectorySignallerClient::~ITrajectorySignallerClient ()=default
 Standard virtual destructor.
 
virtual SignallerCallbackPtr 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
ITrajectoryWriterCallbackPtr 
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::writeCheckpoint (t_state *localState, t_state *globalState)=0
 Write checkpoint.
 

Enumeration Type Documentation

enum gmx::IntegrationStep
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.

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.

Sets the type of Parrinello-Rahman pressure scaling.

Enumerator
No 

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

Diagonal 

Apply velocity scaling using a diagonal matrix.

Full 

Apply velocity scaling using a full matrix.

Function Documentation

virtual void gmx::ISimulatorElement::scheduleTask ( Step  ,
Time  ,
const RegisterRunFunctionPtr  
)
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.