Bussi

class hoomd.md.methods.thermostats.Bussi(kT, tau=0.0)

Bases: Thermostat

The Bussi-Donadio-Parrinello thermostat.

Parameters:
  • kT (hoomd.variant.variant_like) – Temperature set point for the thermostat [energy][\mathrm{energy}].

  • tau (float) – Thermostat time constant [time][\mathrm{time}]. Defaults to 0.

Bussi controls the system temperature by separately rescaling the velocity and angular momenta by the factor α\alpha sampled from the canonical distribution.

When tau is 0, the stochastic evolution of system is instantly thermalized and α\alpha is given by:

α=gNkTK\alpha = \sqrt{\frac{g_N kT}{K}}

where KK is the instantaneous kinetic energy of the corresponding translational or rotational degrees of freedom, NN is the number of degrees of freedom, and gNg_N is a random value sampled from the distribution Gamma(N,1)\mathrm{Gamma}(N, 1):

fN(g)=1Γ(N)gN1eg.f_N(g) = \frac{1}{\Gamma(N)} g^{N-1} e^{-g}.

When tau is non-zero, the kinetic energies decay to equilibrium with the given characteristic time constant and α\alpha is given by:

α=eδt/τ+(1eδt/τ)(2gN1+n2)kT2K+2neδt/τ(1eδt/τ)kT2K\alpha = \sqrt{e^{\delta t / \tau} + (1 - e^{\delta t / \tau}) \frac{(2 g_{N-1} + n^2) kT}{2 K} + 2 n \sqrt{e^{\delta t / \tau} (1-e^{\delta t / \tau}) \frac{kT}{2 K}}}

where δt\delta t is the step size and nn is a random value sampled from the normal distribution N(0,1)\mathcal{N}(0, 1).

See also

Bussi et. al. 2007.

Example:

bussi = hoomd.md.methods.thermostats.Bussi(
    kT=1.5, tau=simulation.operations.integrator.dt * 20
)
simulation.operations.integrator.methods[0].thermostat = bussi
kT

Temperature set point for the thermostat [energy][\mathrm{energy}].

Examples:

bussi.kT = 1.0
bussi.kT = hoomd.variant.Ramp(A=1.0, B=2.0, t_start=0, t_ramp=1_000_000)
Type:

hoomd.variant.variant_like

tau

Thermostat time constant [time].[\mathrm{time}].

Example:

bussi.tau = 0.0
Type:

float