How to prevent particles from moving#
MD simulations#
Omit the stationary particles from the filter (or filters) that you provide to your integration method (or methods) to prevent them from moving in MD simulations. For example:
import hoomd
simulation = hoomd.util.make_example_simulation()
# Select mobile particles with a filter.
stationary_particles = hoomd.filter.Tags([0])
mobile_particles = hoomd.filter.SetDifference(hoomd.filter.All(),
stationary_particles)
# Integrate the equations of motion of the mobile particles.
langevin = hoomd.md.methods.Langevin(filter=mobile_particles, kT=1.5)
simulation.operations.integrator = hoomd.md.Integrator(dt=0.001,
methods=[langevin])
simulation.run(100)
HPMC simulations#
To prevent a subset of particles from moving in HPMC simulations:
Use different types for stationary and mobile particles.
Set the move sizes of the stationary type to 0.
Set the shape of the stationary type accordingly.
For example:
import hoomd
# Step 1: Use different types for stationary and mobile particles.
simulation = hoomd.util.make_example_simulation(
particle_types=['A', 'A_no_motion'])
hpmc_ellipsoid = hoomd.hpmc.integrate.Ellipsoid()
hpmc_ellipsoid.shape['A'] = dict(a=0.5, b=0.25, c=0.125)
# Step 2: Set the move sizes of the stationary type to 0.
hpmc_ellipsoid.d['A_no_motion'] = 0
hpmc_ellipsoid.a['A_no_motion'] = 0
# Step 3: Set the shape of the stationary type accordingly.
hpmc_ellipsoid.shape['A_no_motion'] = hpmc_ellipsoid.shape['A']
simulation.operations.integrator = hpmc_ellipsoid
simulation.run(100)