Class DrudeNoseHooverIntegrator
This integrator can optionally set an upper limit on how far any Drude particle is ever allowed to get from its parent particle. This can sometimes help to improve stability. The limit is enforced with a hard wall constraint. By default the limit is set to 0.02 nm.
This Integrator requires the System to include a DrudeForce, which it uses to identify the Drude particles.
-
Field Summary
Fields inherited from class ffx.openmm.Integrator
pointer
-
Constructor Summary
ConstructorsConstructorDescriptionDrudeNoseHooverIntegrator
(double stepSize, double temperature, double drudeTemperature, double frequency, double drudeFrequency, int chainLength, int drudeChainLength, int numMTS) Create a DrudeNoseHooverIntegrator. -
Method Summary
Modifier and TypeMethodDescriptiondouble
Compute the kinetic energy of the Drude particles.double
Compute the instantaneous temperature of the Drude particles.double
Compute the instantaneous temperature of the real atoms.double
Compute the total kinetic energy of the system.void
destroy()
Destroy the integrator.double
Get the maximum allowed distance between Drude particles and their parent atoms.void
setMaxDrudeDistance
(double distance) Set the maximum allowed distance between Drude particles and their parent atoms.Methods inherited from class ffx.openmm.NoseHooverIntegrator
addSubsystemThermostat, addThermostat, computeHeatBathEnergy, getCollisionFrequency, getMaximumPairDistance, getNumThermostats, getRelativeCollisionFrequency, getRelativeTemperature, getTemperature, getThermostat, hasSubsystemThermostats, setCollisionFrequency, setMaximumPairDistance, setRelativeCollisionFrequency, setRelativeTemperature, setTemperature, step
Methods inherited from class ffx.openmm.Integrator
getConstraintTolerance, getIntegrationForceGroups, getPointer, getStepSize, setConstraintTolerance, setIntegrationForceGroups, setPointer, setStepSize
-
Constructor Details
-
DrudeNoseHooverIntegrator
public DrudeNoseHooverIntegrator(double stepSize, double temperature, double drudeTemperature, double frequency, double drudeFrequency, int chainLength, int drudeChainLength, int numMTS) Create a DrudeNoseHooverIntegrator.- Parameters:
stepSize
- the step size with which to integrator the system (in picoseconds)temperature
- the target temperature for the system (in Kelvin).drudeTemperature
- the target temperature for the Drude particles, relative to their parent atom (in Kelvin).frequency
- the frequency of the system's interaction with the heat bath (in inverse picoseconds).drudeFrequency
- the frequency of the drude particles' interaction with the heat bath (in inverse picoseconds).chainLength
- the number of beads in the Nose-Hoover chain.drudeChainLength
- the number of beads in the Nose-Hoover chain for Drude particles.numMTS
- the number of step in the multiple time step chain propagation algorithm.
-
-
Method Details
-
computeDrudeKineticEnergy
public double computeDrudeKineticEnergy()Compute the kinetic energy of the Drude particles.This method calculates the total kinetic energy associated with the Drude particles in the system. This can be used to monitor the energy distribution between nuclear and electronic degrees of freedom during the simulation.
- Returns:
- The Drude kinetic energy in kJ/mol.
-
computeDrudeTemperature
public double computeDrudeTemperature()Compute the instantaneous temperature of the Drude particles.This method calculates the current kinetic temperature of the Drude particles based on their velocities. This provides a measure of the thermal state of the electronic degrees of freedom in the system.
- Returns:
- The instantaneous Drude temperature in Kelvin.
-
computeSystemTemperature
public double computeSystemTemperature()Compute the instantaneous temperature of the real atoms.This method calculates the current kinetic temperature of the real atoms based on their velocities. This provides a measure of the thermal state of the nuclear degrees of freedom in the system.
- Returns:
- The instantaneous system temperature in Kelvin.
-
computeTotalKineticEnergy
public double computeTotalKineticEnergy()Compute the total kinetic energy of the system.This method calculates the total kinetic energy of all particles in the system, including both real atoms and Drude particles. This is useful for monitoring energy conservation and the overall thermal state of the system.
- Returns:
- The total kinetic energy in kJ/mol.
-
destroy
public void destroy()Destroy the integrator.This method releases the memory associated with the DrudeNoseHooverIntegrator object. After calling this method, the integrator should not be used.
- Overrides:
destroy
in classNoseHooverIntegrator
-
getMaxDrudeDistance
public double getMaxDrudeDistance()Get the maximum allowed distance between Drude particles and their parent atoms.This method returns the constraint distance that limits how far Drude particles can move from their parent atoms. This constraint prevents the polarization from becoming unphysically large and maintains numerical stability.
- Returns:
- The maximum Drude distance in nanometers.
-
setMaxDrudeDistance
public void setMaxDrudeDistance(double distance) Set the maximum allowed distance between Drude particles and their parent atoms.This method sets the constraint distance that limits how far Drude particles can move from their parent atoms. This constraint is essential for maintaining numerical stability and preventing unphysical polarization. A typical value is around 0.02 nm.
- Parameters:
distance
- The maximum Drude distance in nanometers.
-