How to prevent particles from moving#
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() 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)
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.
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)