Merge pull request #962 from ndtrung81/body-dem
Discrete element models for the BODY package
This commit is contained in:
BIN
doc/src/Eqs/pair_body_rounded.jpg
Normal file
BIN
doc/src/Eqs/pair_body_rounded.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 144 KiB |
13
doc/src/Eqs/pair_body_rounded.tex
Normal file
13
doc/src/Eqs/pair_body_rounded.tex
Normal file
@ -0,0 +1,13 @@
|
||||
\documentstyle[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
F_n &=& k_n \delta_n - c_n v_n, \qquad \delta_n \le 0 \\
|
||||
&=& -k_{na} \delta_n - c_n v_n, \qquad 0 < \delta_n \le r_c \\
|
||||
&=& 0 \qquad \qquad \qquad \qquad \delta_n > r_c \\
|
||||
F_t &=& \mu k_n \delta_n - c_t v_t, \qquad \delta_n \le 0 \\
|
||||
&=& 0 \qquad \qquad \qquad \qquad \delta_n > 0
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
BIN
doc/src/JPG/pair_body_rounded.jpg
Normal file
BIN
doc/src/JPG/pair_body_rounded.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
@ -678,6 +678,8 @@ USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.
|
||||
"vector"_fix_vector.html,
|
||||
"viscosity"_fix_viscosity.html,
|
||||
"viscous"_fix_viscous.html,
|
||||
"wall/body/polygon"_fix_wall_body_polygon.html,
|
||||
"wall/body/polyhedron"_fix_wall_body_polyhedron.html,
|
||||
"wall/colloid"_fix_wall.html,
|
||||
"wall/gran"_fix_wall_gran.html,
|
||||
"wall/gran/region"_fix_wall_gran_region.html,
|
||||
@ -930,7 +932,9 @@ KOKKOS, o = USER-OMP, t = OPT.
|
||||
"airebo (oi)"_pair_airebo.html,
|
||||
"airebo/morse (oi)"_pair_airebo.html,
|
||||
"beck (go)"_pair_beck.html,
|
||||
"body"_pair_body.html,
|
||||
"body/nparticle"_pair_body_nparticle.html,
|
||||
"body/rounded/polygon"_pair_body_rounded/polygon.html,
|
||||
"body/rounded/polyhedron"_pair_body_rounded/polyhedron.html,
|
||||
"bop"_pair_bop.html,
|
||||
"born (go)"_pair_born.html,
|
||||
"born/coul/dsf"_pair_born.html,
|
||||
|
||||
260
doc/src/body.txt
260
doc/src/body.txt
@ -27,18 +27,16 @@ styles supported by LAMMPS are as follows. The name in the first
|
||||
column is used as the {bstyle} argument for the "atom_style
|
||||
body"_atom_style.html command.
|
||||
|
||||
{nparticle} | rigid body with N sub-particles |
|
||||
{rounded/polygon} | 2d convex polygon with N vertices :tb(c=2,s=|)
|
||||
{nparticle} : rigid body with N sub-particles
|
||||
{rounded/polygon} : 2d polygons with N vertices
|
||||
{rounded/polyhedron} : 3d polyhedra with N vertices, E edges and F faces :tb(s=:)
|
||||
|
||||
The body style determines what attributes are stored for each body and
|
||||
thus how they can be used to compute pairwise body/body or
|
||||
bond/non-body (point particle) interactions. More details of each
|
||||
style are described below.
|
||||
|
||||
NOTE: The rounded/polygon style listed in the table above and
|
||||
described below has not yet been relesed in LAMMPS. It will be soon.
|
||||
|
||||
We hope to add more styles in the future. See "Section
|
||||
More styles may be added in the future. See "Section
|
||||
10.12"_Section_modify.html#mod_12 for details on how to add a new body
|
||||
style to the code.
|
||||
|
||||
@ -61,7 +59,7 @@ the simple particles.
|
||||
By contrast, when body particles are used, LAMMPS treats an entire
|
||||
body as a single particle for purposes of computing pairwise
|
||||
interactions, building neighbor lists, migrating particles between
|
||||
processors, outputting particles to a dump file, etc. This means that
|
||||
processors, output of particles to a dump file, etc. This means that
|
||||
interactions between pairs of bodies or between a body and non-body
|
||||
(point) particle need to be encoded in an appropriate pair style. If
|
||||
such a pair style were to mimic the "fix rigid"_fix_rigid.html model,
|
||||
@ -72,17 +70,20 @@ single body/body interaction was computed.
|
||||
Thus it only makes sense to use body particles and develop such a pair
|
||||
style, when particle/particle interactions are more complex than what
|
||||
the "fix rigid"_fix_rigid.html command can already calculate. For
|
||||
example, if particles have one or more of the following attributes:
|
||||
example, consider particles with one or more of the following
|
||||
attributes:
|
||||
|
||||
represented by a surface mesh
|
||||
represented by a collection of geometric entities (e.g. planes + spheres)
|
||||
deformable
|
||||
internal stress that induces fragmentation :ul
|
||||
|
||||
then the interaction between pairs of particles is likely to be more
|
||||
complex than the summation of simple sub-particle interactions. An
|
||||
example is contact or frictional forces between particles with planar
|
||||
surfaces that inter-penetrate.
|
||||
For these models, the interaction between pairs of particles is likely
|
||||
to be more complex than the summation of simple pairwise interactions.
|
||||
An example is contact or frictional forces between particles with
|
||||
planar surfaces that inter-penetrate. Likewise, the body particle may
|
||||
store internal state, such as a stress tensor used to compute a
|
||||
fracture criterion.
|
||||
|
||||
These are additional LAMMPS commands that can be used with body
|
||||
particles of different styles
|
||||
@ -130,7 +131,9 @@ x1 y1 z1
|
||||
...
|
||||
xN yN zN :pre
|
||||
|
||||
N is the number of sub-particles in the body particle. M = 6 + 3*N.
|
||||
where M = 6 + 3*N, and N is the number of sub-particles in the body
|
||||
particle.
|
||||
|
||||
The integer line has a single value N. The floating point line(s)
|
||||
list 6 moments of inertia followed by the coordinates of the N
|
||||
sub-particles (x1 to zN) as 3N values. These values can be listed on
|
||||
@ -175,15 +178,18 @@ The {bflag2} argument is ignored.
|
||||
|
||||
[Specifics of body style rounded/polygon:]
|
||||
|
||||
NOTE: Aug 2016 - This body style has not yet been added to LAMMPS.
|
||||
The info below is a placeholder.
|
||||
The {rounded/polygon} body style represents body particles as a 2d
|
||||
polygon with a variable number of N vertices. This style can only be
|
||||
used for 2d models; see the "boundary"_boundary.html command. See the
|
||||
"pair_style body/rounded/polygon" doc page for a diagram of two
|
||||
squares with rounded circles at the vertices. Special cases for N = 1
|
||||
(circle) and N = 2 (rod with rounded ends) can also be specified.
|
||||
|
||||
The {rounded/polygon} body style represents body particles as a convex
|
||||
polygon with a variable number N > 2 of vertices, which can only be
|
||||
used for 2d models. One example use of this body style is for 2d
|
||||
discrete element models, as described in "Fraige"_#Fraige. Similar to
|
||||
body style {nparticle}, the atom_style body command for this body
|
||||
style takes two additional arguments:
|
||||
One use of this body style is for 2d discrete element models, as
|
||||
described in "Fraige"_#body-Fraige.
|
||||
|
||||
Similar to body style {nparticle}, the atom_style body command for
|
||||
this body style takes two additional arguments:
|
||||
|
||||
atom_style body rounded/polygon Nmin Nmax
|
||||
Nmin = minimum # of vertices in any body in the system
|
||||
@ -203,17 +209,20 @@ x1 y1 z1
|
||||
...
|
||||
xN yN zN
|
||||
i j j k k ...
|
||||
radius :pre
|
||||
diameter :pre
|
||||
|
||||
N is the number of vertices in the body particle. M = 6 + 3*N + 2*N +
|
||||
1. The integer line has a single value N. The floating point line(s)
|
||||
where M = 6 + 3*N + 2*N + 1, and N is the number of vertices in the
|
||||
body particle.
|
||||
|
||||
The integer line has a single value N. The floating point line(s)
|
||||
list 6 moments of inertia followed by the coordinates of the N
|
||||
vertices (x1 to zN) as 3N values, followed by 2N vertex indices
|
||||
corresponding to the end points of the N edges, followed by a single
|
||||
radius value = the smallest circle encompassing the polygon. That
|
||||
last value is used to facilitate the body/body contact detection.
|
||||
These floating-point values can be listed on as many lines as you
|
||||
wish; see the "read_data"_read_data.html command for more details.
|
||||
vertices (x1 to zN) as 3N values (with z = 0.0 for each), followed by
|
||||
2N vertex indices corresponding to the end points of the N edges,
|
||||
followed by a single diameter value = the rounded diameter of the
|
||||
circle that surrounds each vertex. The diameter value can be different
|
||||
for each body particle. These floating-point values can be listed on
|
||||
as many lines as you wish; see the "read_data"_read_data.html command
|
||||
for more details.
|
||||
|
||||
The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the
|
||||
values consistent with the current orientation of the rigid body
|
||||
@ -225,8 +234,11 @@ from the center-of-mass of the body particle. The center-of-mass
|
||||
position of the particle is specified by the x,y,z values in the
|
||||
{Atoms} section of the data file.
|
||||
|
||||
For example, the following information would specify a square
|
||||
particles whose edge length is sqrt(2):
|
||||
For example, the following information would specify a square particle
|
||||
whose edge length is sqrt(2) and rounded diameter is 1.0. The
|
||||
orientation of the square is aligned with the xy coordinate axes which
|
||||
is consistent with the 6 moments of inertia: ixx iyy izz ixy ixz iyz =
|
||||
1 1 4 0 0 0. Note that only Izz matters in 2D simulations.
|
||||
|
||||
3 1 27
|
||||
4
|
||||
@ -235,12 +247,178 @@ particles whose edge length is sqrt(2):
|
||||
-0.7071 0.7071 0
|
||||
0.7071 0.7071 0
|
||||
0.7071 -0.7071 0
|
||||
0 1 1 2 2 3 3 0
|
||||
0 1
|
||||
1 2
|
||||
2 3
|
||||
3 0
|
||||
1.0 :pre
|
||||
|
||||
A rod in 2D, whose length is 4.0, mass 1.0, rounded at two ends
|
||||
by circles of diameter 0.5, is specified as follows:
|
||||
|
||||
1 1 13
|
||||
2
|
||||
1 1 1.33333 0 0 0
|
||||
-2 0 0
|
||||
2 0 0
|
||||
0.5 :pre
|
||||
|
||||
A disk, whose diameter is 3.0, mass 1.0, is specified as follows:
|
||||
|
||||
1 1 10
|
||||
1
|
||||
1 1 4.5 0 0 0
|
||||
0 0 0
|
||||
3.0 :pre
|
||||
|
||||
The "pair_style body/rounded/polygon"_pair_body_rounded_polygon.html
|
||||
command can be used with this body style to compute body/body
|
||||
interactions.
|
||||
interactions. The "fix wall/body/polygon"_fix_wall_body_polygon.html
|
||||
command can be used with this body style to compute the interaction of
|
||||
body particles with a wall.
|
||||
|
||||
:line
|
||||
|
||||
[Specifics of body style rounded/polyhedron:]
|
||||
|
||||
The {rounded/polyhedron} body style represents body particles as a 3d
|
||||
polyhedron with a variable number of N vertices, E edges and F faces.
|
||||
This style can only be used for 3d models; see the
|
||||
"boundary"_boundary.html command. See the "pair_style
|
||||
body/rounded/polygon" doc page for a diagram of a two 2d squares with
|
||||
rounded circles at the vertices. A 3d cube with rounded spheres at
|
||||
the 8 vertices and 12 rounded edges would be similar. Special cases
|
||||
for N = 1 (sphere) and N = 2 (rod with rounded ends) can also be
|
||||
specified.
|
||||
|
||||
This body style is for 3d discrete element models, as described in
|
||||
"Wang"_#body-Wang.
|
||||
|
||||
Similar to body style {rounded/polygon}, the atom_style body command
|
||||
for this body style takes two additional arguments:
|
||||
|
||||
atom_style body rounded/polyhedron Nmin Nmax
|
||||
Nmin = minimum # of vertices in any body in the system
|
||||
Nmax = maximum # of vertices in any body in the system :pre
|
||||
|
||||
The Nmin and Nmax arguments are used to bound the size of data
|
||||
structures used internally by each particle.
|
||||
|
||||
When the "read_data"_read_data.html command reads a data file for this
|
||||
body style, the following information must be provided for each entry
|
||||
in the {Bodies} section of the data file:
|
||||
|
||||
atom-ID 3 M
|
||||
N E F
|
||||
ixx iyy izz ixy ixz iyz
|
||||
x1 y1 z1
|
||||
...
|
||||
xN yN zN
|
||||
0 1
|
||||
1 2
|
||||
2 3
|
||||
...
|
||||
0 1 2 -1
|
||||
0 2 3 -1
|
||||
...
|
||||
1 2 3 4
|
||||
diameter :pre
|
||||
|
||||
where M = 6 + 3*N + 2*E + 4*F + 1, and N is the number of vertices in
|
||||
the body particle, E = number of edges, F = number of faces.
|
||||
|
||||
The integer line has three values: number of vertices (N), number of
|
||||
edges (E) and number of faces (F). The floating point line(s) list 6
|
||||
moments of inertia followed by the coordinates of the N vertices (x1
|
||||
to zN) as 3N values, followed by 2N vertex indices corresponding to
|
||||
the end points of the E edges, then 4*F vertex indices defining F
|
||||
faces. The last value is the diameter value = the rounded diameter of
|
||||
the sphere that surrounds each vertex. The diameter value can be
|
||||
different for each body particle. These floating-point values can be
|
||||
listed on as many lines as you wish; see the
|
||||
"read_data"_read_data.html command for more details. Because the
|
||||
maxmimum vertices per face is hard-coded to be 4
|
||||
(i.e. quadrilaterals), faces with more than 4 vertices need to be
|
||||
split into triangles or quadrilaterals. For triangular faces, the
|
||||
last vertex index should be set to -1.
|
||||
|
||||
The ordering of the 4 vertices within a face should follow
|
||||
the right-hand rule so that the normal vector of the face points
|
||||
outwards from the center of mass.
|
||||
|
||||
The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the
|
||||
values consistent with the current orientation of the rigid body
|
||||
around its center of mass. The values are with respect to the
|
||||
simulation box XYZ axes, not with respect to the principal axes of the
|
||||
rigid body itself. LAMMPS performs the latter calculation internally.
|
||||
The coordinates of each vertex are specified as its x,y,z displacement
|
||||
from the center-of-mass of the body particle. The center-of-mass
|
||||
position of the particle is specified by the x,y,z values in the
|
||||
{Atoms} section of the data file.
|
||||
|
||||
For example, the following information would specify a cubic particle
|
||||
whose edge length is 2.0 and rounded diameter is 0.5.
|
||||
The orientation of the cube is aligned with the xyz coordinate axes
|
||||
which is consistent with the 6 moments of inertia: ixx iyy izz ixy ixz
|
||||
iyz = 0.667 0.667 0.667 0 0 0.
|
||||
|
||||
1 3 79
|
||||
8 12 6
|
||||
0.667 0.667 0.667 0 0 0
|
||||
1 1 1
|
||||
1 -1 1
|
||||
-1 -1 1
|
||||
-1 1 1
|
||||
1 1 -1
|
||||
1 -1 -1
|
||||
-1 -1 -1
|
||||
-1 1 -1
|
||||
0 1
|
||||
1 2
|
||||
2 3
|
||||
3 0
|
||||
4 5
|
||||
5 6
|
||||
6 7
|
||||
7 4
|
||||
0 4
|
||||
1 5
|
||||
2 6
|
||||
3 7
|
||||
0 1 2 3
|
||||
4 5 6 7
|
||||
0 1 5 4
|
||||
1 2 6 5
|
||||
2 3 7 6
|
||||
3 0 4 7
|
||||
0.5 :pre
|
||||
|
||||
A rod in 3D, whose length is 4.0, mass 1.0 and rounded at two ends
|
||||
by circles of diameter 0.5, is specified as follows:
|
||||
|
||||
1 1 13
|
||||
2
|
||||
0 1.33333 1.33333 0 0 0
|
||||
-2 0 0
|
||||
2 0 0
|
||||
0.5 :pre
|
||||
|
||||
A sphere whose diameter is 3.0 and mass 1.0, is specified as follows:
|
||||
|
||||
1 1 10
|
||||
1
|
||||
0.9 0.9 0.9 0 0 0
|
||||
0 0 0
|
||||
3.0 :pre
|
||||
|
||||
The "pair_style
|
||||
body/rounded/polhedron"_pair_body_rounded_polyhedron.html command can
|
||||
be used with this body style to compute body/body interactions. The
|
||||
"fix wall/body/polyhedron"_fix_wall_body_polygon.html command can be
|
||||
used with this body style to compute the interaction of body particles
|
||||
with a wall.
|
||||
|
||||
:line
|
||||
|
||||
For output purposes via the "compute
|
||||
body/local"_compute_body_local.html and "dump local"_dump.html
|
||||
@ -257,10 +435,10 @@ the body particle itself. These values are calculated using the
|
||||
current COM and orientation of the body particle.
|
||||
|
||||
For images created by the "dump image"_dump_image.html command, if the
|
||||
{body} keyword is set, then each body particle is drawn as a convex
|
||||
polygon consisting of N line segments. Note that the line segments
|
||||
are drawn between the N vertices, which does not correspond exactly to
|
||||
the physical extent of the body (because the "pair_style
|
||||
{body} keyword is set, then each body particle is drawn as a polygon
|
||||
consisting of N line segments. Note that the line segments are drawn
|
||||
between the N vertices, which does not correspond exactly to the
|
||||
physical extent of the body (because the "pair_style
|
||||
rounded/polygon"_pair_body_rounded_polygon.html defines finite-size
|
||||
spheres at those point and the line segments between the spheres are
|
||||
tangent to the spheres). The drawn diameter of each line segment is
|
||||
@ -269,6 +447,10 @@ determined by the {bflag1} parameter for the {body} keyword. The
|
||||
|
||||
:line
|
||||
|
||||
:link(Fraige)
|
||||
:link(body-Fraige)
|
||||
[(Fraige)] F. Y. Fraige, P. A. Langston, A. J. Matchett, J. Dodds,
|
||||
Particuology, 6, 455 (2008).
|
||||
|
||||
:link(body-Wang)
|
||||
[(Wang)] J. Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular
|
||||
Matter, 13, 1 (2011).
|
||||
|
||||
104
doc/src/fix_wall_body_polygon.txt
Normal file
104
doc/src/fix_wall_body_polygon.txt
Normal file
@ -0,0 +1,104 @@
|
||||
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Section_commands.html#comm)
|
||||
|
||||
:line
|
||||
|
||||
fix wall/body/polygon command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
fix ID group-ID wall/body/polygon k_n c_n c_t wallstyle args keyword values ... :pre
|
||||
|
||||
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
||||
wall/body/polygon = style name of this fix command :l
|
||||
k_n = normal repulsion strength (force/distance or pressure units) :l
|
||||
c_n = normal damping coefficient (force/distance or pressure units) :l
|
||||
c_t = tangential damping coefficient (force/distance or pressure units) :l
|
||||
wallstyle = {xplane} or {yplane} or {zplane} or {zcylinder} :l
|
||||
args = list of arguments for a particular style :l
|
||||
{xplane} or {yplane} args = lo hi
|
||||
lo,hi = position of lower and upper plane (distance units), either can be NULL)
|
||||
{zcylinder} args = radius
|
||||
radius = cylinder radius (distance units) :pre
|
||||
zero or more keyword/value pairs may be appended to args :l
|
||||
keyword = {wiggle} :l
|
||||
{wiggle} values = dim amplitude period
|
||||
dim = {x} or {y} or {z}
|
||||
amplitude = size of oscillation (distance units)
|
||||
period = time of oscillation (time units) :pre
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
|
||||
fix 1 all wall/body/polygon 1000.0 20.0 5.0 xplane -10.0 10.0
|
||||
|
||||
[Description:]
|
||||
|
||||
This fix is for use with 2d models of body particles of style
|
||||
{rounded/polygon}. It bounds the simulation domain with wall(s). All
|
||||
particles in the group interact with the wall when they are close
|
||||
enough to touch it. The nature of the interaction between the wall
|
||||
and the polygon particles is the same as that between the polygon
|
||||
particles themselves, which is similar to a Hookean potential. See
|
||||
"Section 6.14"_Section_howto.html#howto_14 of the manual and the
|
||||
"body"_body.html doc page for more details on using body particles.
|
||||
|
||||
The parameters {k_n}, {c_n}, {c_t} have the same meaning and units as
|
||||
those specified with the "pair_style
|
||||
body/rounded/polygon"_pair_body_rounded_polygon.html command.
|
||||
|
||||
The {wallstyle} can be planar or cylindrical. The 2 planar options
|
||||
specify a pair of walls in a dimension. Wall positions are given by
|
||||
{lo} and {hi}. Either of the values can be specified as NULL if a
|
||||
single wall is desired. For a {zcylinder} wallstyle, the cylinder's
|
||||
axis is at x = y = 0.0, and the radius of the cylinder is specified.
|
||||
|
||||
Optionally, the wall can be moving, if the {wiggle} keyword is
|
||||
appended.
|
||||
|
||||
For the {wiggle} keyword, the wall oscillates sinusoidally, similar to
|
||||
the oscillations of particles which can be specified by the "fix
|
||||
move"_fix_move.html command. This is useful in packing simulations of
|
||||
particles. The arguments to the {wiggle} keyword specify a dimension
|
||||
for the motion, as well as it's {amplitude} and {period}. Note that
|
||||
if the dimension is in the plane of the wall, this is effectively a
|
||||
shearing motion. If the dimension is perpendicular to the wall, it is
|
||||
more of a shaking motion. A {zcylinder} wall can only be wiggled in
|
||||
the z dimension.
|
||||
|
||||
Each timestep, the position of a wiggled wall in the appropriate {dim}
|
||||
is set according to this equation:
|
||||
|
||||
position = coord + A - A cos (omega * delta) :pre
|
||||
|
||||
where {coord} is the specified initial position of the wall, {A} is
|
||||
the {amplitude}, {omega} is 2 PI / {period}, and {delta} is the time
|
||||
elapsed since the fix was specified. The velocity of the wall is set
|
||||
to the derivative of this expression.
|
||||
|
||||
[Restart, fix_modify, output, run start/stop, minimize info:]
|
||||
|
||||
None of the "fix_modify"_fix_modify.html options are relevant to this
|
||||
fix. No global or per-atom quantities are stored by this fix for
|
||||
access by various "output commands"_Section_howto.html#howto_15. No
|
||||
parameter of this fix can be used with the {start/stop} keywords of
|
||||
the "run"_run.html command. This fix is not invoked during "energy
|
||||
minimization"_minimize.html.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This fix is part of the BODY package. It is only enabled if LAMMPS
|
||||
was built with that package. See the "Making
|
||||
LAMMPS"_Section_start.html#start_3 section for more info.
|
||||
|
||||
Any dimension (xy) that has a wall must be non-periodic.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"atom_style body"_atom_style.html, "pair_style
|
||||
body/rounded/polygon"_pair_body_rounded_polygon.html
|
||||
|
||||
[Default:] none
|
||||
103
doc/src/fix_wall_body_polyhedron.txt
Normal file
103
doc/src/fix_wall_body_polyhedron.txt
Normal file
@ -0,0 +1,103 @@
|
||||
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Section_commands.html#comm)
|
||||
|
||||
:line
|
||||
|
||||
fix wall/body/polyhedron command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
fix ID group-ID wall/body/polyhedron k_n c_n c_t wallstyle args keyword values ... :pre
|
||||
|
||||
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
||||
wall/body/polyhedron = style name of this fix command :l
|
||||
k_n = normal repulsion strength (force/distance units or pressure units - see discussion below) :l
|
||||
c_n = normal damping coefficient (force/distance units or pressure units - see discussion below) :l
|
||||
c_t = tangential damping coefficient (force/distance units or pressure units - see discussion below) :l
|
||||
wallstyle = {xplane} or {yplane} or {zplane} or {zcylinder} :l
|
||||
args = list of arguments for a particular style :l
|
||||
{xplane} or {yplane} args = lo hi
|
||||
lo,hi = position of lower and upper plane (distance units), either can be NULL)
|
||||
{zcylinder} args = radius
|
||||
radius = cylinder radius (distance units) :pre
|
||||
zero or more keyword/value pairs may be appended to args :l
|
||||
keyword = {wiggle} :l
|
||||
{wiggle} values = dim amplitude period
|
||||
dim = {x} or {y} or {z}
|
||||
amplitude = size of oscillation (distance units)
|
||||
period = time of oscillation (time units) :pre
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
|
||||
fix 1 all wall/body/polyhedron 1000.0 20.0 5.0 xplane -10.0 10.0
|
||||
|
||||
[Description:]
|
||||
|
||||
This fix is for use with 3d models of body particles of style
|
||||
{rounded/polyhedron}. It bounds the simulation domain with wall(s).
|
||||
All particles in the group interact with the wall when they are close
|
||||
enough to touch it. The nature of the interaction between the wall
|
||||
and the polygon particles is the same as that between the polygon
|
||||
particles themselves, which is similar to a Hookean potential. See
|
||||
"Section 6.14"_Section_howto.html#howto_14 of the manual and the
|
||||
"body"_body.html doc page for more details on using body particles.
|
||||
|
||||
The parameters {k_n}, {c_n}, {c_t} have the same meaning and units as
|
||||
those specified with the "pair_style
|
||||
body/rounded/polyhedron"_pair_body_rounded_polyhedron.html command.
|
||||
|
||||
The {wallstyle} can be planar or cylindrical. The 3 planar options
|
||||
specify a pair of walls in a dimension. Wall positions are given by
|
||||
{lo} and {hi}. Either of the values can be specified as NULL if a
|
||||
single wall is desired. For a {zcylinder} wallstyle, the cylinder's
|
||||
axis is at x = y = 0.0, and the radius of the cylinder is specified.
|
||||
|
||||
Optionally, the wall can be moving, if the {wiggle} keyword is appended.
|
||||
|
||||
For the {wiggle} keyword, the wall oscillates sinusoidally, similar to
|
||||
the oscillations of particles which can be specified by the "fix
|
||||
move"_fix_move.html command. This is useful in packing simulations of
|
||||
particles. The arguments to the {wiggle} keyword specify a dimension
|
||||
for the motion, as well as it's {amplitude} and {period}. Note that
|
||||
if the dimension is in the plane of the wall, this is effectively a
|
||||
shearing motion. If the dimension is perpendicular to the wall, it is
|
||||
more of a shaking motion. A {zcylinder} wall can only be wiggled in
|
||||
the z dimension.
|
||||
|
||||
Each timestep, the position of a wiggled wall in the appropriate {dim}
|
||||
is set according to this equation:
|
||||
|
||||
position = coord + A - A cos (omega * delta) :pre
|
||||
|
||||
where {coord} is the specified initial position of the wall, {A} is
|
||||
the {amplitude}, {omega} is 2 PI / {period}, and {delta} is the time
|
||||
elapsed since the fix was specified. The velocity of the wall is set
|
||||
to the derivative of this expression.
|
||||
|
||||
[Restart, fix_modify, output, run start/stop, minimize info:]
|
||||
|
||||
None of the "fix_modify"_fix_modify.html options are relevant to this
|
||||
fix. No global or per-atom quantities are stored by this fix for
|
||||
access by various "output commands"_Section_howto.html#howto_15. No
|
||||
parameter of this fix can be used with the {start/stop} keywords of
|
||||
the "run"_run.html command. This fix is not invoked during "energy
|
||||
minimization"_minimize.html.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This fix is part of the BODY package. It is only enabled if
|
||||
LAMMPS was built with that package. See the "Making
|
||||
LAMMPS"_Section_start.html#start_3 section for more info.
|
||||
|
||||
Any dimension (xyz) that has a wall must be non-periodic.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"atom_style body"_atom_style.html, "pair_style
|
||||
body/rounded/polyhedron"_pair_body_rounded_polyhedron.html
|
||||
|
||||
[Default:] none
|
||||
@ -283,6 +283,8 @@ fix_vector.html
|
||||
fix_viscosity.html
|
||||
fix_viscous.html
|
||||
fix_wall.html
|
||||
fix_wall_body_polygon.html
|
||||
fix_wall_body_polyhedron.html
|
||||
fix_wall_ees.html
|
||||
fix_wall_gran.html
|
||||
fix_wall_gran_region.html
|
||||
@ -424,8 +426,9 @@ pair_agni.html
|
||||
pair_airebo.html
|
||||
pair_awpmd.html
|
||||
pair_beck.html
|
||||
pair_body.html
|
||||
pair_body_nparticle.html
|
||||
pair_body_rounded_polygon.html
|
||||
pair_body_rounded_polyhedron.html
|
||||
pair_bop.html
|
||||
pair_born.html
|
||||
pair_brownian.html
|
||||
|
||||
@ -10,21 +10,21 @@ pair_style body command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
pair_style body cutoff :pre
|
||||
pair_style body/nparticle cutoff :pre
|
||||
|
||||
cutoff = global cutoff for interactions (distance units)
|
||||
|
||||
[Examples:]
|
||||
|
||||
pair_style body 3.0
|
||||
pair_style body/nparticle 3.0
|
||||
pair_coeff * * 1.0 1.0
|
||||
pair_coeff 1 1 1.0 1.5 2.5 :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
Style {body} is for use with body particles and calculates pairwise
|
||||
body/body interactions as well as interactions between body and
|
||||
point-particles. See "Section 6.14"_Section_howto.html#howto_14
|
||||
Style {body/nparticle} is for use with body particles and calculates
|
||||
pairwise body/body interactions as well as interactions between body
|
||||
and point-particles. See "Section 6.14"_Section_howto.html#howto_14
|
||||
of the manual and the "body"_body.html doc page for more details on
|
||||
using body particles.
|
||||
|
||||
@ -8,12 +8,127 @@
|
||||
|
||||
pair_style body/rounded/polygon command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
pair_style body/rounded/polygon c_n c_t mu delta_ua cutoff :pre
|
||||
|
||||
c_n = normal damping coefficient
|
||||
c_t = tangential damping coefficient
|
||||
mu = normal friction coefficient during gross sliding
|
||||
delta_ua = multiple contact scaling factor
|
||||
cutoff = global separation cutoff for interactions (distance units), see below for definition :pre
|
||||
|
||||
[Examples:]
|
||||
|
||||
pair_style body/rounded/polygon 20.0 5.0 0.0 1.0 0.5
|
||||
pair_coeff * * 100.0 1.0
|
||||
pair_coeff 1 1 100.0 1.0 :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
Note: This feature is not yet implemented.
|
||||
Style {body/rounded/polygon} is for use with 2d models of body
|
||||
particles of style {rounded/polygon}. It calculates pairwise
|
||||
body/body interactions which can include body particles modeled as
|
||||
1-vertex circular disks with a specified diameter. See "Section
|
||||
6.14"_Section_howto.html#howto_14 of the manual and the
|
||||
"body"_body.html doc page for more details on using body
|
||||
rounded/polygon particles.
|
||||
|
||||
This pairwise interaction between rounded polygons is described in
|
||||
"Fraige"_#pair-Fraige, where a polygon does not have sharp corners,
|
||||
but is rounded at its vertices by circles centered on each vertex with
|
||||
a specified diameter. The edges of the polygon are defined between
|
||||
pairs of adjacent vertices. The circle diameter for each polygon is
|
||||
specified in the data file read by the "read data"_read_data.html
|
||||
command. This is a 2d discrete element model (DEM) which allows for
|
||||
multiple contact points.
|
||||
|
||||
Note that when two particles interact, the effective surface of each
|
||||
polygon particle is displaced outward from each of its vertices and
|
||||
edges by half its circle diameter (as in the diagram below of a gray
|
||||
and yellow square particle). The interaction forces and energies
|
||||
between two particles are defined with respect to the separation of
|
||||
their respective rounded surfaces, not by the separation of the
|
||||
vertices and edges themselves.
|
||||
|
||||
This means that the specified cutoff in the pair_style command is the
|
||||
cutoff distance, r_c, for the surface separation, \delta_n (see figure
|
||||
below). This is the distance at which two particles no longer
|
||||
interact. If r_c is specified as 0.0, then it is a contact-only
|
||||
interaction. I.e. the two particles must overlap in order to exert a
|
||||
repulsive force on each other. If r_c > 0.0, then the force between
|
||||
two particles will be attractive for surface separations from 0 to
|
||||
r_c, and repulsive once the particles overlap.
|
||||
|
||||
Note that unlike for other pair styles, the specified cutoff is not
|
||||
the distance between the centers of two particles at which they stop
|
||||
interacting. This center-to-center distance depends on the shape and
|
||||
size of the two particles and their relative orientation. LAMMPS
|
||||
takes that into account when computing the surface separation distance
|
||||
and applying the r_c cutoff.
|
||||
|
||||
The forces between vertex-vertex, vertex-edge, and edge-edge overlaps
|
||||
are given by:
|
||||
|
||||
:c,image(Eqs/pair_body_rounded.jpg)
|
||||
|
||||
:c,image(JPG/pair_body_rounded.jpg)
|
||||
|
||||
Note that F_n and F_t are functions of the surface separation \delta_n
|
||||
= d - (R_i + R_j). In this model, when (R_i + R_j) < d < (R_i + R_j)
|
||||
+ r_c, that is, 0 < \delta_n < r_c, the cohesive region of the two
|
||||
surfaces overlap and the two surfaces are attractive to each other.
|
||||
|
||||
In "Fraige"_#pair-Fraige, the tangential friction force between two
|
||||
particles that are in contact is modeled differently prior to gross
|
||||
sliding (i.e. static friction) and during gross-sliding (kinetic
|
||||
friction). The latter takes place when the tangential deformation
|
||||
exceeds the Coulomb frictional limit. In the current implementation,
|
||||
however, we do not take into account frictional history, i.e. we do
|
||||
not keep track of how many time steps the two particles have been in
|
||||
contact nor calculate the tangential deformation. Instead, we assume
|
||||
that gross sliding takes place as soon as two particles are in
|
||||
contact.
|
||||
|
||||
The following coefficients must be defined for each pair of atom types
|
||||
via the "pair_coeff"_pair_coeff.html command as in the examples above,
|
||||
or in the data file read by the "read_data"_read_data.html command:
|
||||
|
||||
k_n (energy/distance^2 units)
|
||||
k_na (energy/distance^2 units) :ul
|
||||
|
||||
Effectively, k_n and k_na are the slopes of the red lines in the plot
|
||||
above for force versus surface separation, for \delta_n < 0 and 0 <
|
||||
\delta_n < r_c respectively.
|
||||
|
||||
[Mixing, shift, table, tail correction, restart, rRESPA info]:
|
||||
|
||||
This pair style does not support the "pair_modify"_pair_modify.html
|
||||
mix, shift, table, and tail options.
|
||||
|
||||
This pair style does not write its information to "binary restart
|
||||
files"_restart.html. Thus, you need to re-specify the pair_style and
|
||||
pair_coeff commands in an input script that reads a restart file.
|
||||
|
||||
This pair style can only be used via the {pair} keyword of the
|
||||
"run_style respa"_run_style.html command. It does not support the
|
||||
{inner}, {middle}, {outer} keywords.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
These pair styles are part of the BODY package. They are only enabled
|
||||
if LAMMPS was built with that package. See the "Making
|
||||
LAMMPS"_Section_start.html#start_3 section for more info.
|
||||
|
||||
This pair style requires the "newton"_newton.html setting to be "on"
|
||||
for pair interactions.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"pair_style body"_pair_body.html
|
||||
"pair_coeff"_pair_coeff.html
|
||||
|
||||
[Default:] none
|
||||
|
||||
:link(pair-Fraige)
|
||||
[(Fraige)] F. Y. Fraige, P. A. Langston, A. J. Matchett, J. Dodds,
|
||||
Particuology, 6, 455 (2008).
|
||||
|
||||
130
doc/src/pair_body_rounded_polyhedron.txt
Normal file
130
doc/src/pair_body_rounded_polyhedron.txt
Normal file
@ -0,0 +1,130 @@
|
||||
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Section_commands.html#comm)
|
||||
|
||||
:line
|
||||
|
||||
pair_style body/rounded/polyhedron command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
pair_style body/rounded/polyhedron c_n c_t mu delta_ua cutoff :pre
|
||||
|
||||
c_n = normal damping coefficient
|
||||
c_t = tangential damping coefficient
|
||||
mu = normal friction coefficient during gross sliding
|
||||
delta_ua = multiple contact scaling factor
|
||||
cutoff = global separation cutoff for interactions (distance units), see below for definition :pre
|
||||
|
||||
[Examples:]
|
||||
|
||||
pair_style body/rounded/polyhedron 20.0 5.0 0.0 1.0 0.5
|
||||
pair_coeff * * 100.0 1.0
|
||||
pair_coeff 1 1 100.0 1.0 :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
Style {body/rounded/polygon} is for use with 3d models of body
|
||||
particles of style {rounded/polyhedron}. It calculates pairwise
|
||||
body/body interactions which can include body particles modeled as
|
||||
1-vertex spheres with a specified diameter. See "Section
|
||||
6.14"_Section_howto.html#howto_14 of the manual and the
|
||||
"body"_body.html doc page for more details on using body
|
||||
rounded/polyhedron particles.
|
||||
|
||||
This pairwise interaction between the rounded polyhedra is described
|
||||
in "Wang"_#pair-Wang, where a polyhedron does not have sharp corners
|
||||
and edges, but is rounded at its vertices and edges by spheres
|
||||
centered on each vertex with a specified diameter. The edges if the
|
||||
polyhedron are defined between pairs of adjacent vertices. Its faces
|
||||
are defined by a loop of edges. The sphere diameter for each polygon
|
||||
is specified in the data file read by the "read data"_read_data.html
|
||||
command. This is a discrete element model (DEM) which allows for
|
||||
multiple contact points.
|
||||
|
||||
Note that when two particles interact, the effective surface of each
|
||||
polyhedron particle is displaced outward from each of its vertices,
|
||||
edges, and faces by half its sphere diameter. The interaction forces
|
||||
and energies between two particles are defined with respect to the
|
||||
separation of their respective rounded surfaces, not by the separation
|
||||
of the vertices, edges, and faces themselves.
|
||||
|
||||
This means that the specified cutoff in the pair_style command is the
|
||||
cutoff distance, r_c, for the surface separation, \delta_n (see figure
|
||||
below). This is the distance at which two particles no longer
|
||||
interact. If r_c is specified as 0.0, then it is a contact-only
|
||||
interaction. I.e. the two particles must overlap in order to exert a
|
||||
repulsive force on each other. If r_c > 0.0, then the force between
|
||||
two particles will be attractive for surface separations from 0 to
|
||||
r_c, and repulsive once the particles overlap.
|
||||
|
||||
Note that unlike for other pair styles, the specified cutoff is not
|
||||
the distance between the centers of two particles at which they stop
|
||||
interacting. This center-to-center distance depends on the shape and
|
||||
size of the two particles and their relative orientation. LAMMPS
|
||||
takes that into account when computing the surface separation distance
|
||||
and applying the r_c cutoff.
|
||||
|
||||
The forces between vertex-vertex, vertex-edge, vertex-face, edge-edge,
|
||||
and edge-face overlaps are given by:
|
||||
|
||||
:c,image(Eqs/pair_body_rounded.jpg)
|
||||
|
||||
:c,image(JPG/pair_body_rounded.jpg)
|
||||
|
||||
In "Wang"_#pair-Wang, the tangential friction force between two
|
||||
particles that are in contact is modeled differently prior to gross
|
||||
sliding (i.e. static friction) and during gross-sliding (kinetic
|
||||
friction). The latter takes place when the tangential deformation
|
||||
exceeds the Coulomb frictional limit. In the current implementation,
|
||||
however, we do not take into account frictional history, i.e. we do
|
||||
not keep track of how many time steps the two particles have been in
|
||||
contact nor calculate the tangential deformation. Instead, we assume
|
||||
that gross sliding takes place as soon as two particles are in
|
||||
contact.
|
||||
|
||||
The following coefficients must be defined for each pair of atom types
|
||||
via the "pair_coeff"_pair_coeff.html command as in the examples above,
|
||||
or in the data file read by the "read_data"_read_data.html command:
|
||||
|
||||
k_n (energy/distance^2 units)
|
||||
k_na (energy/distance^2 units) :ul
|
||||
|
||||
Effectively, k_n and k_na are the slopes of the red lines in the plot
|
||||
above for force versus surface separation, for \delta_n < 0 and 0 <
|
||||
\delta_n < r_c respectively.
|
||||
|
||||
[Mixing, shift, table, tail correction, restart, rRESPA info]:
|
||||
|
||||
This pair style does not support the "pair_modify"_pair_modify.html
|
||||
mix, shift, table, and tail options.
|
||||
|
||||
This pair style does not write its information to "binary restart
|
||||
files"_restart.html. Thus, you need to re-specify the pair_style and
|
||||
pair_coeff commands in an input script that reads a restart file.
|
||||
|
||||
This pair style can only be used via the {pair} keyword of the
|
||||
"run_style respa"_run_style.html command. It does not support the
|
||||
{inner}, {middle}, {outer} keywords.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
These pair styles are part of the BODY package. They are only enabled
|
||||
if LAMMPS was built with that package. See the "Making
|
||||
LAMMPS"_Section_start.html#start_3 section for more info.
|
||||
|
||||
This pair style requires the "newton"_newton.html setting to be "on"
|
||||
for pair interactions.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"pair_coeff"_pair_coeff.html
|
||||
|
||||
[Default:] none
|
||||
|
||||
:link(pair-Wang)
|
||||
[(Wang)] J. Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular
|
||||
Matter, 13, 1 (2011).
|
||||
|
||||
Reference in New Issue
Block a user