Skip to content

Add constant force directly to wall on DEM simulation #2016

Open
@dohyeongkim1

Description

@dohyeongkim1

Description

Description

Currently, HOOMD-blue 5.1.0 does not provide functionality to apply a constant force directly to walls. This feature is essential for the following DEM simulation use cases:

  1. Simulating compressive deformation of particle systems under constant pressure in the Z direction
  2. Modeling interactions where forces applied to walls move them until force equilibrium is reached with particles
  3. Simulating realistic physical compression processes (applying constant force rather than constant displacement)

At present, we can only apply forces directly to particles or change the box size over time (using BoxResize), but these approaches do not accurately model the physics of applying constant forces to walls.

Proposed solution

  1. Add a mechanism to apply forces to hoomd.wall.WallGeometry classes (Plane, Sphere, Cylinder, etc.):

    • Introduce properties to set force vectors on wall objects (e.g., wall.force = (0, 0, -1000))
    • Enable the physics engine to dynamically update wall positions based on applied forces
  2. Improve the interface for handling wall-particle interactions:

    • Calculate the balance between forces applied to walls and repulsive forces from particles
    • Update wall positions as a result of these forces
    • Include damping elements to prevent oscillations in wall movement

Additional context

This functionality would be valuable for DEM (Discrete Element Method) simulations, material compression tests, soil mechanics, and various fields studying particle system responses to pressure. Currently, we must resort to applying forces directly to particles as a workaround, but this does not provide physically accurate modeling.

I have attempted to implement test cases for this functionality but was unable to apply forces directly to walls due to API limitations. Any guidance on developing custom components to achieve this would also be greatly appreciated.

Thank you for considering this feature request. It would significantly enhance the capabilities of HOOMD-blue for realistic physical simulations.

Proposed solution

  1. User-friendly API example:
    # Example code
    wall = hoomd.wall.Plane(origin=(0, 0, L/2), normal=(0, 0, -1))
    wall_force = hoomd.wall.ConstantForce(walls=[wall])
    wall_force.forces['wall_0'] = (0, 0, -pressure * area)  # Force due to pressure

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions