nvt_nose_hoover_step

torch_sim.integrators.nvt.nvt_nose_hoover_step(state, model, *, dt, kT)[source]

Perform one complete Nose-Hoover chain (NHC) integration step.

Implements the NHC thermostat from Martyna et al. (1996) [3] with Suzuki-Yoshida integration of the chain variables.

Equations of motion (Martyna et al. 1996, Eqs. 13-18):

\[\begin{split}\dot{\mathbf{r}}_i &= \mathbf{p}_i / m_i \\ \dot{\mathbf{p}}_i &= \mathbf{F}_i - \frac{p_{\xi_1}}{Q_1}\,\mathbf{p}_i \\ \dot{\xi}_j &= p_{\xi_j} / Q_j \\ \dot{p}_{\xi_1} &= \bigl(2K - N_f k_BT\bigr) - \frac{p_{\xi_2}}{Q_2}\,p_{\xi_1} \\ \dot{p}_{\xi_j} &= \left(\frac{p_{\xi_{j-1}}^2}{Q_{j-1}} - k_BT\right) - \frac{p_{\xi_{j+1}}}{Q_{j+1}}\,p_{\xi_j} \quad (j = 2,\ldots,M{-}1) \\ \dot{p}_{\xi_M} &= \frac{p_{\xi_{M-1}}^2}{Q_{M-1}} - k_BT\end{split}\]

where \(K = \sum_i p_i^2/(2m_i)\) is the kinetic energy, \(N_f = 3N - 3\) the degrees of freedom, and \(Q_j = k_BT\tau^2\) (with \(Q_1 = N_f k_BT\tau^2\)) are the chain masses.

Symmetric propagator (Trotter factorization):

\[e^{i\mathcal{L}\Delta t} = e^{i\mathcal{L}_{\text{NHC}}\Delta t/2} \;e^{i\mathcal{L}_{\text{VV}}\Delta t} \;e^{i\mathcal{L}_{\text{NHC}}\Delta t/2}\]

where \(i\mathcal{L}_{\text{VV}}\) is the velocity Verlet propagator and \(i\mathcal{L}_{\text{NHC}}\) integrates the chain with \(n_c \times n_{\text{sy}}\) sub-steps (Suzuki-Yoshida decomposition).

Variable mapping (equation -> code):

Equation symbol

Code variable

\(\mathbf{r}_i\) (positions)

state.positions

\(\mathbf{p}_i\) (momenta)

state.momenta

\(m_i\) (masses)

state.masses

\(\mathbf{F}_i\) (forces)

state.forces

\(\xi_j\) (chain positions)

state.chain.positions

\(p_{\xi_j}\) (chain momenta)

state.chain.momenta

\(Q_j\) (chain masses)

state.chain.masses

\(K\) (kinetic energy)

state.chain.kinetic_energy

\(N_f\) (degrees of freedom)

state.chain.degrees_of_freedom

\(\tau\) (relaxation time)

state.chain.tau

\(k_BT\) (thermal energy)

kT

\(\Delta t\) (timestep)

dt

\(M\) (chain length)

chain_length

\(n_c\) (chain substeps)

chain_steps

\(n_{\text{sy}}\) (SY steps)

sy_steps

Parameters:
  • state (NVTNoseHooverState) – Current system state containing positions, momenta, forces, and chain

  • model (ModelInterface) – Neural network model that computes energies and forces

  • dt (float | Tensor) – Integration timestep

  • kT (float | Tensor) – Target temperature in energy units

Returns:

Updated state after one complete Nose-Hoover step

Return type:

NVTNoseHooverState

References