Gromacs  2021.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Member Functions | Static Public Member Functions
gmx::Propagator< algorithm > Class Template Referencefinal

#include <gromacs/modularsimulator/propagator.h>

+ Inheritance diagram for gmx::Propagator< algorithm >:
+ Collaboration diagram for gmx::Propagator< algorithm >:


template<IntegrationStep algorithm>
class gmx::Propagator< algorithm >

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.

Template Parameters
algorithmThe integration types

Public Member Functions

 Propagator (double timestep, StatePropagatorData *statePropagatorData, const MDAtoms *mdAtoms, gmx_wallcycle *wcycle)
void scheduleTask (Step step, Time time, const RegisterRunFunction &registerRunFunction) 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)
 Set the number of velocity scaling variables.
ArrayRef< realviewOnVelocityScaling ()
 Get view on the velocity scaling vector.
PropagatorCallback velocityScalingCallback ()
 Get velocity scaling callback.
ArrayRef< rvec > 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 ISimulatorElementgetElementPointerImpl (LegacySimulatorData *legacySimulatorData, ModularSimulatorAlgorithmBuilderHelper *builderHelper, StatePropagatorData *statePropagatorData, EnergyData *energyData, FreeEnergyPerturbationData *freeEnergyPerturbationData, GlobalCommunicationHelper *globalCommunicationHelper, double timestep, RegisterWithThermostat registerWithThermostat, RegisterWithBarostat registerWithBarostat)
 Factory method implementation. More...

Member Function Documentation

template<IntegrationStep algorithm>
ISimulatorElement * gmx::Propagator< algorithm >::getElementPointerImpl ( LegacySimulatorData legacySimulatorData,
ModularSimulatorAlgorithmBuilderHelper builderHelper,
StatePropagatorData statePropagatorData,
EnergyData energyData,
FreeEnergyPerturbationData freeEnergyPerturbationData,
GlobalCommunicationHelper globalCommunicationHelper,
double  timestep,
RegisterWithThermostat  registerWithThermostat,
RegisterWithBarostat  registerWithBarostat 

Factory method implementation.

legacySimulatorDataPointer allowing access to simulator level data
builderHelperModularSimulatorAlgorithmBuilder helper object
statePropagatorDataPointer to the StatePropagatorData object
energyDataPointer to the EnergyData object
freeEnergyPerturbationDataPointer to the FreeEnergyPerturbationData object
globalCommunicationHelperPointer to the GlobalCommunicationHelper object
timestepThe time step the propagator uses
registerWithThermostatWhether this propagator should be registered with the thermostat
registerWithBarostatWhether this propagator should be registered with the barostat
Pointer to the element to be added. Element needs to have been stored using storeElement
template<IntegrationStep algorithm>
void gmx::Propagator< algorithm >::scheduleTask ( Step  step,
Time  time,
const RegisterRunFunction registerRunFunction 

Register run function for step / time.

stepThe step number
timeThe time
registerRunFunctionFunction allowing to register a run function

Implements gmx::ISimulatorElement.

The documentation for this class was generated from the following files: