DrudeNoseHooverIntegrator
¶
-
class OpenMM::DrudeNoseHooverIntegrator : public OpenMM::NoseHooverIntegrator¶
This Integrator simulates systems that include Drude particles. It applies two different Nose-Hoover chain thermostats to the different parts of the system. The first is applied to ordinary particles (ones that are not part of a Drude particle pair), as well as to the center of mass of each Drude particle pair. A second thermostat, typically with a much lower temperature, is applied to the relative internal displacement of each pair.
This Integrator requires the System to include a DrudeForce, which it uses to identify the Drude particles.
Public Functions
-
DrudeNoseHooverIntegrator(double temperature, double collisionFrequency, double drudeTemperature, double drudeCollisionFrequency, double stepSize, int chainLength = 3, int numMTS = 3, int numYoshidaSuzuki = 7)¶
Create a DrudeNoseHooverIntegrator.
- Parameters
temperature – the target temperature for the system (in Kelvin).
collisionFrequency – the frequency of the system’s interaction with the heat bath (in inverse picoseconds).
drudeTemperature – the target temperature for the Drude particles, relative to their parent atom (in Kelvin).
drudeCollisionFrequency – the frequency of the drude particles’ interaction with the heat bath (in inverse picoseconds).
stepSize – the step size with which to integrator the system (in picoseconds)
chainLength – the number of beads in the Nose-Hoover chain.
numMTS – the number of step in the multiple time step chain propagation algorithm.
numYoshidaSuzuki – the number of terms in the Yoshida-Suzuki multi time step decomposition used in the chain propagation algorithm (must be 1, 3, or 5).
-
virtual void initialize(ContextImpl &context) override¶
This will be called by the Context when it is created. It informs the Integrator of what context it will be integrating, and gives it a chance to do any necessary initialization. It will also get called again if the application calls reinitialize() on the Context.
-
double getMaxDrudeDistance() const¶
Get the maximum distance a Drude particle can ever move from its parent particle, measured in nm. This is implemented with a hard wall constraint. If this distance is set to 0 (the default), the hard wall constraint is omitted.
-
void setMaxDrudeDistance(double distance)¶
Set the maximum distance a Drude particle can ever move from its parent particle, measured in nm. This is implemented with a hard wall constraint. If this distance is set to 0 (the default), the hard wall constraint is omitted.
-
double computeDrudeKineticEnergy()¶
Compute the kinetic energy of the drude particles at the current time.
-
double computeTotalKineticEnergy()¶
Compute the kinetic energy of all (real and drude) particles at the current time.
-
virtual std::vector<Vec3> getVelocitiesForTemperature(const System &system, double temperature, int randomSeed) const override¶
Return a list of velocities normally distributed around a target temperature, with the Drude temperatures assigned according to the Drude temperature assigned to the integrator.
- Parameters
system – the system whose velocities are to be initialized.
temperature – the target temperature in Kelvin.
randomSeed – the random number seed to use when selecting velocities
-
DrudeNoseHooverIntegrator(double temperature, double collisionFrequency, double drudeTemperature, double drudeCollisionFrequency, double stepSize, int chainLength = 3, int numMTS = 3, int numYoshidaSuzuki = 7)¶