Brownian

class hoomd.md.methods.Brownian(filter, kT, default_gamma=1.0, default_gamma_r=(1.0, 1.0, 1.0))

Bases: Method

Brownian dynamics.

Parameters:
  • filter (hoomd.filter.filter_like) – Subset of particles to apply this method to.

  • kT (hoomd.variant.variant_like) – Temperature of the simulation [energy][\mathrm{energy}].

  • default_gamma (float) – Default drag coefficient for all particle types [masstime1][\mathrm{mass} \cdot \mathrm{time}^{-1}].

  • default_gamma_r ([float, float, float]) – Default rotational drag coefficient tensor for all particles [time1][\mathrm{time}^{-1}].

Brownian integrates particles forward in time according to the overdamped Langevin equations of motion, sometimes called Brownian dynamics or the diffusive limit.

The translational degrees of freedom follow:

drdt=FC+FRγ,FR=0,FR2=2dkTγ/δt,v(t)=0,v(t)2=dkT/m,\begin{split} \frac{d\vec{r}}{dt} &= \frac{\vec{F}_\mathrm{C} + \vec{F}_\mathrm{R}}{\gamma}, \\ \langle \vec{F}_\mathrm{R} \rangle &= 0, \\ \langle |\vec{F}_\mathrm{R}|^2 \rangle &= 2 d k T \gamma / \delta t, \\ \langle \vec{v}(t) \rangle &= 0, \\ \langle |\vec{v}(t)|^2 \rangle &= d k T / m, \\ \end{split}

where FC=Fnet\vec{F}_\mathrm{C} = \vec{F}_\mathrm{net} is the net force on the particle from all forces (hoomd.md.Integrator.forces) and constraints (hoomd.md.Integrator.constraints), γ\gamma is the translational drag coefficient (gamma), FR\vec{F}_\mathrm{R} is a uniform random force, v\vec{v} is the particle’s velocity, and dd is the dimensionality of the system. The magnitude of the random force is chosen via the fluctuation-dissipation theorem to be consistent with the specified drag and temperature, kTkT.

About axes where Ii>0I^i > 0, the rotational degrees of freedom follow:

dqdt=τC+τRγr,τR=0,τRiτRi=2kTγri/δt,L(t)=0,Li(t)Li(t)=kTIi,\begin{split} \frac{d\mathbf{q}}{dt} &= \frac{\vec{\tau}_\mathrm{C} + \vec{\tau}_\mathrm{R}}{\gamma_r}, \\ \langle \vec{\tau}_\mathrm{R} \rangle &= 0, \\ \langle \tau_\mathrm{R}^i \cdot \tau_\mathrm{R}^i \rangle &= 2 k T \gamma_r^i / \delta t, \\ \langle \vec{L}(t) \rangle &= 0, \\ \langle L^i(t) \cdot L^i(t) \rangle &= k T \cdot I^i, \\ \end{split}

where τC=τnet\vec{\tau}_\mathrm{C} = \vec{\tau}_\mathrm{net}, γri\gamma_r^i is the i-th component of the rotational drag coefficient (gamma_r), τRi\tau_\mathrm{R}^i is a component of the uniform random the torque, LiL^i is the i-th component of the particle’s angular momentum and IiI^i is the i-th component of the particle’s moment of inertia. The magnitude of the random torque is chosen via the fluctuation-dissipation theorem to be consistent with the specified drag and temperature, kTkT.

Brownian uses the numerical integration method from I. Snook 2007, The Langevin and Generalised Langevin Approach to the Dynamics of Atomic, Polymeric and Colloidal Systems, section 6.2.5, with the exception that FR\vec{F}_\mathrm{R} is drawn from a uniform random number distribution.

Warning

This numerical method has errors in O(δt)O(\delta t), which is much larger than the errors of most other integration methods which are in O(δt2)O(\delta t^2). As a consequence, expect to use much smaller values of δt\delta t with Brownian compared to e.g. Langevin or ConstantVolume.

In Brownian dynamics, particle velocities and angular momenta are completely decoupled from positions. At each time step, Brownian draws a new velocity distribution consistent with the current set temperature so that hoomd.md.compute.ThermodynamicQuantities will report appropriate temperatures and pressures when logged or used by other methods.

The attributes gamma and gamma_r set the translational and rotational damping coefficients, respectively, by particle type.

Example:

brownian = hoomd.md.methods.Brownian(filter=hoomd.filter.All(), kT=1.5)
simulation.operations.integrator.methods = [brownian]

Members inherited from AutotunedObject:

property kernel_parameters

Kernel parameters. Read more...

property is_tuning_complete

Check if kernel parameter tuning is complete. Read more...

tune_kernel_parameters()

Start tuning kernel parameters. Read more...


Members defined in Brownian:

filter

Subset of particles to apply this method to.

Type:

hoomd.filter.filter_like

kT

Temperature of the simulation [energy][\mathrm{energy}].

Examples:

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

hoomd.variant.Variant

gamma

The drag coefficient for each particle type [masstime1][\mathrm{mass} \cdot \mathrm{time}^{-1}].

Example:

brownian.gamma["A"] = 0.5
Type:

TypeParameter[ particle type, float ]

gamma_r

The rotational drag coefficient tensor for each particle type [time1][\mathrm{time}^{-1}].

Example:

brownian.gamma_r["A"] = [1.0, 2.0, 3.0]
Type:

TypeParameter[particle type,[float, float , float]]