API:IIntegrator

From Wiketomica
Jump to: navigation, search
API Home Participants API Discussion Demos Downloads Documentation Contact Us Acknowledgements

IIntegrator

Reason for existence

The IIntegrator is the simulation object responsible for exploring phase space. The integrator might operate on a single IBox or multiple IBox, perhaps by wrapping other integrators. It is often useful to access the Integrator and alter its operation to alter how it explores phase space (changing the temperature perhaps).

The IIntegrator can manage a list of IActions which are invoked after every integration step and a list of IIntegratorNonintervalListeners which get fired when major integrator-related events happen (currently the only such event is reset).

Proposed Interface

interface IIntegrator {

    /**
     * Performs the elementary integration step, such as a molecular dynamics
     * time step, or a Monte Carlo trial.
     */
    void doStep();

    /**
     * The number of steps performed by the integrator since it was
     * initialized.
     */
    readonly attribute unsigned int getStepCount();

    void resetStepCount();

    /**
     * Defines the actions taken by the integrator to reset itself, such as
     * required if a perturbation is applied to the simulated box (e.g.,
     * addition or deletion of a molecule). Also invoked when the
     * integrator is started or initialized.
     */
    void reset();

    readonly attribute IIntegratorEventManager eventManager;

}

Use

Typically, an IIntegrator would be created and added to the IController wrapped in an IAction (see Etomica's ActivityIntegrate) that calls initialize() and then repeatedly calls doStep for some set number of times.

Notes

mol-sim-api discussion of IIntegrator and scope