small changes to Trung body files

This commit is contained in:
Steven J. Plimpton 2018-07-09 16:15:15 -06:00
parent 82b1ab2ac4
commit 13338bf8cb
22 changed files with 1646 additions and 182 deletions

View File

@ -36,7 +36,7 @@ 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.
We hope to add more styles in the future. See "Section
More styles ma 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.
@ -59,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,
@ -70,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
@ -128,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
@ -173,13 +178,18 @@ The {bflag2} argument is ignored.
[Specifics of body style rounded/polygon:]
The {rounded/polygon} body style represents body particles as
a polygon with a variable number N of vertices, which can only be
used for 2d models. Special cases for N = 1 (spheres) and N = 2
(rods) are also included. 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:
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.
NOTE: include a diagram of a a rounded polygon body particle
Special cases for N = 1 (spheres) and N = 2 (rods) are also included.
One 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:
atom_style body rounded/polygon Nmin Nmax
Nmin = minimum # of vertices in any body in the system
@ -201,14 +211,19 @@ xN yN zN
i j j k k ...
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
diameter value = the rounded diameter of the vertices.
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. 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.
NOTE: can the diameter value be different for each body particle?
The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the
values consistent with the current orientation of the rigid body
@ -220,8 +235,10 @@ 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):
NOTE: oriented how?
3 1 27
4
@ -238,18 +255,31 @@ particles whose edge length is sqrt(2):
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 polyhedron with N vertices, E edges and F faces.
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.
NOTE: include a diagram of a a rounded polyhedron body particle
Special cases for N = 1 (spheres) and N = 2 (rods) are also valid.
This body style is for 3d discrete element models, as described in "Wang"_#Wang.
Similar to body style {rounded/polygon}, the atom_style body command for this body
style takes two additional arguments:
NOTE: can 2d objects also be specified as a special case, e.g. a
triangle?
This body style is for 3d discrete element models, as described in
"Wang"_#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
@ -278,18 +308,57 @@ xN yN zN
1 2 3 4
diameter :pre
N is the number of vertices in the body particle. M = 6 + 3*N + 2*E
+ 4*F + 1. 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, 4*F vertex indices defining F faces.
The last value is the radius value = the rounded diameter of the vertices.
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 index should be set to -1.
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 radius value = the rounded diameter of
the sphere that surrounds each vertex. 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.
NOTE: is there some right-hand rule for the ordering of the 4 vertices
within each face?
NOTE: can the diameter value be different for each body particle?
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 1.0:
NOTE: oriented how?
NOTE: fill in these values correctly
3 1 27
4
1 1 4 0 0 0
-0.7071 -0.7071 0
-0.7071 0.7071 0
0.7071 0.7071 0
0.7071 -0.7071 0
0 1
1 2
2 3
3 0
1.0 :pre
:line
@ -309,9 +378,9 @@ 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 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
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
@ -325,4 +394,5 @@ determined by the {bflag1} parameter for the {body} keyword. The
Particuology, 6, 455 (2008).
:link(Wang)
[(Wang)] J. Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular Matter, 13, 1 (2011).
[(Wang)] J. Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular
Matter, 13, 1 (2011).

View File

@ -14,9 +14,9 @@ fix ID group-ID wall/body/polygon k_n c_n c_t wallstyle args keyword values ...
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 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
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
@ -37,34 +37,37 @@ fix 1 all wall/body/polygon 1000.0 20.0 5.0 xplane -10.0 10.0
[Description:]
Bound the simulation domain of systems of body particles of style
body/rounded/polygon 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 polygons is
the same as that between the polygons themselves, which is similar to the Hookean potential.
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.
This fix is designed for use with the "body/rounded/polygon" body style,
which is specified as an argument to the "atom-style body" command.
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 commands.
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 3 planar options
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.
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.
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:
@ -87,14 +90,15 @@ 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
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.
Any dimension (xy) that has a wall must be non-periodic.
[Related commands:]
"pair_style body/rounded/polygon"_pair_body_rounded_polygon.html
"atom_style body"_atom_style.html, "pair_style
body/rounded/polygon"_pair_body_rounded_polygon.html
[Default:] none

View File

@ -37,16 +37,18 @@ fix 1 all wall/body/polyhedron 1000.0 20.0 5.0 xplane -10.0 10.0
[Description:]
Bound the simulation domain of systems of body particles of style
body/rounded/polyhedron 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 polygons is
the same as that between the polygons themselves, which is similar to the Hookean potential.
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.
This fix is designed for use with the "body/rounded/polyhedron" body style,
which is specified as an argument to the "atom-style body" command.
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_polygon.html commands.
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
@ -57,14 +59,14 @@ 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.
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:
@ -95,6 +97,7 @@ Any dimension (xyz) that has a wall must be non-periodic.
[Related commands:]
"pair_style body/rounded/polyhedron"_pair_body_rounded_polygon.html
"atom_style body"_atom_style.html, "pair_style
body/rounded/polyhedron"_pair_body_rounded_polyhedron.html
[Default:] none

View File

