# md.force

Overview

 Force Defines a force in HOOMD-blue. Active Active force. ActiveOnManifold Active force on a manifold.

Details

Apply forces to particles.

class hoomd.md.force.Force

Defines a force in HOOMD-blue.

Pair, angle, bond, and other forces are subclasses of this class.

Note

Force is the base class for all loggable forces. Users should not instantiate this class directly.

Initializes some loggable quantities.

Additional energy term not included in energies $$[\mathrm{energy}]$$.

(Loggable: category=”scalar”)

Type

float

Additional virial tensor term not included in virials $$[\mathrm{energy}]$$.

(Loggable: category=”sequence”)

Type

(1, 6) numpy.ndarray of float

property energies

Energy contribution from each particle $$[\mathrm{energy}]$$.

Attention

In MPI parallel execution, the array is available on rank 0 only. energies is None on ranks >= 1.

(Loggable: category=”particle”)

Type

(N_particles, ) numpy.ndarray of float

property energy

Total contribution to the potential energy of the system $$[\mathrm{energy}]$$.

(Loggable: category=”scalar”)

Type

float

property forces

The force applied to each particle $$[\mathrm{force}]$$.

Attention

In MPI parallel execution, the array is available on rank 0 only. forces is None on ranks >= 1.

(Loggable: category=”particle”)

Type

(N_particles, 3) numpy.ndarray of float

property torques

The torque applied to each particle $$[\mathrm{force} \cdot \mathrm{length}]$$.

Attention

In MPI parallel execution, the array is available on rank 0 only. torques is None on ranks >= 1.

(Loggable: category=”particle”)

Type

(N_particles, 3) numpy.ndarray of float

property virials

Virial tensor contribution from each particle $$[\mathrm{energy}]$$.

The 6 elements form the upper-triangular virial tensor in the order: xx, xy, xz, yy, yz, zz.

Attention

To improve performance Force objects only compute virials when needed. When not computed, virials is None. Virials are computed on every step when using a md.methods.NPT or md.methods.NPH integrator, on steps where a writer is triggered (such as write.GSD which may log pressure or virials), or when Simulation.always_compute_pressure is True.

Attention

In MPI parallel execution, the array is available on rank 0 only. virials is None on ranks >= 1.

(Loggable: category=”particle”)

Type

(N_particles, 6) numpy.ndarray of float

class hoomd.md.force.Active(filter)

Active force.

Parameters

filter (hoomd.filter) – Subset of particles on which to apply active forces.

Active specifies that an active force should be added to particles selected by the filter. particles. Obeys $$\delta {\bf r}_i = \delta t v_0 \hat{p}_i$$, where $$v_0$$ is the active velocity. In 2D $$\hat{p}_i = (\cos \theta_i, \sin \theta_i)$$ is the active force vector for particle $$i$$. The active force and the active torque vectors in the particle frame stay constant during the simulation. Hence, the active forces in the system frame are composed of the forces in particle frame and the current orientation of the particle.

Note

To introduce rotational diffusion to the particle orientations, use create_diffusion_updater.

Examples:

all = hoomd.filter.All()
active = hoomd.md.force.Active(
filter=hoomd.filter.All()
)
active.active_force['A','B'] = (1,0,0)
active.active_torque['A','B'] = (0,0,0)
rotational_diffusion_updater = active.create_diffusion_updater(
trigger=10)
sim.operations += rotational_diffusion_updater

filter

Subset of particles on which to apply active forces.

Type

hoomd.filter

active_force

Active force vector in the local reference frame of the particle $$[\mathrm{force}]$$. It is defined per particle type and stays constant during the simulation.

Type: TypeParameter [particle_type, tuple [float, float, float]]

active_torque

Active torque vector in the local reference frame of the particle $$[\mathrm{force} \cdot \mathrm{length}]$$. It is defined per particle type and stays constant during the simulation.

Type: TypeParameter [particle_type, tuple [float, float, float]]

create_diffusion_updater(trigger, rotational_diffusion)

Create a rotational diffusion updater for this active force.

Parameters
Returns

The rotational diffusion updater.

Return type

hoomd.md.update.ActiveRotationalDiffusion

class hoomd.md.force.ActiveOnManifold(filter, manifold_constraint)

Active force on a manifold.

Parameters

ActiveOnManifold specifies that a constrained active force should be added to particles selected by the filter similar to Active. The active force vector $$\hat{p}_i$$ is restricted to the local tangent plane of the manifold constraint at point $${\bf r}_i$$. For more information see Active.

Hint

Use ActiveOnManifold with a md.methods.rattle integration method with the same manifold constraint.

Examples:

all = filter.All()
sphere = hoomd.md.manifold.Sphere(r=10)
active = hoomd.md.force.ActiveOnManifold(
filter=hoomd.filter.All(), rotation_diff=0.01,
manifold_constraint = sphere
)
active.active_force['A','B'] = (1,0,0)
active.active_torque['A','B'] = (0,0,0)

filter

Subset of particles on which to apply active forces.

Type

hoomd.filter.ParticleFilter

manifold_constraint

Manifold constraint.

Type

hoomd.md.manifold.Manifold

active_force

Active force vector in the local reference frame of the particle $$[\mathrm{force}]$$. It is defined per particle type and stays constant during the simulation.

Type: TypeParameter [particle_type, tuple [float, float, float]]

active_torque

Active torque vector in local reference frame of the particle $$[\mathrm{force} \cdot \mathrm{length}]$$. It is defined per particle type and stays constant during the simulation.

Type: TypeParameter [particle_type, tuple [float, float, float]]

create_diffusion_updater(trigger, rotational_diffusion)

Create a rotational diffusion updater for this active force.

Parameters
Returns

The rotational diffusion updater.

Return type

hoomd.md.update.ActiveRotationalDiffusion