fix wall/reflect/mesh command

Warning

GPU support for this command has not been tested and may not work as expected.

Syntax

fix ID group-ID wall/reflect/mesh wallstyle wallstyleargs keyword value ...
  • ID, group-ID are documented in fix command

  • wall/reflect/mesh = style name of this fix command

  • wallstyle = MUST be mesh (primitive walls not supported at the moment, use fix wall/reflect in this case)

  • wallstyle args for wallstyle mesh = n_meshes and meshes

n_meshes value = nm
  nm = # of meshes (see fix mesh/surface) to use for the wall (positive integer)
meshes values = meshlist
  meshlist =  id(s) of the mesh(es) (see fix mesh/surface) to be used. These must be defined before
  • zero or more keyword/value pairs may be appended

  • keyword = scaleUpFactor

scaleUpFactor value = factor to blow up particle to ensure collision detection
  • keyword = coeffRestitution

coeffRestitution value = the coefficient of restitution for the particle-wall collision

Examples

fix  myWall all wall/reflect/mesh mesh n_meshes 1 meshes cad1  scaleUpFactor 5.0 coeffRestitution 0.9

Description

Bound the simulation with one or more walls which reflect particles in the specified group when they attempt to move thru them.

This fix requires that the particle is in contact with the wall, i.e., a time-driven algorithm is used, which is based on the collision detection of a particle with radius r_collision = (r_particle * scaleUpFactor) and a wall.

Reflection means that if an atom collides with the wall, then it is put back inside the face by the same delta (+1% to avoid an immediate re-calculation of the collision), and the sign of the corresponding normal component of its velocity is flipped. In addition, a coefficient of restitution can be specified to model inelastic particles / walls.

Because each reflection event divides the corresponding timestep asymmetrically, energy conservation is only satisfied to O(dt), rather than to O(dt^2) as it would be for velocity-Verlet integration without reflective walls.

For the wallstyle mesh, fix_id1, fix_id2 etc. must be IDs of valid fixes of type fix mesh/surface, defining the granular mesh to be used for the wall. Triangle-particle neighbor lists are built to efficiently track particle-triangle contacts. Particle-tri neighbor list build is triggered if any particle moves more than half the skin distance or (in case of moving mesh) if the mesh itself moves more than half the skin distance since the last build. A warning is generated if a dangerous particle-tri neigh list build is detected (e.g. if particles are inserted too close to a wall, see section ‘Restrictions’).


Restart, fix_modify, output, run start/stop

No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various output commands.

Restrictions

There can be only one fix wall/reflect/mesh command with style mesh. Note that this is not really a restriction because you can include multiple fixes of type fix mesh/surface in the fix wall/reflect/mesh command.

When using style style mesh, you have to use the style bin for the neighbor command.

Style mesh can not be used in conjunction with triclinic simulation boxes.

When using style ‘mesh’ in combination with a particle insertion command, you always have to keep a minimum distance between the wall and the insertion region that is equal to maximum particle radius + half the skin defined in the neighbor command. Otherwise, newly inserted particles interpenetrate the walls before a triangle neighbor list is built the first time.

For moving granular wall with style mesh, use fix move/mesh. Note, that this fix is not thoroughly tested for moving mesh walls.

Any dimension (xyz) that has a planar granular wall must be non-periodic.


Default

scaleUpFactor = 1.0; coeffRestitution = 1.0;