@ -16,7 +16,9 @@ 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 sepration cutoff for interactions (distance units), see below for definition :pre
cutoff = global separation cutoff for interactions (distance units), see below for definition :pre
NOTE: what does gross sliding mean?
[Examples:]
@ -26,36 +28,77 @@ pair_coeff 1 1 100.0 1.0 :pre
[Description:]
Style {body/rounded/polygon} is for use with body particles and calculates pairwise
Style {body/rounded/polygon} is for use with 2d models of body
particles of style {rounded/polygon}. It 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.
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.
This pair style is designed for use with the "body/rounded/polygon" body style,
which is specified as an argument to the "atom-style body" command.
See the "body/rounded/polygon"_body.html doc page for more details about the body
styles LAMMPS supports. The pairwise interaction between the rounded polygons is described
in "Fraige"_#Fraige, where the polygons are rounded at the vertices and edges
by circles of diameter a. This is a version of discrete element models (DEM)
with multiple contact points.
This pairwise interaction between rounded polygons is described in
"Fraige"_#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 bewteen
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.
Because the polygons can have different rounded diameters, the cutoff specified in
the pair style command is for the surface separation between two interacting entities
(e.g. vertex-vertex, vertex-edge or edge-edge) excluding their rounded diameters,
i.e. separation = center-center distance - (rounded diameter of entity i + rounded diameter of entity j)/2.
The interaction forces and energies are also defined with respect to the rounded surface separation,
instead of center-center distance.
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. The interaction forces and
energies bewteen two particles are defined with respect to the
separation of their respective rounded surfaces, not by the separation
of the vertices and edges themselves.
For style {body/rounded/polygon}, the following coefficients must be defined for each
pair of atoms types via the "pair_coeff"_pair_coeff.html command as in
the examples above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands:
This means that the specified cutoff in the pair_style command should
be large enough to encompass the center-to-center distance between two
particles (at any orientation) which would produce a surface-surface
overlap. For example, consider two square particles with edge length
= 1.0 and circle diameter 0.2. The maximum distance of one polygon's
surface from its center is not sqrt(2)/2, but (sqrt(2)+0.1)/2. Thus
the cutoff distance should be sqrt(2) + 0.1, since the surfaces of two
particles that far apart could be touching.
NOTE: Do we need a diagram of 2 overlapping polygon particles that
explains how contact is defined? Do we need an equation(s) that
explain what the params in pair style and coeff mean, for damping and
spring constants? Or do we just want to reference the paper for that?
NOTE: say something about no frictional history ?
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
[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.
NOTE: is there a newton on or off requirement for using this pair style?
If so, say something like this:
This pair style requires the "newton"_newton.html setting to be "on"
for pair interactions.
[Related commands:]
"pair_coeff"_pair_coeff.html
@ -65,5 +108,3 @@ k_na (energy/distance^2 units) :ul
:link(Fraige)
[(Fraige)] F. Y. Fraige, P. A. Langston, A. J. Matchett, J. Dodds,
Particuology, 6, 455 (2008).

View File

@ -18,6 +18,8 @@ mu = normal friction coefficient during gross sliding
delta_ua = multiple contact scaling factor
cutoff = global sepration cutoff for interactions (distance units), see below for definition :pre
NOTE: what does gross sliding mean?
[Examples:]
pair_style body/rounded/polyhedron 20.0 5.0 0.0 1.0 0.5
@ -26,36 +28,78 @@ pair_coeff 1 1 100.0 1.0 :pre
[Description:]
Style {body/rounded/polyhedron} is for use with body particles and calculates pairwise
Style {body/rounded/polygon} is for use with 3d models of body
particles of style {rounded/polyhedron}. It 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.
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.
This pair style is designed for use with the "body/rounded/polyhedron" body style,
which is specified as an argument to the "atom-style body" command.
See the "body/rounded/polyhedron"_body.html doc page for more details about the body
styles LAMMPS supports. The pairwise interaction between the rounded polygons is described
in "Wang"_#Wang, where the polygons are rounded at the vertices and edges
by circles of diameter a. This is a version of discrete element models (DEM)
with multiple contact points.
This pairwise interaction between rounded polyhedra is described in
"Wang"_#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 bewteen 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.
Because the polygons can have different rounded diameters, the cutoff specified in
the pair style command is for the surface separation between two interacting entities
(e.g. vertex-vertex, vertex-edge, vertex-face and edge-edge) excluding their rounded diameters,
i.e. separation = center-center distance - (rounded diameter of entity i + rounded diameter of entity j)/2.
The interaction forces and energies are also defined with respect to the rounded surface separation,
instead of center-center distance.
Note that when two particles interaact, 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 bewteen 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.
For style {body/rounded/polyhedron}, the following coefficients must be defined for each
pair of atoms types via the "pair_coeff"_pair_coeff.html command as in
the examples above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands:
This means that the specified cutoff in the pair_style command should
be large enough to encompass the center-to-center distance between two
particles (at any orientation) which would produce a surface-surface
overlap. For example, consider two cubic particles with edge length =
1.0 and sphere diameter 0.2. The maximum distance of one polygon's
surface from its center is not sqrt(3)/2, but (sqrt(3)+0.1)/2. Thus
the cutoff distance should be sqrt(3) + 0.1, since the surfaces of two
particles that far apart could be touching.
NOTE: Do we need a diagram of 2 overlapping polyhedron particles that
explains how contact is defined? Do we need an equation(s) that
explain what the params in pair style and coeff mean, for damping and
spring constants? Or do we just want to reference the paper for that?
NOTE: say something about no frictional history ?
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
[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.
NOTE: is there a newton on or off requirement for using this pair style?
If so, say something like this:
This pair style requires the "newton"_newton.html setting to be "on"
for pair interactions.
[Related commands:]
"pair_coeff"_pair_coeff.html
@ -63,5 +107,6 @@ k_na (energy/distance^2 units) :ul
[Default:] none
:link(Wang)
[(Wang)] J. Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular Matter, 13, 1 (2011).
[(Wang)] J. Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular
Matter, 13, 1 (2011).

View File

@ -38,11 +38,11 @@ fix 1 all nvt/body temp 1.2 1.2 0.1
compute p2 all pressure 1_temp
compute 1 all body/local id 1 2 3
dump 1 all local 1000 dump.* index c_1[1] c_1[2] c_1[3] c_1[4]
#compute 1 all body/local id 1 2 3
#dump 1 all local 1000 dump.* index c_1[1] c_1[2] c_1[3] c_1[4]
#dump 2 all image 1000 image.*.jpg type type &
# zoom 1.5 adiam 1.5 body yes 0 0 view 60 15
# zoom 1.5 adiam 1.5 body type 0 0 view 60 15
#dump_modify 2 pad 6
thermo_style custom step ke pe etotal c_p2 c_1_temp

View File

@ -49,7 +49,7 @@ thermo_style custom step atoms ke pe etotal press
thermo 1000
#dump 2 all image 500 image.*.jpg type type &
# zoom 1.5 adiam 1.5 body yes 0 0 view 75 15
# zoom 1.5 adiam 1.5 body type 0 0 view 75 15
#dump_modify 2 pad 6
run ${steps}

View File

@ -42,13 +42,14 @@ fix 1 all npt/body temp $T $T 1.0 x 0.001 $P 1.0 &
fix 2 all enforce2d
compute 1 all body/local id 1 2 3
dump 1 all local 100000 dump.polygon.* index c_1[1] c_1[2] c_1[3] c_1[4]
#compute 1 all body/local id 1 2 3
#dump 1 all local 100000 dump.polygon.* index c_1[1] c_1[2] c_1[3] c_1[4]
thermo_style custom step ke pe etotal press
thermo 1000
#dump 2 all image 10000 image.*.jpg type type zoom 2.0 adiam 1.5 body yes 0 0
#dump 2 all image 10000 image.*.jpg type type zoom 2.0 &
# adiam 1.5 body type 0 0
#dump_modify 2 pad 6
run ${steps}

View File

@ -44,13 +44,14 @@ fix 1 all npt/body temp $T $T 1.0 x 0.001 $P 1.0 fixedpoint 0 0 0
fix 2 all enforce2d
fix 3 all wall/body/polygon 2000 50 50 yplane 0.0 48.0
compute 1 all body/local id 1 2 3
dump 1 all local 100000 dump.polygon.* index c_1[1] c_1[2] c_1[3] c_1[4]
#compute 1 all body/local id 1 2 3
#dump 1 all local 100000 dump.polygon.* index c_1[1] c_1[2] c_1[3] c_1[4]
thermo_style custom step ke pe etotal press
thermo 1000
#dump 2 all image 10000 image.*.jpg type type zoom 2.0 adiam 1.5 body yes 0 0
#dump 2 all image 10000 image.*.jpg type type zoom 2.0 &
# adiam 1.5 body type 0 0
#dump_modify 2 pad 6
run ${steps}

View File

@ -0,0 +1,125 @@
LAMMPS (29 Jun 2018)
# 3d rounded cubes
variable r index 3
variable steps index 10000
units lj
dimension 3
atom_style body rounded/polyhedron 1 10
read_data data.cubes
orthogonal box = (0 0 0) to (6 6 6)
1 by 1 by 1 MPI processor grid
reading atoms ...
2 atoms
2 bodies
replicate $r $r $r
replicate 3 $r $r
replicate 3 3 $r
replicate 3 3 3
orthogonal box = (0 0 0) to (18 18 18)
1 by 1 by 1 MPI processor grid
54 atoms
Time spent = 0.000217915 secs
velocity all create 1.2 187287 dist gaussian mom yes rot yes
variable cut_inner equal 0.5
variable k_n equal 100
variable k_na equal 1
variable c_n equal 20
variable c_t equal 5
variable mu equal 0
variable A_ua equal 1
pair_style body/rounded/polyhedron ${c_n} ${c_t} ${mu} ${A_ua} ${cut_inner}
pair_style body/rounded/polyhedron 20 ${c_t} ${mu} ${A_ua} ${cut_inner}
pair_style body/rounded/polyhedron 20 5 ${mu} ${A_ua} ${cut_inner}
pair_style body/rounded/polyhedron 20 5 0 ${A_ua} ${cut_inner}
pair_style body/rounded/polyhedron 20 5 0 1 ${cut_inner}
pair_style body/rounded/polyhedron 20 5 0 1 0.5
pair_coeff * * ${k_n} ${k_na}
pair_coeff * * 100 ${k_na}
pair_coeff * * 100 1
comm_modify vel yes
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
timestep 0.001
#fix 1 all nve/body
fix 1 all nvt/body temp 1.2 1.2 0.1
#fix 1 all npt/body temp 1.2 1.2 0.1 iso 0.002 0.02 1.0
compute p2 all pressure 1_temp
#compute 1 all body/local id 1 2 3
#dump 1 all local 1000 dump.* index c_1[1] c_1[2] c_1[3] c_1[4]
#dump 2 all image 1000 image.*.jpg type type # zoom 1.5 adiam 1.5 body type 0 0 view 60 15
#dump_modify 2 pad 6
thermo_style custom step ke pe etotal c_p2 c_1_temp
thermo 1000
run ${steps}
run 10000
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 3.9641
ghost atom cutoff = 3.9641
binsize = 1.98205, bins = 10 10 10
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair body/rounded/polyhedron, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/3d/newton
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.952 | 4.952 | 4.952 Mbytes
Step KinEng PotEng TotEng c_p2 c_1_temp
0 1.7666667 0 1.7666667 0.01090535 0.59439252
1000 3.1462962 0.17392649 3.3202227 0.02361912 1.1654694
2000 2.9311648 0.13836102 3.0695258 0.021748224 1.1950624
3000 3.090491 0.16511199 3.255603 0.018691142 1.23672
4000 2.7401565 0.17792155 2.9180781 0.015093853 1.1180839
5000 3.0880849 0.17587085 3.2639557 0.030563042 1.2831154
6000 3.2180776 0.19732251 3.4154001 0.028338151 1.258839
7000 2.9514882 0.25088882 3.202377 0.025296925 1.1746326
8000 3.0101226 0.28825968 3.2983823 0.027273454 1.2138056
9000 3.0164253 0.1901733 3.2065986 0.033228915 1.3095914
10000 2.3780401 0.34082434 2.7188644 0.031838531 1.0208679
Loop time of 38.5686 on 1 procs for 10000 steps with 54 atoms
Performance: 22401.653 tau/day, 259.278 timesteps/s
100.0% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 38.426 | 38.426 | 38.426 | 0.0 | 99.63
Neigh | 0.0043154 | 0.0043154 | 0.0043154 | 0.0 | 0.01
Comm | 0.047616 | 0.047616 | 0.047616 | 0.0 | 0.12
Output | 0.00017595 | 0.00017595 | 0.00017595 | 0.0 | 0.00
Modify | 0.082948 | 0.082948 | 0.082948 | 0.0 | 0.22
Other | | 0.007761 | | | 0.02
Nlocal: 54 ave 54 max 54 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 96 ave 96 max 96 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 100 ave 100 max 100 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 100
Ave neighs/atom = 1.85185
Neighbor list builds = 268
Dangerous builds = 0
Total wall time: 0:00:38

View File

@ -0,0 +1,125 @@
LAMMPS (29 Jun 2018)
# 3d rounded cubes
variable r index 3
variable steps index 10000
units lj
dimension 3
atom_style body rounded/polyhedron 1 10
read_data data.cubes
orthogonal box = (0 0 0) to (6 6 6)
1 by 2 by 2 MPI processor grid
reading atoms ...
2 atoms
2 bodies
replicate $r $r $r
replicate 3 $r $r
replicate 3 3 $r
replicate 3 3 3
orthogonal box = (0 0 0) to (18 18 18)
1 by 2 by 2 MPI processor grid
54 atoms
Time spent = 0.00103807 secs
velocity all create 1.2 187287 dist gaussian mom yes rot yes
variable cut_inner equal 0.5
variable k_n equal 100
variable k_na equal 1
variable c_n equal 20
variable c_t equal 5
variable mu equal 0
variable A_ua equal 1
pair_style body/rounded/polyhedron ${c_n} ${c_t} ${mu} ${A_ua} ${cut_inner}
pair_style body/rounded/polyhedron 20 ${c_t} ${mu} ${A_ua} ${cut_inner}
pair_style body/rounded/polyhedron 20 5 ${mu} ${A_ua} ${cut_inner}
pair_style body/rounded/polyhedron 20 5 0 ${A_ua} ${cut_inner}
pair_style body/rounded/polyhedron 20 5 0 1 ${cut_inner}
pair_style body/rounded/polyhedron 20 5 0 1 0.5
pair_coeff * * ${k_n} ${k_na}
pair_coeff * * 100 ${k_na}
pair_coeff * * 100 1
comm_modify vel yes
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
timestep 0.001
#fix 1 all nve/body
fix 1 all nvt/body temp 1.2 1.2 0.1
#fix 1 all npt/body temp 1.2 1.2 0.1 iso 0.002 0.02 1.0
compute p2 all pressure 1_temp
#compute 1 all body/local id 1 2 3
#dump 1 all local 1000 dump.* index c_1[1] c_1[2] c_1[3] c_1[4]
#dump 2 all image 1000 image.*.jpg type type # zoom 1.5 adiam 1.5 body type 0 0 view 60 15
#dump_modify 2 pad 6
thermo_style custom step ke pe etotal c_p2 c_1_temp
thermo 1000
run ${steps}
run 10000
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 3.9641
ghost atom cutoff = 3.9641
binsize = 1.98205, bins = 10 10 10
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair body/rounded/polyhedron, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/3d/newton
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.879 | 5.068 | 5.256 Mbytes
Step KinEng PotEng TotEng c_p2 c_1_temp
0 1.7666667 0 1.7666667 0.01090535 0.59439252
1000 3.1462962 0.17392649 3.3202227 0.02361912 1.1654694
2000 2.9311648 0.13836102 3.0695258 0.021748224 1.1950624
3000 3.090491 0.16511199 3.255603 0.018691142 1.23672
4000 2.7401565 0.17792155 2.9180781 0.015093853 1.1180839
5000 3.0880849 0.17587085 3.2639557 0.030563042 1.2831154
6000 3.2180776 0.19732251 3.4154001 0.028338151 1.258839
7000 2.9514882 0.25088882 3.202377 0.025296925 1.1746326
8000 3.0101226 0.28825968 3.2983823 0.027273454 1.2138056
9000 3.0164253 0.1901733 3.2065986 0.033228915 1.3095914
10000 2.3780401 0.34082434 2.7188644 0.031838531 1.0208679
Loop time of 20.5306 on 4 procs for 10000 steps with 54 atoms
Performance: 42083.509 tau/day, 487.078 timesteps/s
100.0% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 7.5288 | 10.878 | 19.952 | 159.0 | 52.98
Neigh | 0.0014424 | 0.0016552 | 0.0021195 | 0.7 | 0.01
Comm | 0.50623 | 9.5805 | 12.93 | 169.4 | 46.66
Output | 0.00011921 | 0.00014341 | 0.00021386 | 0.0 | 0.00
Modify | 0.044663 | 0.047684 | 0.05382 | 1.6 | 0.23
Other | | 0.023 | | | 0.11
Nlocal: 13.5 ave 17 max 9 min
Histogram: 1 0 0 1 0 0 0 0 1 1
Nghost: 63.5 ave 68 max 58 min
Histogram: 1 0 0 1 0 0 0 0 0 2
Neighs: 25 ave 38 max 6 min
Histogram: 1 0 0 0 0 1 0 0 1 1
Total # of neighbors = 100
Ave neighs/atom = 1.85185
Neighbor list builds = 268
Dangerous builds = 0
Total wall time: 0:00:20

View File

@ -0,0 +1,138 @@
LAMMPS (29 Jun 2018)
# pouring 3d rounded polyhedron bodies
variable steps index 6000
units lj
boundary p p fm
comm_modify vel yes
atom_style body rounded/polyhedron 1 8
atom_modify map array
region reg block 0 50 0 50 0 50 units box
create_box 4 reg
Created orthogonal box = (0 0 0) to (50 50 50)
1 by 1 by 1 MPI processor grid
variable cut_inner equal 0.5
variable k_n equal 100
variable k_na equal 5
variable c_n equal 20
variable c_t equal 5
variable mu equal 0
variable A_ua equal 1
pair_style body/rounded/polyhedron ${c_n} ${c_t} ${mu} ${A_ua} ${cut_inner}
pair_style body/rounded/polyhedron 20 ${c_t} ${mu} ${A_ua} ${cut_inner}
pair_style body/rounded/polyhedron 20 5 ${mu} ${A_ua} ${cut_inner}
pair_style body/rounded/polyhedron 20 5 0 ${A_ua} ${cut_inner}
pair_style body/rounded/polyhedron 20 5 0 1 ${cut_inner}
pair_style body/rounded/polyhedron 20 5 0 1 0.5
pair_coeff * * ${k_n} ${k_na}
pair_coeff * * 100 ${k_na}
pair_coeff * * 100 5
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
timestep 0.001
fix 1 all nve/body
fix 2 all gravity 1.0 spherical 0.0 -180.0
molecule object molecule.cube molecule.tetra toff 1 molecule.rod3d toff 2 molecule.point3d toff 3
Read molecule object:
1 atoms with max type 1
0 bonds with max type 0
0 angles with max type 0
0 dihedrals with max type 0
0 impropers with max type 0
Read molecule object:
1 atoms with max type 2
0 bonds with max type 0
0 angles with max type 0
0 dihedrals with max type 0
0 impropers with max type 0
Read molecule object:
1 atoms with max type 3
0 bonds with max type 0
0 angles with max type 0
0 dihedrals with max type 0
0 impropers with max type 0
Read molecule object:
1 atoms with max type 4
0 bonds with max type 0
0 angles with max type 0
0 dihedrals with max type 0
0 impropers with max type 0
region slab block 5 45 5 45 25 35 units box
fix ins all pour 500 0 4767548 vol 0.4 10 region slab mol object molfrac 0.25 0.25 0.25 0.25
Particle insertion: 134 every 4472 steps, 500 by step 13417
fix 4 all wall/body/polyhedron 2000 50 50 zplane 0.0 NULL
#compute 1 all body/local type 1 2 3
#dump 1 all local 1000 dump.polyhedron index c_1[1] c_1[2] c_1[3] c_1[4]
#dump 10 all custom 1000 tmp.dump id type x y z radius
thermo_style custom step atoms ke pe etotal press
thermo 1000
#dump 2 all image 500 image.*.jpg type type # zoom 1.5 adiam 1.5 body type 0 0 view 75 15
#dump_modify 2 pad 6
run ${steps}
run 6000
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 5
ghost atom cutoff = 5
binsize = 2.5, bins = 20 20 20
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair body/rounded/polyhedron, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/3d/newton
bin: standard
Per MPI rank memory allocation (min/avg/max) = 0.5065 | 0.5065 | 0.5065 Mbytes
Step Atoms KinEng PotEng TotEng Press
0 0 -0 0 0 0
1000 134 -0 0.00083010524 0.00083010524 -2.1515152e-06
2000 134 -0 -0.00069962476 -0.00069962476 -1.4170663e-08
3000 134 -0 -0.00069962687 -0.00069962687 -4.1478181e-11
4000 134 -0 -0.00069962687 -0.00069962687 -1.2141026e-13
5000 268 -0 0.014969705 0.014969705 3.0797164e-05
6000 268 -0 0.042467887 0.042467887 0.00056148005
Loop time of 0.634737 on 1 procs for 6000 steps with 268 atoms
Performance: 816716.196 tau/day, 9452.734 timesteps/s
100.0% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.41391 | 0.41391 | 0.41391 | 0.0 | 65.21
Neigh | 0.010547 | 0.010547 | 0.010547 | 0.0 | 1.66
Comm | 0.0030921 | 0.0030921 | 0.0030921 | 0.0 | 0.49
Output | 0.00011492 | 0.00011492 | 0.00011492 | 0.0 | 0.02
Modify | 0.19736 | 0.19736 | 0.19736 | 0.0 | 31.09
Other | | 0.009719 | | | 1.53
Nlocal: 268 ave 268 max 268 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 3 ave 3 max 3 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 68 ave 68 max 68 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 68
Ave neighs/atom = 0.253731
Neighbor list builds = 168
Dangerous builds = 0
Total wall time: 0:00:00

View File

@ -0,0 +1,221 @@
LAMMPS (29 Jun 2018)
# 2d rounded polygon bodies
variable r index 4
variable steps index 100000
variable T index 0.5
variable P index 0.1
variable seed index 980411
units lj
dimension 2
atom_style body rounded/polygon 1 6
atom_modify map array
read_data data.squares
orthogonal box = (0 0 -0.5) to (12 12 0.5)
1 by 1 by 1 MPI processor grid
reading atoms ...
2 atoms
2 bodies
replicate $r $r 1
replicate 4 $r 1
replicate 4 4 1
orthogonal box = (0 0 -0.5) to (48 48 0.5)
1 by 1 by 1 MPI processor grid
32 atoms
Time spent = 0.00020504 secs
velocity all create $T ${seed} dist gaussian mom yes rot yes
velocity all create 0.5 ${seed} dist gaussian mom yes rot yes
velocity all create 0.5 980411 dist gaussian mom yes rot yes
variable cut_inner equal 0.5
variable k_n equal 100
variable k_na equal 2
variable c_n equal 1
variable c_t equal 1
variable mu equal 0.1
variable delta_ua equal 0.5
pair_style body/rounded/polygon ${c_n} ${c_t} ${mu} ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 1 ${c_t} ${mu} ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 1 1 ${mu} ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 1 1 0.1 ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 1 1 0.1 0.5 ${cut_inner}
pair_style body/rounded/polygon 1 1 0.1 0.5 0.5
pair_coeff * * ${k_n} ${k_na}
pair_coeff * * 100 ${k_na}
pair_coeff * * 100 2
comm_modify vel yes
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
timestep 0.001
#fix 1 all nve/body
#fix 1 all nvt/body temp $T $T 1.0
fix 1 all npt/body temp $T $T 1.0 x 0.001 $P 1.0 y 0.001 $P 1.0 couple xy fixedpoint 0 0 0
fix 1 all npt/body temp 0.5 $T 1.0 x 0.001 $P 1.0 y 0.001 $P 1.0 couple xy fixedpoint 0 0 0
fix 1 all npt/body temp 0.5 0.5 1.0 x 0.001 $P 1.0 y 0.001 $P 1.0 couple xy fixedpoint 0 0 0
fix 1 all npt/body temp 0.5 0.5 1.0 x 0.001 0.1 1.0 y 0.001 $P 1.0 couple xy fixedpoint 0 0 0
fix 1 all npt/body temp 0.5 0.5 1.0 x 0.001 0.1 1.0 y 0.001 0.1 1.0 couple xy fixedpoint 0 0 0
fix 2 all enforce2d
#compute 1 all body/local id 1 2 3
#dump 1 all local 100000 dump.polygon.* index c_1[1] c_1[2] c_1[3] c_1[4]
thermo_style custom step ke pe etotal press
thermo 1000
#dump 2 all image 10000 image.*.jpg type type zoom 2.0 # adiam 1.5 body type 0 0
#dump_modify 2 pad 6
run ${steps}
run 100000
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6.15685
ghost atom cutoff = 6.15685
binsize = 3.07843, bins = 16 16 1
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair body/rounded/polygon, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/2d/newton
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.781 | 4.781 | 4.781 Mbytes
Step KinEng PotEng TotEng Press
0 0.484375 0.25 0.734375 0.0067274306
1000 0.39423376 0.0017918048 0.39602557 0.0021941612
2000 0.42284177 0.01346585 0.43630762 0.0029377883
3000 0.58154405 0.011321689 0.59286574 0.003667871
4000 0.73518304 0.034603175 0.76978621 0.0018689207
5000 0.84367476 0.025292163 0.86896692 0.0089161373
6000 0.70803236 0.0085631016 0.71659546 0.0045552895
7000 0.56206452 0.10453031 0.66659483 0.010255161
8000 0.64538994 0.088817673 0.73420761 0.0037633655
9000 0.90540819 0.063696004 0.96910419 0.0077673359
10000 0.68632042 0.093265016 0.77958544 0.0057864838
11000 0.59118074 0.025654748 0.61683549 0.012518759
12000 0.67522767 0.038176401 0.71340407 0.01741153
13000 0.7644843 0.10429844 0.86878274 0.013161339
14000 0.56152694 0.067836655 0.62936359 0.016852121
15000 0.41895506 0.019513348 0.43846841 0.015225695
16000 0.55799421 0.1564559 0.71445011 0.011703561
17000 0.59391964 0.034450221 0.62836986 0.026215002
18000 0.75911858 0.030885726 0.7900043 0.018396366
19000 0.64417995 0.12110912 0.76528907 0.010247952
20000 0.57751435 0.16965651 0.74717086 0.023392323
21000 0.7613368 0.13405354 0.89539034 0.021498982
22000 0.57676692 0.18011879 0.75688571 0.024469161
23000 0.54043723 0.11842026 0.65885749 0.019799067
24000 0.62276061 0.038967924 0.66172853 0.019080086
25000 0.53157536 0.11651937 0.64809473 0.017019298
26000 0.72213293 0.039012448 0.76114538 0.015434904
27000 0.62157832 0.13697494 0.75855326 0.028711011
28000 0.41323738 0.16301101 0.57624839 0.041792632
29000 0.45774328 0.17569066 0.63343394 0.019975231
30000 0.78901796 0.099791386 0.88880934 0.024116947
31000 0.85205397 0.11977547 0.97182945 0.026667489
32000 0.37137095 0.1232622 0.49463315 0.00087637364
33000 0.26860871 0.26056381 0.52917252 0.036110517
34000 0.3018636 0.21336905 0.51523265 0.040315549
35000 0.39915129 0.28245957 0.68161085 0.034876856
36000 0.25761236 0.2352705 0.49288286 0.022772767
37000 0.1071233 0.31692858 0.42405188 0.017994666
38000 0.083729577 0.28473145 0.36846103 -0.0045370431
39000 0.070355565 0.26682083 0.33717639 0.017921556
40000 0.075894079 0.20077896 0.27667304 0.014873186
41000 0.05891028 0.15989064 0.21880092 0.025547873
42000 0.1225107 0.16583605 0.28834675 0.038842785
43000 0.17049189 0.14323991 0.3137318 0.029550161
44000 0.26823939 0.15208257 0.42032196 0.028113612
45000 0.10172203 0.1729706 0.27469264 -0.013769913
46000 0.14841355 0.19085074 0.33926429 -0.00073741985
47000 0.27654927 0.19097937 0.46752864 0.04021431
48000 0.53432331 0.080769923 0.61509323 0.029932845
49000 0.69111634 0.13064951 0.82176585 0.028985406
50000 0.24520806 0.18317453 0.42838258 0.05179746
51000 0.23541368 0.14281364 0.37822732 0.071884238
52000 0.25464996 0.095730242 0.3503802 0.034488204
53000 0.53677633 0.1058745 0.64265084 0.059932498
54000 0.32970921 0.27979128 0.60950049 0.062869716
55000 0.49094054 0.096735015 0.58767556 0.04728005
56000 0.54398249 0.2216472 0.76562969 0.056712022
57000 0.60869068 0.2338422 0.84253288 0.077143302
58000 0.72175509 0.18687368 0.90862877 0.019357656
59000 0.79442757 0.092502981 0.88693055 0.066882632
60000 0.6810555 0.077699385 0.75875488 0.095975173
61000 0.63178834 0.05071143 0.68249977 0.043586668
62000 0.76589344 0.044615704 0.81050914 0.085718411
63000 0.84815889 0.030527848 0.87868674 0.053072795
64000 0.7309043 0.051938637 0.78284294 0.058887766
65000 0.62498816 0.034474465 0.65946262 0.068446407
66000 0.69817494 0.068546004 0.76672094 0.062634433
67000 0.86444275 0.010184259 0.87462701 0.073635055
68000 0.77820319 0.0079319524 0.78613515 0.090330925
69000 0.56938919 0.0092629332 0.57865213 0.061838729
70000 0.61870712 0.010047381 0.6287545 0.066501338
71000 0.71651803 0.0088366199 0.72535465 0.079136316
72000 0.76278925 0.008828151 0.77161741 0.063672771
73000 0.75447428 0.0083985526 0.76287283 0.078256913
74000 0.66185251 0.0091910052 0.67104351 0.069840511
75000 0.58458829 0.0097671568 0.59435544 0.076123422
76000 0.7487564 0.0100022 0.7587586 0.076171741
77000 0.89505465 0.009250681 0.90430533 0.074921699
78000 0.73738164 0.0092029279 0.74658457 0.078835344
79000 0.65735281 0.010099528 0.66745233 0.077940627
80000 0.70247542 0.010306464 0.71278189 0.079560093
81000 0.74839505 0.010199092 0.75859415 0.080835104
82000 0.75193767 0.010274058 0.76221173 0.081086684
83000 0.71392598 0.010495573 0.72442156 0.082746145
84000 0.58498928 0.011027388 0.59601667 0.08356465
85000 0.59022869 0.011729474 0.60195817 0.084519397
86000 0.81753578 0.011208964 0.82874475 0.085490261
87000 0.83480682 0.010542579 0.8453494 0.086268527
88000 0.67322538 0.011170734 0.68439611 0.08751623
89000 0.62637389 0.012033316 0.6384072 0.088548094
90000 0.92828557 0.011750388 0.94003596 0.089199823
91000 0.96072564 0.010324509 0.97105015 0.090204803
92000 0.72105071 0.011484152 0.73253486 0.09140819
93000 0.65762527 0.012558219 0.67018349 0.092453474
94000 0.73991591 0.01261909 0.752535 0.093373477
95000 0.91791653 0.011980455 0.92989699 0.094182136
96000 0.76562561 0.011807085 0.7774327 0.095323684
97000 0.57292104 0.013610205 0.58653124 0.096505977
98000 0.68141076 0.013863204 0.69527396 0.097380069
99000 0.82390969 0.013002341 0.83691203 0.098235926
100000 0.77639728 0.012989342 0.78938662 0.099274147
Loop time of 3.88899 on 1 procs for 100000 steps with 32 atoms
Performance: 2221655.884 tau/day, 25713.610 timesteps/s
99.9% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 3.056 | 3.056 | 3.056 | 0.0 | 78.58
Neigh | 0.0051048 | 0.0051048 | 0.0051048 | 0.0 | 0.13
Comm | 0.091444 | 0.091444 | 0.091444 | 0.0 | 2.35
Output | 0.0011995 | 0.0011995 | 0.0011995 | 0.0 | 0.03
Modify | 0.69909 | 0.69909 | 0.69909 | 0.0 | 17.98
Other | | 0.03616 | | | 0.93
Nlocal: 32 ave 32 max 32 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 21 ave 21 max 21 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 57 ave 57 max 57 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 57
Ave neighs/atom = 1.78125
Neighbor list builds = 1445
Dangerous builds = 0
Total wall time: 0:00:03

View File

@ -0,0 +1,221 @@
LAMMPS (29 Jun 2018)
# 2d rounded polygon bodies
variable r index 4
variable steps index 100000
variable T index 0.5
variable P index 0.1
variable seed index 980411
units lj
dimension 2
atom_style body rounded/polygon 1 6
atom_modify map array
read_data data.squares
orthogonal box = (0 0 -0.5) to (12 12 0.5)
2 by 2 by 1 MPI processor grid
reading atoms ...
2 atoms
2 bodies
replicate $r $r 1
replicate 4 $r 1
replicate 4 4 1
orthogonal box = (0 0 -0.5) to (48 48 0.5)
2 by 2 by 1 MPI processor grid
32 atoms
Time spent = 0.000324011 secs
velocity all create $T ${seed} dist gaussian mom yes rot yes
velocity all create 0.5 ${seed} dist gaussian mom yes rot yes
velocity all create 0.5 980411 dist gaussian mom yes rot yes
variable cut_inner equal 0.5
variable k_n equal 100
variable k_na equal 2
variable c_n equal 1
variable c_t equal 1
variable mu equal 0.1
variable delta_ua equal 0.5
pair_style body/rounded/polygon ${c_n} ${c_t} ${mu} ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 1 ${c_t} ${mu} ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 1 1 ${mu} ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 1 1 0.1 ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 1 1 0.1 0.5 ${cut_inner}
pair_style body/rounded/polygon 1 1 0.1 0.5 0.5
pair_coeff * * ${k_n} ${k_na}
pair_coeff * * 100 ${k_na}
pair_coeff * * 100 2
comm_modify vel yes
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
timestep 0.001
#fix 1 all nve/body
#fix 1 all nvt/body temp $T $T 1.0
fix 1 all npt/body temp $T $T 1.0 x 0.001 $P 1.0 y 0.001 $P 1.0 couple xy fixedpoint 0 0 0
fix 1 all npt/body temp 0.5 $T 1.0 x 0.001 $P 1.0 y 0.001 $P 1.0 couple xy fixedpoint 0 0 0
fix 1 all npt/body temp 0.5 0.5 1.0 x 0.001 $P 1.0 y 0.001 $P 1.0 couple xy fixedpoint 0 0 0
fix 1 all npt/body temp 0.5 0.5 1.0 x 0.001 0.1 1.0 y 0.001 $P 1.0 couple xy fixedpoint 0 0 0
fix 1 all npt/body temp 0.5 0.5 1.0 x 0.001 0.1 1.0 y 0.001 0.1 1.0 couple xy fixedpoint 0 0 0
fix 2 all enforce2d
#compute 1 all body/local id 1 2 3
#dump 1 all local 100000 dump.polygon.* index c_1[1] c_1[2] c_1[3] c_1[4]
thermo_style custom step ke pe etotal press
thermo 1000
#dump 2 all image 10000 image.*.jpg type type zoom 2.0 # adiam 1.5 body type 0 0
#dump_modify 2 pad 6
run ${steps}
run 100000
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6.15685
ghost atom cutoff = 6.15685
binsize = 3.07843, bins = 16 16 1
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair body/rounded/polygon, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/2d/newton
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.774 | 4.774 | 4.774 Mbytes
Step KinEng PotEng TotEng Press
0 0.484375 0.25 0.734375 0.0067274306
1000 0.39423376 0.0017918048 0.39602557 0.0021941612
2000 0.42284177 0.01346585 0.43630762 0.0029377883
3000 0.58154405 0.011321689 0.59286574 0.003667871
4000 0.73518304 0.034603175 0.76978621 0.0018689207
5000 0.84367476 0.025292163 0.86896692 0.0089161373
6000 0.70803236 0.0085631016 0.71659546 0.0045552895
7000 0.56206452 0.10453031 0.66659483 0.010255161
8000 0.64538994 0.088817673 0.73420761 0.0037633655
9000 0.90540819 0.063696004 0.96910419 0.0077673359
10000 0.68632042 0.093265016 0.77958544 0.0057864837
11000 0.59118074 0.025654748 0.61683549 0.012518759
12000 0.67522767 0.038176401 0.71340407 0.01741153
13000 0.7644843 0.10429844 0.86878274 0.013161339
14000 0.56152694 0.067836656 0.6293636 0.016852113
15000 0.41895505 0.019513353 0.43846841 0.015225696
16000 0.55799443 0.15645637 0.7144508 0.011703646
17000 0.59385248 0.03451986 0.62837234 0.025482966
18000 0.75902169 0.031103586 0.79012527 0.018263354
19000 0.64266826 0.12535314 0.76802141 0.014884119
20000 0.57836261 0.16581188 0.74417449 0.024667165
21000 0.78281936 0.11877527 0.90159464 -0.0090089213
22000 0.5312006 0.13300874 0.66420934 0.025797278
23000 0.56458861 0.084369128 0.64895774 0.024630917
24000 0.65126875 0.06122992 0.71249867 0.034377198
25000 0.55173441 0.15694886 0.70868327 0.021634086
26000 0.59121615 0.17071182 0.76192797 0.024758366
27000 0.6394843 0.17442949 0.81391378 0.034919937
28000 0.31144221 0.41243036 0.72387256 0.074115225
29000 0.13516917 0.3075419 0.44271107 0.023861298
30000 0.14094934 0.24407203 0.38502137 0.037030438
31000 0.26313749 0.087395422 0.35053291 0.042347005
32000 0.51602457 0.063012079 0.57903664 0.018550299
33000 0.55628829 0.200213 0.75650129 0.026507686
34000 0.97399408 0.082504517 1.0564986 0.037889878
35000 0.64710533 0.17662002 0.82372535 0.058295508
36000 0.45769083 0.08241194 0.54010277 0.014957415
37000 0.72850105 0.053874061 0.78237512 0.037194593
38000 0.44177995 0.28939498 0.73117493 0.045194029
39000 0.46828451 0.077630686 0.54591519 0.089849009
40000 0.46786451 0.092828423 0.56069294 0.028042052
41000 0.71861856 0.097085715 0.81570427 0.036473296
42000 0.74121021 0.10553127 0.84674148 0.054058843
43000 0.62945489 0.12770673 0.75716161 0.047267994
44000 0.49900638 0.085150056 0.58415644 0.054798793
45000 0.70199572 0.063415877 0.7654116 0.038363546
46000 0.49513142 0.10649384 0.60162526 0.059392561
47000 0.3858898 0.079458749 0.46534855 0.051825764
48000 0.62585854 0.028585902 0.65444444 0.054074424
49000 0.65934482 0.51865062 1.1779954 -0.035272836
50000 0.5420438 0.082056756 0.62410056 0.031187494
51000 0.36685223 0.14224019 0.50909241 0.073790397
52000 0.19044627 0.15368389 0.34413016 0.059034266
53000 0.26847678 0.075693324 0.3441701 0.032276915
54000 0.3593711 0.19034549 0.54971659 0.070827883
55000 0.21659198 0.1929074 0.40949939 0.035916364
56000 0.28242715 0.12313241 0.40555956 0.062083926
57000 0.34067475 0.14711992 0.48779467 0.059321458
58000 0.4842796 0.16143425 0.64571385 0.059048247
59000 0.84438871 0.076546849 0.92093556 0.048046901
60000 0.92794849 0.054331626 0.98228012 0.058392272
61000 0.6916736 0.076168342 0.76784194 0.058654987
62000 0.63317965 0.094506389 0.72768604 0.061044719
63000 0.63317266 0.038785593 0.67195825 0.097236147
64000 0.81696668 0.121811 0.93877769 0.064935373
65000 0.82644758 0.25188344 1.078331 0.093352359
66000 0.64975019 0.17930857 0.82905876 0.058805254
67000 0.63487678 0.16877059 0.80364737 0.070254696
68000 0.79140717 0.11631004 0.9077172 0.064646394
69000 0.85687272 0.057835331 0.91470805 0.071057291
70000 0.67785976 0.040686768 0.71854653 0.074687222
71000 0.60594577 0.032193155 0.63813893 0.069349268
72000 0.77586745 0.024068533 0.79993598 0.083394193
73000 0.88877625 0.025746326 0.91452258 0.081511105
74000 0.73507888 0.036574786 0.77165367 0.075360233
75000 0.68787782 0.042098622 0.72997644 0.068651098
76000 0.72515745 0.04360868 0.76876613 0.069594624
77000 0.77580944 0.041826702 0.81763614 0.071937144
78000 0.76640394 0.039285046 0.80568899 0.074274921
79000 0.62504309 0.039593585 0.66463667 0.076443295
80000 0.60001642 0.043468215 0.64348464 0.094547719
81000 0.82175037 0.045608873 0.86735924 0.080186295
82000 0.85783276 0.042692576 0.90052534 0.081576548
83000 0.71367707 0.042172193 0.75584926 0.08256625
84000 0.68532406 0.044724759 0.73004882 0.083672013
85000 0.72576789 0.046982462 0.77275035 0.084789331
86000 0.75597701 0.04765086 0.80362787 0.085758056
87000 0.74190598 0.047629096 0.78953507 0.086679976
88000 0.60967704 0.049906172 0.65958321 0.085526191
89000 0.54490288 0.054768238 0.59967112 0.090604027
90000 0.75398341 0.057153453 0.81113686 0.091900858
91000 0.84577472 0.052753512 0.89852823 0.091913909
92000 0.7176235 0.050677427 0.76830093 0.092032507
93000 0.61699446 0.054097013 0.67109147 0.092071275
94000 0.76330752 0.057398618 0.82070614 0.092435043
95000 0.98754458 0.053801311 1.0413459 0.093526707
96000 0.7405897 0.052135628 0.79272533 0.095011929
97000 0.65587599 0.057011962 0.71288795 0.096692123
98000 0.72345634 0.060700171 0.78415651 0.097510345
99000 0.88283624 0.061795247 0.94463149 0.09799633
100000 0.86303812 0.058912988 0.92195111 0.09892993
Loop time of 2.80074 on 4 procs for 100000 steps with 32 atoms
Performance: 3084895.573 tau/day, 35704.810 timesteps/s
99.9% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.81169 | 0.89466 | 0.97669 | 8.4 | 31.94
Neigh | 0.0017524 | 0.0018129 | 0.0018773 | 0.1 | 0.06
Comm | 0.91307 | 0.99193 | 1.0691 | 7.3 | 35.42
Output | 0.00076914 | 0.00093722 | 0.0013936 | 0.0 | 0.03
Modify | 0.75335 | 0.75779 | 0.76346 | 0.4 | 27.06
Other | | 0.1536 | | | 5.48
Nlocal: 8 ave 10 max 4 min
Histogram: 1 0 0 0 0 0 1 0 0 2
Nghost: 17.25 ave 19 max 15 min
Histogram: 1 0 1 0 0 0 0 0 0 2
Neighs: 13.5 ave 21 max 5 min
Histogram: 1 0 0 0 1 0 1 0 0 1
Total # of neighbors = 54
Ave neighs/atom = 1.6875
Neighbor list builds = 1443
Dangerous builds = 0
Total wall time: 0:00:02

View File

@ -0,0 +1,223 @@
LAMMPS (29 Jun 2018)
# 2d rounded polygon bodies
variable r index 4
variable steps index 100000
variable T index 0.5
variable P index 0.1
variable seed index 980411
units lj
dimension 2
atom_style body rounded/polygon 1 6
atom_modify map array
read_data data.squares
orthogonal box = (0 0 -0.5) to (12 12 0.5)
1 by 1 by 1 MPI processor grid
reading atoms ...
2 atoms
2 bodies
replicate $r $r 1
replicate 4 $r 1
replicate 4 4 1
orthogonal box = (0 0 -0.5) to (48 48 0.5)
1 by 1 by 1 MPI processor grid
32 atoms
Time spent = 0.00029707 secs
velocity all create $T ${seed} dist gaussian mom yes rot yes
velocity all create 0.5 ${seed} dist gaussian mom yes rot yes
velocity all create 0.5 980411 dist gaussian mom yes rot yes
change_box all boundary p f p
variable cut_inner equal 0.5
variable k_n equal 100
variable k_na equal 2
variable c_n equal 0.1
variable c_t equal 0.1
variable mu equal 0.1
variable delta_ua equal 0.5
pair_style body/rounded/polygon ${c_n} ${c_t} ${mu} ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 0.1 ${c_t} ${mu} ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 0.1 0.1 ${mu} ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 0.1 0.1 0.1 ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 0.1 0.1 0.1 0.5 ${cut_inner}
pair_style body/rounded/polygon 0.1 0.1 0.1 0.5 0.5
pair_coeff * * ${k_n} ${k_na}
pair_coeff * * 100 ${k_na}
pair_coeff * * 100 2
comm_modify vel yes
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
timestep 0.001
#fix 1 all nve/body
#fix 1 all nvt/body temp $T $T 1.0
fix 1 all npt/body temp $T $T 1.0 x 0.001 $P 1.0 fixedpoint 0 0 0
fix 1 all npt/body temp 0.5 $T 1.0 x 0.001 $P 1.0 fixedpoint 0 0 0
fix 1 all npt/body temp 0.5 0.5 1.0 x 0.001 $P 1.0 fixedpoint 0 0 0
fix 1 all npt/body temp 0.5 0.5 1.0 x 0.001 0.1 1.0 fixedpoint 0 0 0
fix 2 all enforce2d
fix 3 all wall/body/polygon 2000 50 50 yplane 0.0 48.0
#compute 1 all body/local id 1 2 3
#dump 1 all local 100000 dump.polygon.* index c_1[1] c_1[2] c_1[3] c_1[4]
thermo_style custom step ke pe etotal press
thermo 1000
#dump 2 all image 10000 image.*.jpg type type zoom 2.0 # adiam 1.5 body type 0 0
#dump_modify 2 pad 6
run ${steps}
run 100000
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6.15685
ghost atom cutoff = 6.15685
binsize = 3.07843, bins = 16 16 1
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair body/rounded/polygon, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/2d/newton
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.771 | 4.771 | 4.771 Mbytes
Step KinEng PotEng TotEng Press
0 0.484375 0.25 0.734375 0.0067274306
1000 0.49241101 0.0031318767 0.49554289 0.017768281
2000 0.56118632 0.0026068888 0.56379321 0.003410416
3000 0.75565115 0.025578366 0.78122951 0.0071862988
4000 0.72298647 0.093150646 0.81613712 0.003190158
5000 0.51684166 0.049164868 0.56600653 0.0096960168
6000 0.56627905 0.048132853 0.6144119 0.020733586
7000 0.58122129 0.018223718 0.59944501 0.0038160759
8000 0.64297977 0.025934821 0.66891459 0.0041091784
9000 0.41748404 0.0077890042 0.42527305 0.0039270065
10000 0.35738377 0.078487805 0.43587158 3.9079782e-05
11000 0.41529308 0.13619284 0.55148592 -0.0067482285
12000 0.43274718 0.071315497 0.50406268 0.007006378
13000 0.4748331 0.069904647 0.54473775 0.0010384372
14000 0.6287791 0.12721033 0.75598943 0.0047792448
15000 0.4692413 0.12344005 0.59268136 0.018033616
16000 0.43157074 0.14306789 0.57463862 0.042356676
17000 0.53085999 0.22126296 0.75212294 0.027509646
18000 0.52688968 0.13225282 0.6591425 0.0021558013
19000 0.55032328 0.12513047 0.67545375 0.025036251
20000 0.48465097 0.1431055 0.62775647 0.017193781
21000 0.53166734 0.21928574 0.75095307 0.011564317
22000 0.62177353 0.09296159 0.71473512 0.017660922
23000 0.6972939 0.12434123 0.82163514 0.024432327
24000 0.42767372 0.22152311 0.64919684 -0.013712449
25000 0.4816037 0.19272865 0.67433236 0.052386055
26000 0.72642579 0.19697046 0.92339625 0.020407694
27000 0.39649144 0.15058326 0.5470747 0.023705766
28000 0.44896324 0.18500106 0.6339643 -0.0089410286
29000 0.5565759 0.11085772 0.66743362 0.048437166
30000 0.58173584 0.21773281 0.79946865 0.0057357773
31000 0.49199415 0.23601982 0.72801397 0.046744152
32000 0.55665496 0.20542161 0.76207658 -0.0038756805
33000 0.62730739 0.24460524 0.87191263 0.045330682
34000 0.58107044 0.16395278 0.74502322 -0.0049496051
35000 0.56838849 0.21842922 0.78681771 0.0062086036
36000 0.45910273 0.28464172 0.74374445 -0.011700747
37000 0.37092037 0.27646862 0.647389 0.022305679
38000 0.7278047 0.30674438 1.0345491 0.07698342
39000 0.5132923 0.27395066 0.78724295 0.026898634
40000 0.62348649 0.24424644 0.86773293 0.039403899
41000 0.3658401 0.15512326 0.52096337 0.022559003
42000 0.4912253 0.35712978 0.84835508 -0.010336341
43000 0.70225957 0.36314638 1.0654059 0.004148866
44000 0.56958157 0.25488927 0.82447084 0.067537066
45000 0.45854352 0.30149439 0.76003791 -0.017002401
46000 0.62787247 0.34567995 0.97355242 0.11894801
47000 0.61348914 0.29378625 0.90727539 0.067873976
48000 0.71301829 0.34135284 1.0543711 0.021077736
49000 0.53520804 0.30593196 0.84113999 0.0059257647
50000 0.44966403 0.35370793 0.80337195 0.0020395669
51000 0.5236113 0.32296924 0.84658054 -0.051011506
52000 0.53905573 0.351771 0.89082672 0.013720106
53000 0.55978158 0.41293947 0.97272106 0.068558589
54000 0.52170459 0.2718066 0.7935112 0.0093138985
55000 0.61078876 0.43353897 1.0443277 0.045377392
56000 0.51300655 0.33182278 0.84482933 -0.018418487
57000 0.54882822 0.38380093 0.93262915 0.10249946
58000 0.72106212 0.45361279 1.1746749 0.030313481
59000 0.55871447 0.63823029 1.1969448 0.019079703
60000 0.49395192 0.58283102 1.0767829 0.0179349
61000 0.45991079 0.62540573 1.0853165 0.074398804
62000 0.4655788 0.60862262 1.0742014 0.11472976
63000 0.55634524 0.63069255 1.1870378 -0.0025676135
64000 0.57688903 0.45435264 1.0312417 0.0083813852
65000 0.57168922 0.42217005 0.99385927 0.044931269
66000 0.6206044 0.46727538 1.0878798 0.019686229
67000 0.61037155 0.41840109 1.0287726 0.0195109
68000 0.63848598 0.41305347 1.0515395 0.072940144
69000 0.49244916 0.3834095 0.87585866 0.07963677
70000 0.41847062 0.51907975 0.93755037 0.18447904
71000 0.45198986 0.52973709 0.98172695 0.078419371
72000 0.47064262 0.37808165 0.84872427 -0.00046308054
73000 0.6690143 0.37549359 1.0445079 0.061208432
74000 0.60444955 0.33779636 0.94224592 -0.068840321
75000 0.61762382 0.3916421 1.0092659 0.16253292
76000 0.63657961 0.50277989 1.1393595 0.013857508
77000 0.52524028 0.43597896 0.96121924 -0.03296482
78000 0.43803533 0.33172284 0.76975817 0.078763029
79000 0.67156089 0.55272177 1.2242827 0.080822223
80000 0.68678238 0.46061627 1.1473987 0.0027036992
81000 0.64956678 0.44959229 1.0991591 0.11201483
82000 0.51060477 0.43508342 0.9456882 0.028000608
83000 0.59550548 0.69026083 1.2857663 -0.0015809004
84000 0.64222145 0.38768816 1.0299096 0.014153173
85000 0.7661229 0.43445261 1.2005755 0.048034534
86000 0.60025257 0.53027929 1.1305319 0.0056865157
87000 0.46220939 0.47470035 0.93690974 0.075311946
88000 0.54123847 0.62899839 1.1702369 0.13260162
89000 0.61212272 0.6114241 1.2235468 0.033284822
90000 0.63924773 0.6916249 1.3308726 0.045088296
91000 0.49316865 0.51037033 1.003539 0.023203598
92000 0.57572123 0.43496319 1.0106844 0.297092
93000 0.65187559 0.56815972 1.2200353 0.1538215
94000 0.64107331 0.58948521 1.2305585 0.031117778
95000 0.64584158 0.6364688 1.2823104 0.096154676
96000 0.60509093 0.601487 1.2065779 0.03457172
97000 0.68837218 0.77974186 1.468114 0.17801164
98000 0.62725266 0.64137144 1.2686241 0.17449001
99000 0.46861221 0.67000291 1.1386151 0.2429588
100000 0.5879119 0.7140612 1.3019731 0.064634257
Loop time of 2.50594 on 1 procs for 100000 steps with 32 atoms
Performance: 3447804.126 tau/day, 39905.140 timesteps/s
100.0% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 1.5639 | 1.5639 | 1.5639 | 0.0 | 62.41
Neigh | 0.0086911 | 0.0086911 | 0.0086911 | 0.0 | 0.35
Comm | 0.058926 | 0.058926 | 0.058926 | 0.0 | 2.35
Output | 0.0012379 | 0.0012379 | 0.0012379 | 0.0 | 0.05
Modify | 0.83537 | 0.83537 | 0.83537 | 0.0 | 33.34
Other | | 0.03781 | | | 1.51
Nlocal: 32 ave 32 max 32 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 20 ave 20 max 20 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 57 ave 57 max 57 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 57
Ave neighs/atom = 1.78125
Neighbor list builds = 2705
Dangerous builds = 0
Total wall time: 0:00:02

View File

@ -0,0 +1,223 @@
LAMMPS (29 Jun 2018)
# 2d rounded polygon bodies
variable r index 4
variable steps index 100000
variable T index 0.5
variable P index 0.1
variable seed index 980411
units lj
dimension 2
atom_style body rounded/polygon 1 6
atom_modify map array
read_data data.squares
orthogonal box = (0 0 -0.5) to (12 12 0.5)
2 by 2 by 1 MPI processor grid
reading atoms ...
2 atoms
2 bodies
replicate $r $r 1
replicate 4 $r 1
replicate 4 4 1
orthogonal box = (0 0 -0.5) to (48 48 0.5)
2 by 2 by 1 MPI processor grid
32 atoms
Time spent = 0.000386 secs
velocity all create $T ${seed} dist gaussian mom yes rot yes
velocity all create 0.5 ${seed} dist gaussian mom yes rot yes
velocity all create 0.5 980411 dist gaussian mom yes rot yes
change_box all boundary p f p
variable cut_inner equal 0.5
variable k_n equal 100
variable k_na equal 2
variable c_n equal 0.1
variable c_t equal 0.1
variable mu equal 0.1
variable delta_ua equal 0.5
pair_style body/rounded/polygon ${c_n} ${c_t} ${mu} ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 0.1 ${c_t} ${mu} ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 0.1 0.1 ${mu} ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 0.1 0.1 0.1 ${delta_ua} ${cut_inner}
pair_style body/rounded/polygon 0.1 0.1 0.1 0.5 ${cut_inner}
pair_style body/rounded/polygon 0.1 0.1 0.1 0.5 0.5
pair_coeff * * ${k_n} ${k_na}
pair_coeff * * 100 ${k_na}
pair_coeff * * 100 2
comm_modify vel yes
neighbor 0.5 bin
neigh_modify every 1 delay 0 check yes
timestep 0.001
#fix 1 all nve/body
#fix 1 all nvt/body temp $T $T 1.0
fix 1 all npt/body temp $T $T 1.0 x 0.001 $P 1.0 fixedpoint 0 0 0
fix 1 all npt/body temp 0.5 $T 1.0 x 0.001 $P 1.0 fixedpoint 0 0 0
fix 1 all npt/body temp 0.5 0.5 1.0 x 0.001 $P 1.0 fixedpoint 0 0 0
fix 1 all npt/body temp 0.5 0.5 1.0 x 0.001 0.1 1.0 fixedpoint 0 0 0
fix 2 all enforce2d
fix 3 all wall/body/polygon 2000 50 50 yplane 0.0 48.0
#compute 1 all body/local id 1 2 3
#dump 1 all local 100000 dump.polygon.* index c_1[1] c_1[2] c_1[3] c_1[4]
thermo_style custom step ke pe etotal press
thermo 1000
#dump 2 all image 10000 image.*.jpg type type zoom 2.0 # adiam 1.5 body type 0 0
#dump_modify 2 pad 6
run ${steps}
run 100000
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 6.15685
ghost atom cutoff = 6.15685
binsize = 3.07843, bins = 16 16 1
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair body/rounded/polygon, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/2d/newton
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.773 | 4.773 | 4.773 Mbytes
Step KinEng PotEng TotEng Press
0 0.484375 0.25 0.734375 0.0067274306
1000 0.49241101 0.0031318767 0.49554289 0.017768281
2000 0.56118632 0.0026068888 0.56379321 0.003410416
3000 0.75565115 0.025578366 0.78122951 0.0071862988
4000 0.72298647 0.093150646 0.81613712 0.003190158
5000 0.51684166 0.049164868 0.56600653 0.0096960168
6000 0.56627905 0.048132853 0.6144119 0.020733586
7000 0.58122129 0.018223718 0.59944501 0.0038160759
8000 0.64297977 0.025934821 0.66891459 0.0041091784
9000 0.41748404 0.0077890042 0.42527305 0.0039270065
10000 0.35738377 0.078487805 0.43587158 3.9079865e-05
11000 0.41529307 0.13619284 0.55148591 -0.0067482285
12000 0.43274718 0.071315527 0.50406271 0.007006369
13000 0.4748324 0.069905666 0.54473807 0.0010385254
14000 0.62603727 0.098905625 0.7249429 0.0048876764
15000 0.44512086 0.10415235 0.54927321 0.01902062
16000 0.47460177 0.18053316 0.65513493 0.045013976
17000 0.52742676 0.10110706 0.62853382 0.013615471
18000 0.46111734 0.096118795 0.55723613 0.0073676834
19000 0.59668439 0.13652292 0.73320731 0.029403553
20000 0.46840192 0.11611719 0.58451911 -0.00034412499
21000 0.53550533 0.096457461 0.6319628 0.0019785732
22000 0.46599715 0.13206373 0.59806087 0.031970672
23000 0.49280776 0.20404726 0.69685501 0.03657433
24000 0.60901688 0.18255214 0.79156902 0.044955017
25000 0.47345185 0.13671357 0.61016542 0.020313539
26000 0.47653832 0.12448225 0.60102057 0.01878099
27000 0.50008212 0.24740634 0.74748845 0.021862639
28000 0.41627204 0.2519463 0.66821834 0.054683701
29000 0.55608273 0.23100212 0.78708485 -0.0043318497
30000 0.53884537 0.3001584 0.83900377 -0.012838186
31000 0.53036238 0.2300328 0.76039518 -0.0061688449
32000 0.42666792 0.20536256 0.63203048 0.045305282
33000 0.62908185 0.1652033 0.79428515 0.0072777588
34000 0.47028154 0.388736 0.85901754 0.04332288
35000 0.54602322 0.2775624 0.82358562 0.02898206
36000 0.59860544 0.21824655 0.81685199 0.0025936194
37000 0.62467827 0.11983499 0.74451326 0.050052743
38000 0.72594229 0.36584781 1.0917901 0.04280621
39000 0.51129656 0.23859043 0.74988699 0.050817447
40000 0.53263836 0.24212889 0.77476725 0.036245922
41000 0.50288088 0.36668283 0.86956371 0.018381415
42000 0.46653688 0.21974887 0.68628574 0.012661062
43000 0.61738785 0.32131037 0.93869821 0.012709433
44000 0.56603903 0.26515554 0.83119457 0.03315102
45000 0.56231638 0.32111693 0.88343331 0.06079756
46000 0.7096208 0.2570131 0.96663391 0.048770468
47000 0.588755 0.1880748 0.7768298 0.035962604
48000 0.56296339 0.25783519 0.82079858 0.053019928
49000 0.419885 0.42328618 0.84317118 0.038105269
50000 0.63073351 0.41426285 1.0449964 0.0015271048
51000 0.59357935 0.184222 0.77780136 0.015996218
52000 0.60608471 0.36247533 0.96856003 0.10984665
53000 0.5227842 0.27686739 0.79965159 0.02761699
54000 0.39435923 0.34197355 0.73633278 0.061183263
55000 0.46748455 0.34230903 0.80979358 0.077441382
56000 0.59819827 0.29212061 0.89031889 0.043772353
57000 0.61682559 0.32788566 0.94471124 0.03992069
58000 0.52702478 0.24891506 0.77593984 0.058480883
59000 0.66925719 0.4109031 1.0801603 0.072434423
60000 0.66807714 0.39233068 1.0604078 0.082370324
61000 0.5724275 0.43308567 1.0055132 0.0072945426
62000 0.49433556 0.38453743 0.87887299 0.0036097443
63000 0.57575143 0.54067119 1.1164226 0.073339638
64000 0.68045383 0.38246533 1.0629192 0.025314593
65000 0.59843527 0.42928622 1.0277215 -0.030096445
66000 0.60274797 0.50186417 1.1046121 0.069797184
67000 0.47450407 0.52689807 1.0014021 0.008758012
68000 0.5514135 0.64113187 1.1925454 0.093863314
69000 0.52008074 0.45749565 0.97757639 -0.066061381
70000 0.69042662 0.50416006 1.1945867 0.014128617
71000 0.63925854 0.35153425 0.9907928 -0.01134957
72000 0.52088835 0.47626986 0.99715821 0.10198133
73000 0.46333852 0.5515537 1.0148922 0.00060582772
74000 0.53481418 0.50409531 1.0389095 0.00919451
75000 0.67182749 0.50380162 1.1756291 0.043301985
76000 0.70492289 0.4112122 1.1161351 0.14880484
77000 0.59781817 0.50197661 1.0997948 -0.057111711
78000 0.51677429 0.4348232 0.95159749 -0.0074619446
79000 0.50663297 0.55000424 1.0566372 0.0052071216
80000 0.59392006 0.48394003 1.0778601 -0.018990234
81000 0.66323593 0.40358336 1.0668193 -0.02961345
82000 0.61596979 0.49177944 1.1077492 0.1314853
83000 0.63917554 0.61656584 1.2557414 0.11908351
84000 0.49305291 0.46161646 0.95466937 0.033558488
85000 0.52552044 0.54250555 1.068026 0.13015174
86000 0.55140914 0.38924725 0.94065638 0.047412499
87000 0.60952504 0.52603688 1.1355619 0.039230066
88000 0.50119735 0.547539 1.0487364 0.019659933
89000 0.40331401 0.50331134 0.90662535 -0.056906034
90000 0.47067839 0.51306911 0.9837475 0.11918166
91000 0.45564995 0.38693455 0.8425845 0.12040045
92000 0.64163032 0.34232532 0.98395564 0.0057051641
93000 0.70375593 0.53646186 1.2402178 0.16044241
94000 0.53378112 0.51971406 1.0534952 0.11389004
95000 0.47055342 0.50396004 0.97451346 0.079424215
96000 0.59543473 0.40204536 0.99748009 0.096813093
97000 0.64821917 0.50051728 1.1487365 0.054071312
98000 0.55723937 0.4945909 1.0518303 0.047316424
99000 0.56044424 0.50773312 1.0681774 0.0149959
100000 0.68254229 0.32704484 1.0095871 0.0069212661
Loop time of 2.20043 on 4 procs for 100000 steps with 32 atoms
Performance: 3926501.701 tau/day, 45445.622 timesteps/s
100.0% CPU use with 4 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.41008 | 0.41366 | 0.41719 | 0.4 | 18.80
Neigh | 0.0027823 | 0.0030481 | 0.0034747 | 0.5 | 0.14
Comm | 0.74581 | 0.7675 | 0.78684 | 2.0 | 34.88
Output | 0.00082111 | 0.0010884 | 0.0016899 | 1.1 | 0.05
Modify | 0.83828 | 0.85329 | 0.86656 | 1.4 | 38.78
Other | | 0.1618 | | | 7.36
Nlocal: 8 ave 9 max 7 min
Histogram: 1 0 0 0 0 2 0 0 0 1
Nghost: 12.75 ave 14 max 12 min
Histogram: 2 0 0 0 0 1 0 0 0 1
Neighs: 11 ave 19 max 5 min
Histogram: 1 0 0 2 0 0 0 0 0 1
Total # of neighbors = 44
Ave neighs/atom = 1.375
Neighbor list builds = 2663
Dangerous builds = 0
Total wall time: 0:00:02

View File

@ -114,7 +114,7 @@ double BodyRoundedPolygon::enclosing_radius(struct AtomVecBody::Bonus *bonus)
int nvertices = bonus->ivalue[0];
if (nvertices == 1 || nvertices == 2)
return *(bonus->dvalue+3*nsub(bonus)+2);
return *(bonus->dvalue+3*nsub(bonus)+2*nsub(bonus));
return *(bonus->dvalue + 3*nsub(bonus) + 2*nsub(bonus));
}
/* ---------------------------------------------------------------------- */
@ -124,7 +124,7 @@ double BodyRoundedPolygon::rounded_radius(struct AtomVecBody::Bonus *bonus)
int nvertices = bonus->ivalue[0];
if (nvertices == 1 || nvertices == 2)
return *(bonus->dvalue+3*nsub(bonus)+2+1);
return *(bonus->dvalue+3*nsub(bonus)+2*nsub(bonus)+1);
return *(bonus->dvalue + 3*nsub(bonus) + 2*nsub(bonus)+1);
}
/* ---------------------------------------------------------------------- */

