mirror of https://github.com/lammps/lammps.git
small changes to Trung body files
This commit is contained in:
parent
82b1ab2ac4
commit
13338bf8cb
162
doc/src/body.txt
162
doc/src/body.txt
|
@ -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).
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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).
|
||||
|
||||
|
||||
|
|
|
@ -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).
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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]));
|
||||
}
|
||||
|
||||
|
|
|
@ -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]));
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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++) {
|
||||
|
|
Loading…
Reference in New Issue