From 13338bf8cbfb7fcb047a43b39b49d6506b7e6e48 Mon Sep 17 00:00:00 2001 From: "Steven J. Plimpton" Date: Mon, 9 Jul 2018 16:15:15 -0600 Subject: [PATCH] small changes to Trung body files --- doc/src/body.txt | 162 ++++++++++---- doc/src/fix_wall_body_polygon.txt | 56 ++--- doc/src/fix_wall_body_polyhedron.txt | 39 ++-- doc/src/pair_body_rounded_polygon.txt | 91 +++++--- doc/src/pair_body_rounded_polyhedron.txt | 91 ++++++-- examples/body/in.cubes | 6 +- examples/body/in.pour3d | 2 +- examples/body/in.squares | 7 +- examples/body/in.wall2d | 7 +- examples/body/log.9Jul18.body.cubes.g++.1 | 125 +++++++++++ examples/body/log.9Jul18.body.cubes.g++.4 | 125 +++++++++++ examples/body/log.9Jul18.body.pour3d.g++.1 | 138 ++++++++++++ examples/body/log.9Jul18.body.squares.g++.1 | 221 +++++++++++++++++++ examples/body/log.9Jul18.body.squares.g++.4 | 221 +++++++++++++++++++ examples/body/log.9Jul18.body.wall2d.g++.1 | 223 ++++++++++++++++++++ examples/body/log.9Jul18.body.wall2d.g++.4 | 223 ++++++++++++++++++++ src/BODY/body_rounded_polygon.cpp | 4 +- src/BODY/body_rounded_polyhedron.cpp | 9 +- src/BODY/fix_wall_body_polygon.cpp | 7 +- src/BODY/fix_wall_body_polyhedron.cpp | 7 +- src/BODY/pair_body_rounded_polygon.cpp | 36 ++-- src/BODY/pair_body_rounded_polyhedron.cpp | 28 ++- 22 files changed, 1646 insertions(+), 182 deletions(-) create mode 100644 examples/body/log.9Jul18.body.cubes.g++.1 create mode 100644 examples/body/log.9Jul18.body.cubes.g++.4 create mode 100644 examples/body/log.9Jul18.body.pour3d.g++.1 create mode 100644 examples/body/log.9Jul18.body.squares.g++.1 create mode 100644 examples/body/log.9Jul18.body.squares.g++.4 create mode 100644 examples/body/log.9Jul18.body.wall2d.g++.1 create mode 100644 examples/body/log.9Jul18.body.wall2d.g++.4 diff --git a/doc/src/body.txt b/doc/src/body.txt index e936f5409c..c272f48ad1 100644 --- a/doc/src/body.txt +++ b/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). diff --git a/doc/src/fix_wall_body_polygon.txt b/doc/src/fix_wall_body_polygon.txt index 00d23c207c..4ba16b56c7 100644 --- a/doc/src/fix_wall_body_polygon.txt +++ b/doc/src/fix_wall_body_polygon.txt @@ -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 diff --git a/doc/src/fix_wall_body_polyhedron.txt b/doc/src/fix_wall_body_polyhedron.txt index a1eef4df07..c937cbdbbc 100644 --- a/doc/src/fix_wall_body_polyhedron.txt +++ b/doc/src/fix_wall_body_polyhedron.txt @@ -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 diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt index 00896b4c7b..15817f10f8 100644 --- a/doc/src/pair_body_rounded_polygon.txt +++ b/doc/src/pair_body_rounded_polygon.txt @@ -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). - - diff --git a/doc/src/pair_body_rounded_polyhedron.txt b/doc/src/pair_body_rounded_polyhedron.txt index 9a5c20ddb6..29fa90d2cf 100644 --- a/doc/src/pair_body_rounded_polyhedron.txt +++ b/doc/src/pair_body_rounded_polyhedron.txt @@ -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). diff --git a/examples/body/in.cubes b/examples/body/in.cubes index 3aeaa70af9..a22599fe96 100644 --- a/examples/body/in.cubes +++ b/examples/body/in.cubes @@ -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 diff --git a/examples/body/in.pour3d b/examples/body/in.pour3d index 290f2052c8..bcba950e59 100644 --- a/examples/body/in.pour3d +++ b/examples/body/in.pour3d @@ -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} diff --git a/examples/body/in.squares b/examples/body/in.squares index f771c15381..3b05b5cead 100755 --- a/examples/body/in.squares +++ b/examples/body/in.squares @@ -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} diff --git a/examples/body/in.wall2d b/examples/body/in.wall2d index 19788a9dcd..04e7f31cb6 100755 --- a/examples/body/in.wall2d +++ b/examples/body/in.wall2d @@ -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} diff --git a/examples/body/log.9Jul18.body.cubes.g++.1 b/examples/body/log.9Jul18.body.cubes.g++.1 new file mode 100644 index 0000000000..c9a799c0b5 --- /dev/null +++ b/examples/body/log.9Jul18.body.cubes.g++.1 @@ -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 diff --git a/examples/body/log.9Jul18.body.cubes.g++.4 b/examples/body/log.9Jul18.body.cubes.g++.4 new file mode 100644 index 0000000000..e2407e9725 --- /dev/null +++ b/examples/body/log.9Jul18.body.cubes.g++.4 @@ -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 diff --git a/examples/body/log.9Jul18.body.pour3d.g++.1 b/examples/body/log.9Jul18.body.pour3d.g++.1 new file mode 100644 index 0000000000..213dd2e18f --- /dev/null +++ b/examples/body/log.9Jul18.body.pour3d.g++.1 @@ -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 diff --git a/examples/body/log.9Jul18.body.squares.g++.1 b/examples/body/log.9Jul18.body.squares.g++.1 new file mode 100644 index 0000000000..7b539797bd --- /dev/null +++ b/examples/body/log.9Jul18.body.squares.g++.1 @@ -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 diff --git a/examples/body/log.9Jul18.body.squares.g++.4 b/examples/body/log.9Jul18.body.squares.g++.4 new file mode 100644 index 0000000000..56d7734b7b --- /dev/null +++ b/examples/body/log.9Jul18.body.squares.g++.4 @@ -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 diff --git a/examples/body/log.9Jul18.body.wall2d.g++.1 b/examples/body/log.9Jul18.body.wall2d.g++.1 new file mode 100644 index 0000000000..f22c366380 --- /dev/null +++ b/examples/body/log.9Jul18.body.wall2d.g++.1 @@ -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 diff --git a/examples/body/log.9Jul18.body.wall2d.g++.4 b/examples/body/log.9Jul18.body.wall2d.g++.4 new file mode 100644 index 0000000000..7239fd4dcd --- /dev/null +++ b/examples/body/log.9Jul18.body.wall2d.g++.4 @@ -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 diff --git a/src/BODY/body_rounded_polygon.cpp b/src/BODY/body_rounded_polygon.cpp index d848a8fa95..1e232f0f3f 100644 --- a/src/BODY/body_rounded_polygon.cpp +++ b/src/BODY/body_rounded_polygon.cpp @@ -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); } /* ---------------------------------------------------------------------- */ diff --git a/src/BODY/body_rounded_polyhedron.cpp b/src/BODY/body_rounded_polyhedron.cpp index a26b6d0cbd..fb0be7c1be 100644 --- a/src/BODY/body_rounded_polyhedron.cpp +++ b/src/BODY/body_rounded_polyhedron.cpp @@ -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) { diff --git a/src/BODY/fix_wall_body_polygon.cpp b/src/BODY/fix_wall_body_polygon.cpp index 72a60b22d0..5ec5a7cca8 100644 --- a/src/BODY/fix_wall_body_polygon.cpp +++ b/src/BODY/fix_wall_body_polygon.cpp @@ -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])); } - diff --git a/src/BODY/fix_wall_body_polyhedron.cpp b/src/BODY/fix_wall_body_polyhedron.cpp index 879289ea42..17e9f0b8b5 100644 --- a/src/BODY/fix_wall_body_polyhedron.cpp +++ b/src/BODY/fix_wall_body_polyhedron.cpp @@ -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])); } - diff --git a/src/BODY/pair_body_rounded_polygon.cpp b/src/BODY/pair_body_rounded_polygon.cpp index 22300091ae..c4c09fd677 100644 --- a/src/BODY/pair_body_rounded_polygon.cpp +++ b/src/BODY/pair_body_rounded_polygon.cpp @@ -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 diff --git a/src/BODY/pair_body_rounded_polyhedron.cpp b/src/BODY/pair_body_rounded_polyhedron.cpp index 96307a0ab1..0d73d249b9 100644 --- a/src/BODY/pair_body_rounded_polyhedron.cpp +++ b/src/BODY/pair_body_rounded_polyhedron.cpp @@ -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++) {