View File

@ -132,7 +132,8 @@ double BodyRoundedPolyhedron::enclosing_radius(struct AtomVecBody::Bonus *bonus)
int nvertices = bonus->ivalue[0];
if (nvertices == 1 || nvertices == 2)
return *(bonus->dvalue+3*nsub(bonus)+2);
return *(bonus->dvalue+3*nsub(bonus)+2*nedges(bonus)+MAX_FACE_SIZE*nfaces(bonus));
return *(bonus->dvalue+3*nsub(bonus) + 2*nedges(bonus) +
MAX_FACE_SIZE*nfaces(bonus));
}
/* ---------------------------------------------------------------------- */
@ -142,7 +143,8 @@ double BodyRoundedPolyhedron::rounded_radius(struct AtomVecBody::Bonus *bonus)
int nvertices = bonus->ivalue[0];
if (nvertices == 1 || nvertices == 2)
return *(bonus->dvalue+3*nsub(bonus)+2+1);
return *(bonus->dvalue+3*nsub(bonus)+2*nedges(bonus)+MAX_FACE_SIZE*nfaces(bonus)+1);
return *(bonus->dvalue+3*nsub(bonus) + 2*nedges(bonus) +
MAX_FACE_SIZE*nfaces(bonus)+1);
}
/* ---------------------------------------------------------------------- */
@ -205,7 +207,8 @@ void BodyRoundedPolyhedron::data_body(int ibonus, int ninteger, int ndouble,
// nsub == 1 || nsub == 2 || nsub == 3:
// 6 for inertia + 3*nsub for vertex coords + 1 for rounded radius
// nsub > 3:
// 6 for inertia + 3*nsub for vertex coords + 2*nsub for edges + 3*nfaces + 1 for rounded radius
// 6 for inertia + 3*nsub for vertex coords + 2*nsub for edges +
// 3*nfaces + 1 for rounded radius
int nedges,nentries;
if (nsub == 1 || nsub == 2) {

View File

@ -58,7 +58,8 @@ FixWallBodyPolygon::FixWallBodyPolygon(LAMMPS *lmp, int narg, char **arg) :
if (narg < 7) error->all(FLERR,"Illegal fix wall/body/polygon command");
if (!atom->body_flag)
error->all(FLERR,"Fix wall/body/polygon requires atom style body/rounded/polygon");
error->all(FLERR,"Fix wall/body/polygon requires "
"atom style body/rounded/polygon");
restart_peratom = 1;
create_attribute = 1;
@ -182,7 +183,8 @@ void FixWallBodyPolygon::init()
if (!avec)
error->all(FLERR,"Pair body/rounded/polygon requires atom style body");
if (strcmp(avec->bptr->style,"rounded/polygon") != 0)
error->all(FLERR,"Pair body/rounded/polygon requires body style rounded/polygon");
error->all(FLERR,"Pair body/rounded/polygon requires "
"body style rounded/polygon");
bptr = (BodyRoundedPolygon *) avec->bptr;
// set pairstyle from body/polygonular pair style
@ -828,4 +830,3 @@ void FixWallBodyPolygon::distance(const double* x2, const double* x1,
+ (x2[1] - x1[1]) * (x2[1] - x1[1])
+ (x2[2] - x1[2]) * (x2[2] - x1[2]));
}

View File

@ -58,7 +58,8 @@ FixWallBodyPolyhedron::FixWallBodyPolyhedron(LAMMPS *lmp, int narg, char **arg)
if (narg < 7) error->all(FLERR,"Illegal fix wall/body/polyhedron command");
if (!atom->body_flag)
error->all(FLERR,"Fix wall/body/polyhedron requires atom style body/rounded/polyhedron");
error->all(FLERR,"Fix wall/body/polyhedron requires "
"atom style body/rounded/polyhedron");
restart_peratom = 1;
create_attribute = 1;
@ -189,7 +190,8 @@ void FixWallBodyPolyhedron::init()
if (!avec)
error->all(FLERR,"Pair body/rounded/polyhedron requires atom style body");
if (strcmp(avec->bptr->style,"rounded/polyhedron") != 0)
error->all(FLERR,"Pair body/rounded/polyhedron requires body style rounded/polyhedron");
error->all(FLERR,"Pair body/rounded/polyhedron requires "
"body style rounded/polyhedron");
bptr = (BodyRoundedPolyhedron *) avec->bptr;
// set pairstyle from body/polyhedronular pair style
@ -941,4 +943,3 @@ void FixWallBodyPolyhedron::distance(const double* x2, const double* x1,
+ (x2[1] - x1[1]) * (x2[1] - x1[1])
+ (x2[2] - x1[2]) * (x2[2] - x1[2]));
}

