Gromacs
2025.0-dev-20241011-013a99c
|
#include <gromacs/modularsimulator/propagator.h>
Propagator element.
The propagator element can, through templating, cover the different propagation types used in NVE MD. The combination of templating, static functions, and having only the inner-most operations in the static functions allows to have performance comparable to fused update elements while keeping easily re-orderable single instructions.
integrationStep | The integration types |
Public Member Functions | |
Propagator (double timestep, StatePropagatorData *statePropagatorData, const MDAtoms *mdAtoms, gmx_wallcycle *wcycle) | |
Constructor. | |
void | scheduleTask (Step step, Time time, const RegisterRunFunction ®isterRunFunction) override |
Register run function for step / time. More... | |
void | elementSetup () override |
No element setup needed. | |
void | elementTeardown () override |
No element teardown needed. | |
void | setNumVelocityScalingVariables (int numVelocityScalingVariables, ScaleVelocities scaleVelocities) |
Set the number of velocity scaling variables. | |
void | setNumPositionScalingVariables (int numPositionScalingVariables) |
Set the number of position scaling variables. | |
ArrayRef< real > | viewOnStartVelocityScaling () |
Get view on the scaling vector applied to start of step velocities. | |
ArrayRef< real > | viewOnEndVelocityScaling () |
Get view on the scaling vector applied to end of step velocities. | |
ArrayRef< real > | viewOnPositionScaling () |
Get view on the scaling vector applied to the positions. | |
PropagatorCallback | velocityScalingCallback () |
Get velocity scaling callback. | |
PropagatorCallback | positionScalingCallback () |
Get position scaling callback. | |
Matrix3x3 * | viewOnPRScalingMatrix () |
Get view on the full PR scaling matrix. | |
PropagatorCallback | prScalingCallback () |
Get PR scaling callback. | |
Public Member Functions inherited from gmx::ISimulatorElement | |
virtual | ~ISimulatorElement ()=default |
Standard virtual destructor. | |
Static Public Member Functions | |
static ISimulatorElement * | getElementPointerImpl (LegacySimulatorData *legacySimulatorData, ModularSimulatorAlgorithmBuilderHelper *builderHelper, StatePropagatorData *statePropagatorData, EnergyData *energyData, FreeEnergyPerturbationData *freeEnergyPerturbationData, GlobalCommunicationHelper *globalCommunicationHelper, ObservablesReducer *observablesReducer, const PropagatorTag &propagatorTag, TimeStep timestep) |
Factory method implementation. More... | |
static ISimulatorElement * | getElementPointerImpl (LegacySimulatorData *legacySimulatorData, ModularSimulatorAlgorithmBuilderHelper *builderHelper, StatePropagatorData *statePropagatorData, EnergyData *energyData, FreeEnergyPerturbationData *freeEnergyPerturbationData, GlobalCommunicationHelper *globalCommunicationHelper, ObservablesReducer *observablesReducer, const PropagatorTag &propagatorTag) |
Factory method implementation. More... | |
|
static |
Factory method implementation.
legacySimulatorData | Pointer allowing access to simulator level data |
builderHelper | ModularSimulatorAlgorithmBuilder helper object |
statePropagatorData | Pointer to the StatePropagatorData object |
energyData | Pointer to the EnergyData object |
freeEnergyPerturbationData | Pointer to the FreeEnergyPerturbationData object |
globalCommunicationHelper | Pointer to the GlobalCommunicationHelper object |
observablesReducer | Pointer to the ObservablesReducer object |
propagatorTag | The name of the propagator to simplify connection |
timestep | The time step the propagator uses |
storeElement
|
static |
Factory method implementation.
Version without time step for pure scaling elements
legacySimulatorData | Pointer allowing access to simulator level data |
builderHelper | ModularSimulatorAlgorithmBuilder helper object |
statePropagatorData | Pointer to the StatePropagatorData object |
energyData | Pointer to the EnergyData object |
freeEnergyPerturbationData | Pointer to the FreeEnergyPerturbationData object |
globalCommunicationHelper | Pointer to the GlobalCommunicationHelper object |
observablesReducer | Pointer to the ObservablesReducer object |
propagatorTag | The name of the propagator to simplify connection |
storeElement
|
overridevirtual |
Register run function for step / time.
This function will determine the required flavor of the run function to be registered for the current step. In case of the pure scaling integrator stage, it might also skip the function registration if no scaling is needed.
step | The step number |
time | The time |
registerRunFunction | Function allowing to register a run function |
Implements gmx::ISimulatorElement.