--- myst: html_meta: "description": "Configuration for running classical molecular dynamics (MD) simulations in eOn based on Newton's equations of motion." "keywords": "eOn molecular dynamics, MD, simulation, thermostat, dynamics" --- # 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: ```{code-block} ini [Main] job = dynamics temperature = 300 [Dynamics] time_step = 1.0 time = 1000.0 thermostat = andersen ``` Or via [rgpycrumbs](https://rgpycrumbs.rgoswami.me): ```python 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 Four thermostat options are available: | Thermostat | Key | Description | |---|---|---| | **Andersen** | `andersen` | Stochastic velocity reassignment with collision probability per step | | **Nose-Hoover** | `nose_hoover` | Deterministic extended-system thermostat (chains of length 2) | | **Langevin** | `langevin` | Stochastic friction + random force, good for non-equilibrium | | **None** | `none` | NVE ensemble (constant energy, no temperature control) | ### Andersen thermostat Controls temperature via random velocity reassignment. The collision period determines how frequently atoms are thermalized: ```{code-block} ini [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: ```{code-block} ini [Dynamics] thermostat = langevin langevin_friction = 0.01 ``` ## 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 ```{code-block} ini [Dynamics] ``` ```{eval-rst} .. autopydantic_model:: eon.schema.DynamicsConfig ``` ## See also - for accelerated dynamics via replica parallelism - for bias-potential acceleration - for structure optimization (not dynamics)