Brownian dynamics via Euler-Maruyama scheme

This module implements an integrator for (fully overdamped) Brownian dynamics of spherical particles, using the Euler–Maruyama scheme:

\[\vec R_i(t + \tau) = \vec R_i(t) + (D_i / k_B T) \vec F_i(t) \tau + \sqrt{2 D_i \tau\,} \, \vec N_i\]

where \(\vec R_i(t)\) and \(\vec F_i(t)\) are the position and force vectors of particle \(i\) at time \(t\), \(D_i\) is its diffusion constant, and the \(\vec N_i\) are independent random vectors, normally distributed with unit variance. The temperature of the (virtual) solvent is \(T\) and \(\tau\) is the timestep.

Note

This implementation does not include motion due to particle velocities.

class halmd.mdsim.integrators.brownian_euler(args)

Construct Brownian integrator

Parameters:
  • args (table) – keyword arguments

  • args.particle – instance of halmd.mdsim.particle

  • args.box – instance of halmd.mdsim.box

  • args.timestep (number) – integration timestep (defaults to halmd.mdsim.clock.timestep)

  • args.diffusion (table) – vector with diffusion constants \(D_i\) per species

  • args.temperature (number) – solvent temperature

  • args.label (string) – instance label (default: ``particle.label``)

set_timestep(timestep)

Set integration time step in MD units.

Parameters:

timestep (number) – integration timestep

This method forwards to halmd.mdsim.clock.set_timestep(), to ensure that all integrators use an identical time step.

set_temperature(temperature)

Set solvent temperature.

Parameters:

temperature (number) – temperature value

timestep

Integration time step.

diffusion

Diffusion constants \(D_i\) for each particle species.

temperature

Solvent temperature (acting as a heat bath).

disconnect()
label

Label of integrator instance.

Disconnect integrator from core and profiler.

integrate()

Perform the integration step and update particle positions. By default, this function is connected to halmd.mdsim.core.on_integrate().