Integrator

class Integrator

An Integrator defines a method for simulating a System by integrating the equations of motion. This is an abstract class. Subclasses define particular integration methods.

Each Integrator object is bound to a particular Context which it integrates. This connection is specified by passing the Integrator as an argument to the constructor of the Context.

Subclassed by OpenMM::BrownianIntegrator, OpenMM::CompoundIntegrator, OpenMM::CustomIntegrator, OpenMM::DrudeIntegrator, OpenMM::LangevinIntegrator, OpenMM::LangevinMiddleIntegrator, OpenMM::NoseHooverIntegrator, OpenMM::RPMDIntegrator, OpenMM::VariableLangevinIntegrator, OpenMM::VariableVerletIntegrator, OpenMM::VerletIntegrator

Public Functions

virtual double getStepSize() const

Get the size of each time step, in picoseconds. If this integrator uses variable time steps, the size of the most recent step is returned.

Returns

the step size, measured in ps

virtual void setStepSize(double size)

Set the size of each time step, in picoseconds. If this integrator uses variable time steps, the effect of calling this method is undefined, and it may simply be ignored.

Parameters

size – the step size, measured in ps

virtual double getConstraintTolerance() const

Get the distance tolerance within which constraints are maintained, as a fraction of the constrained distance.

virtual void setConstraintTolerance(double tol)

Set the distance tolerance within which constraints are maintained, as a fraction of the constrained distance.

virtual void step(int steps) = 0

Advance a simulation through time by taking a series of time steps.

Parameters

steps – the number of time steps to take

virtual int getIntegrationForceGroups() const

Get which force groups to use for integration. By default, all force groups are included. This is interpreted as a set of bit flags: the forces from group i will be included if (groups&(1<<i)) != 0.

virtual void setIntegrationForceGroups(int groups)

Set which force groups to use for integration. By default, all force groups are included. This is interpreted as a set of bit flags: the forces from group i will be included if (groups&(1<<i)) != 0.