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

class  gmx::CheckpointHelper
 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::EnergyElement
 Element managing energies. More...
 
class  gmx::ForceElement
 Force element. More...
 
class  gmx::FreeEnergyPerturbationElement
 The free energy perturbation element. 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::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::ShellFCElement
 Shell & flex constraints 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::EnergySignaller
 Element signalling energy related special steps. More...
 
class  gmx::StatePropagatorData
 StatePropagatorData and associated data. More...
 
class  gmx::TopologyHolder
 Object holding the topology. More...
 
class  gmx::TrajectoryElement
 Trajectory element signals and handles trajectory writing. More...
 
class  gmx::TrajectoryElementBuilder
 Build the TrajectoryElement More...
 
class  gmx::VRescaleThermostat
 Element implementing the v-rescale thermostat. More...
 

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.
 

Files

file  checkpointhelper.h
 Declares the checkpoint helper for the modular simulator.
 
file  compositesimulatorelement.h
 Declares the composite element for the modular simulator.
 
file  computeglobalselement.h
 Declares the global reduction element for the modular simulator.
 
file  constraintelement.h
 Declares the constraint element for the modular simulator.
 
file  domdechelper.h
 Declares the domain decomposition helper for the modular simulator.
 
file  energyelement.h
 Declares the energy element for the modular simulator.
 
file  forceelement.h
 Declares the force element for the modular simulator.
 
file  freeenergyperturbationelement.h
 Declares the free energy perturbation element for the modular simulator.
 
file  modularsimulator.h
 Declares the modular simulator.
 
file  modularsimulatorinterfaces.h
 Declares the main interfaces used by the modular simulator.
 
file  parrinellorahmanbarostat.h
 Declares the Parrinello-Rahman barostat for the modular simulator.
 
file  pmeloadbalancehelper.h
 Declares the PME load balancing helper for the modular simulator.
 
file  propagator.h
 Declares the propagator element for the modular simulator.
 
file  shellfcelement.h
 Declares the shell / flex constraints element for the modular simulator.
 
file  signallers.h
 Declares the signallers for the modular simulator.
 
file  statepropagatordata.h
 Declares the state for the modular simulator.
 
file  topologyholder.h
 Declares the topology class for the modular simulator.
 
file  trajectoryelement.h
 Declares the trajectory element for the modular simulator.
 
file  vrescalethermostat.h
 Declares the v-rescale thermostat for the modular simulator.
 

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