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”

  1. Chem. Phys. 97, 2635 (1992)