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;