View File

@ -276,8 +276,10 @@ void PairBodyRoundedPolygon::compute(int eflag, int vflag)
// scale the force at both contacts
contact_forces(contact_list[m], j_a, x, v, angmom, f, torque, evdwl, facc);
contact_forces(contact_list[n], j_a, x, v, angmom, f, torque, evdwl, facc);
contact_forces(contact_list[m], j_a, x, v, angmom, f, torque,
evdwl, facc);
contact_forces(contact_list[n], j_a, x, v, angmom, f, torque,
evdwl, facc);
done = 1;
#ifdef _POLYGON_DEBUG
@ -285,16 +287,18 @@ void PairBodyRoundedPolygon::compute(int eflag, int vflag)
m, n, delta_a, j_a);
printf(" %d: vertex %d of body %d and edge %d of body %d; "
"xv = %f %f %f; xe = %f %f %f\n",
m, contact_list[m].vertex, contact_list[m].ibody,
contact_list[m].edge, contact_list[m].jbody,
contact_list[m].xv[0], contact_list[m].xv[1], contact_list[m].xv[2],
contact_list[m].xe[0], contact_list[m].xe[1], contact_list[m].xe[2]);
m, contact_list[m].vertex, contact_list[m].ibody,
contact_list[m].edge, contact_list[m].jbody,
contact_list[m].xv[0], contact_list[m].xv[1],
contact_list[m].xv[2], contact_list[m].xe[0],
contact_list[m].xe[1], contact_list[m].xe[2]);
printf(" %d: vertex %d of body %d and edge %d of body %d; "
"xv = %f %f %f; xe = %f %f %f\n",
n, contact_list[n].vertex, contact_list[n].ibody,
contact_list[n].edge, contact_list[n].jbody,
contact_list[n].xv[0], contact_list[n].xv[1], contact_list[n].xv[2],
contact_list[n].xe[0], contact_list[n].xe[1], contact_list[n].xe[2]);
n, contact_list[n].vertex, contact_list[n].ibody,
contact_list[n].edge, contact_list[n].jbody,
contact_list[n].xv[0], contact_list[n].xv[1],
contact_list[n].xv[2], contact_list[n].xe[0],
contact_list[n].xe[1], contact_list[n].xe[2]);
#endif
break;
@ -417,13 +421,16 @@ void PairBodyRoundedPolygon::coeff(int narg, char **arg)
void PairBodyRoundedPolygon::init_style()
{
avec = (AtomVecBody *) atom->style_match("body");
if (!avec) error->all(FLERR,"Pair body/rounded/polygon requires atom style body");
if (!avec)
error->all(FLERR,"Pair body/rounded/polygon requires atom style body");
if (strcmp(avec->bptr->style,"rounded/polygon") != 0)
error->all(FLERR,"Pair body/rounded/polygon requires body style rounded/polygon");
error->all(FLERR,"Pair body/rounded/polygon requires "
"body style rounded/polygon");
bptr = (BodyRoundedPolygon *) avec->bptr;
if (comm->ghost_velocity == 0)
error->all(FLERR,"Pair body/rounded/polygon requires ghost atoms store velocity");
error->all(FLERR,"Pair body/rounded/polygon requires "
"ghost atoms store velocity");
neighbor->request(this);
@ -850,7 +857,8 @@ int PairBodyRoundedPolygon::vertex_against_edge(int i, int j,
#ifdef _CONVEX_POLYGON
// done with the edges from body j,
// given that vertex ni interacts with only one vertex from one edge of body j
// given that vertex ni interacts with only one vertex
// from one edge of body j
break;
#endif

View File

@ -393,13 +393,16 @@ void PairBodyRoundedPolyhedron::coeff(int narg, char **arg)
void PairBodyRoundedPolyhedron::init_style()
{
avec = (AtomVecBody *) atom->style_match("body");
if (!avec) error->all(FLERR,"Pair body/rounded/polyhedron requires atom style body");
if (!avec) error->all(FLERR,"Pair body/rounded/polyhedron requires "
"atom style body");
if (strcmp(avec->bptr->style,"rounded/polyhedron") != 0)
error->all(FLERR,"Pair body/rounded/polyhedron requires body style rounded/polyhedron");
error->all(FLERR,"Pair body/rounded/polyhedron requires "
"body style rounded/polyhedron");
bptr = (BodyRoundedPolyhedron *) avec->bptr;
if (comm->ghost_velocity == 0)
error->all(FLERR,"Pair body/rounded/polyhedron requires ghost atoms store velocity");
error->all(FLERR,"Pair body/rounded/polyhedron requires "
"ghost atoms store velocity");
neighbor->request(this);
@ -788,7 +791,8 @@ void PairBodyRoundedPolyhedron::sphere_against_edge(int ibody, int jbody,
fn[1] = -c_n * vn2;
fn[2] = -c_n * vn3;
// tangential friction term at contact, excluding the tangential deformation term
// tangential friction term at contact,
// excluding the tangential deformation term
ft[0] = -c_t * vt1;
ft[1] = -c_t * vt2;
@ -997,7 +1001,8 @@ int PairBodyRoundedPolyhedron::edge_against_edge(int ibody, int jbody,
// compute the distance between the edge nj to the edge ni
#ifdef _POLYHEDRON_DEBUG
printf("Compute interaction between edge %d of body %d with edge %d of body %d:\n",
printf("Compute interaction between edge %d of body %d "
"with edge %d of body %d:\n",
nj, jbody, ni, ibody);
#endif
@ -1055,7 +1060,8 @@ int PairBodyRoundedPolyhedron::edge_against_face(int ibody, int jbody,
// compute the distance between the face nj to the edge ni
#ifdef _POLYHEDRON_DEBUG
printf("Compute interaction between face %d of body %d with edge %d of body %d:\n",
printf("Compute interaction between face %d of body %d with "
"edge %d of body %d:\n",
nj, jbody, ni, ibody);
#endif
@ -1293,7 +1299,8 @@ int PairBodyRoundedPolyhedron::interaction_face_to_edge(int ibody,
xpj2[1] = xmj[1] + discrete[jfirst+npj2][1];
xpj2[2] = xmj[2] + discrete[jfirst+npj2][2];
// no interaction if two ends of the edge are on the same side with the COM wrt the face
// no interaction if two ends of the edge
// are on the same side with the COM wrt the face
if (opposite_sides(n, xi1, xmi, xpj1) == 0 &&
opposite_sides(n, xi1, xmi, xpj2) == 0)
@ -1305,7 +1312,9 @@ int PairBodyRoundedPolyhedron::interaction_face_to_edge(int ibody,
int inside1 = 0;
int inside2 = 0;
// enum {EF_PARALLEL=0,EF_SAME_SIDE_OF_FACE,EF_INTERSECT_INSIDE,EF_INTERSECT_OUTSIDE};
// enum {EF_PARALLEL=0,EF_SAME_SIDE_OF_FACE,
// EF_INTERSECT_INSIDE,EF_INTERSECT_OUTSIDE};
int interact = edge_face_intersect(xi1, xi2, xi3, xpj1, xpj2,
hi1, hi2, d1, d2, inside1, inside2);
@ -2310,7 +2319,8 @@ double PairBodyRoundedPolyhedron::contact_separation(const Contact& c1,
find the number of unique contacts
------------------------------------------------------------------------- */
void PairBodyRoundedPolyhedron::find_unique_contacts(Contact* contact_list, int& num_contacts)
void PairBodyRoundedPolyhedron::find_unique_contacts(Contact* contact_list,
int& num_contacts)
{
int n = num_contacts;
for (int i = 0; i < n - 1; i++) {