Dynamics¶
Molecular dynamics based on Newton’s classical equations of motion, integrated with the velocity Verlet algorithm.
Note
For production MD simulations, consider using integrations with LAMMPS or ASE for more efficient dynamics. The eOn dynamics engine is primarily used as a building block for accelerated methods (Parallel Replica, TAD, Hyperdynamics).
To run a standalone dynamics simulation, set job to dynamics in the [Main] section:
[Main]
job = dynamics
temperature = 300
[Dynamics]
time_step = 1.0
time = 1000.0
thermostat = andersen
Or via rgpycrumbs:
from rgpycrumbs.eon.helpers import write_eon_config
config = {
"Main": {"job": "dynamics", "temperature": 300},
"Dynamics": {"time_step": 1.0, "time": 1000.0, "thermostat": "andersen"},
}
write_eon_config(config, Path("config.ini"))
Thermostats¶
Six thermostat options are available:
Thermostat |
Key |
Description |
|---|---|---|
Andersen |
|
Stochastic velocity reassignment with collision probability per step |
Nose-Hoover |
|
Deterministic extended-system thermostat (chains of length 2) |
Langevin |
|
Stochastic friction + random force, good for non-equilibrium |
None |
|
NVE ensemble (constant energy, no temperature control) |
PILE |
|
Ring-polymer Langevin equation on the normal modes |
PIGLET |
|
Normal-mode GLE on the internal modes, Langevin on the centroid |
Andersen thermostat¶
Controls temperature via random velocity reassignment. The collision period determines how frequently atoms are thermalized:
[Dynamics]
thermostat = andersen
andersen_alpha = 1.0
andersen_collision_period = 100.0
Langevin thermostat¶
Applies friction and random forces. The friction coefficient controls the coupling strength to the heat bath:
[Dynamics]
thermostat = langevin
langevin_friction = 0.01
Langevin and Nose-Hoover treat each Cartesian component on its own. A fixed component is stored with zero velocity, so the Nose-Hoover step leaves it in place, and the chain counts only the free components. Langevin draws no random force on a fixed component and writes no step there.
Path-integral sampling¶
pile and piglet integrate a ring polymer. The velocity Verlet step
above stays the classical update and does not move the beads. Each step
evaluates every bead in one force batch, so calculator groups carry the
beads together. A fixed component is left out of that update: its force
and its momentum stay zero, and the bead step skips it.
path_beads is the bead count. path_springs = trotter uses the
primitive ring-polymer frequencies. path_springs = eco uses economised
springs fitted to harmonic radii of gyration up to path_eco_omega_max.
Economised springs are refused with piglet. The instanton refuses them
as well, because that discretisation assumes Trotter springs.
path_eco_omega_max is an angular frequency in inverse internal time
units. One internal time unit is 10.18 fs, so 1.0 is 9.82e13 rad/s and
hbar omega = 0.0647 eV.
piglet reads one drift matrix and one covariance per internal mode from
path_gle_file. The file holds the mode count and the matrix size, then
for each mode the drift matrix and the covariance, row by row. The drift
matrix is in inverse internal time units. The covariance is in kelvin:
kB times it is the covariance of the mass-scaled extended momenta in eV,
so a canonical GLE at the ring temperature has N T on the diagonal, with
N = path_beads and T the [Main] temperature. A file with one matrix
pair fewer than the bead count covers the internal modes; one with a pair
per bead skips the first, centroid, pair. The centroid keeps a separate
Langevin thermostat.
path_pile_tau is that damping time in femtoseconds, and
path_pile_scale multiplies the critical damping of the internal modes
when the thermostat is pile. path_seed seeds the path-integral
random numbers.
The ring starts from pos.con with momenta drawn at the ring
temperature. The first half of the steps equilibrates it; over the second
half the job averages the centroid-virial kinetic energy, the quantum
kinetic energy of the N-bead ring, and writes it to the log beside the
classical nFree kB T / 2. final.con holds the ring’s centroid and its
velocity.
Through the library (eonc::pathintegral::RingPolymer), the sampler can
also hold the centroid on a hyperplane and average the Cartesian force
along the normal. That average is the mean force for thermodynamic
integration along a band, and its negative is the derivative of the
potential of mean force; the instanton job’s PI-QTST planes use it. The
dynamics job does not set a hyperplane.
Time parameters¶
All times are specified in femtoseconds (fs). The internal time unit conversion is handled automatically.
time_step: integration timestep (default: 1.0 fs)time: total simulation time (default: 1000.0 fs)
The number of steps is computed as floor(time / time_step).
Configuration¶
[Dynamics]
- pydantic model eon.schema.DynamicsConfig[source]¶
- Fields:
time_step (float)time (float)thermostat (Literal['none', 'andersen', 'langevin', 'nose_hoover', 'pile', 'piglet'])path_beads (int)path_springs (Literal['trotter', 'eco'])path_eco_omega_max (float)path_gle_file (str)path_pile_tau (float)path_pile_scale (float)path_seed (int)andersen_collision_period (float)andersen_alpha (float)nose_mass (float)langevin_friction (float)
- field thermostat: Literal['none', 'andersen', 'langevin', 'nose_hoover', 'pile', 'piglet'] = 'none'¶
Options: -
none: NVE dynamics with the verlet algorithm. Initial velocities set by temperature. -andersen: Andersen thermostat with the Verlet algorithm. -langevin: Langevin thermostat with the Verlet algorithm. -nose_hoover: Nosé-Hoover thermostat with the Verlet algorithm. -pile: path-integral Langevin equation on the ring-polymer normal modes. -piglet: normal-mode GLE on the internal modes, Langevin on the centroid.Thermostat to use for the dynamics simulation.
- field path_springs: Literal['trotter', 'eco'] = 'trotter'¶
Trotter ring-polymer springs, or economised springs. eco is refused with piglet.
- field path_eco_omega_max: float = 0.0¶
Highest physical frequency, in internal frequency units, reproduced by economised springs.
- Constraints:
ge = 0.0
- field path_gle_file: str = ''¶
Normal-mode GLE matrices for piglet. The file starts with the mode count and the matrix dimension, then each mode’s drift matrix and covariance.
- field path_pile_tau: float = 100.0¶
Centroid Langevin damping time, in femtoseconds.
- Constraints:
gt = 0.0
- field path_pile_scale: float = 1.0¶
Scales the critical damping of the internal PILE modes.
- Constraints:
gt = 0.0
- field andersen_collision_period: float = 100.0¶
The collision period (in fs) for the Andersen thermostat.
See also¶
Parallel replica for accelerated dynamics via replica parallelism
Hyperdynamics for bias-potential acceleration
Optimizer for structure optimization