construct_nose_hoover_chain¶
- torch_sim.integrators.md.construct_nose_hoover_chain(dt, chain_length, chain_steps, sy_steps, tau)[source]¶
Creates functions to simulate a Nose-Hoover Chain thermostat.
Implements the direct translation method from Martyna et al. for thermal ensemble sampling using Nose-Hoover chains. The chains are updated using a symmetric splitting scheme with two half-steps per simulation step.
The integration uses a multi-timestep approach with Suzuki-Yoshida (SY) splitting: - The chain evolution is split into nc substeps (chain_steps) - Each substep is further split into sy_steps - Each SY step has length δi = Δt*wi/nc where wi are the SY weights
- Parameters:
dt (Tensor) – Simulation timestep
chain_length (int) – Number of thermostats in the chain
chain_steps (int) – Number of outer substeps for chain integration
sy_steps (int) – Number of Suzuki-Yoshida steps (must be 1, 3, 5, or 7)
tau (Tensor) – Temperature equilibration timescale (in units of dt) Larger values give better stability but slower equilibration
- Returns:
initialize: Function to create initial chain state
half_step: Function to evolve chain for half timestep
update_mass: Function to update chain masses
- Return type:
NoseHooverChainFns containing
References
- Martyna et al. “Nose-Hoover chains: the canonical ensemble via
continuous dynamics”
Chem. Phys. 97, 2635 (1992)