From 843b96e8dd579f7c02cac30948b258186664b0a0 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 18 Jul 2018 08:49:42 -0600
Subject: [PATCH] more changes to new polygon/hedron docs and command names

---
 doc/src/Section_commands.txt                  |  6 +-
 doc/src/body.txt                              | 10 ++--
 ...{pair_body.txt => pair_body_nparticle.txt} | 10 ++--
 doc/src/pair_body_rounded_polygon.txt         | 59 ++++++++-----------
 doc/src/pair_body_rounded_polyhedron.txt      | 50 +++++++---------
 examples/body/in.body                         |  2 +-
 ...{pair_body.cpp => pair_body_nparticle.cpp} | 24 ++++----
 .../{pair_body.h => pair_body_nparticle.h}    | 12 ++--
 8 files changed, 81 insertions(+), 92 deletions(-)
 rename doc/src/{pair_body.txt => pair_body_nparticle.txt} (93%)
 rename src/BODY/{pair_body.cpp => pair_body_nparticle.cpp} (95%)
 rename src/BODY/{pair_body.h => pair_body_nparticle.h} (90%)

diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt
index 3dabdbeaa1..3b73dee150 100644
--- a/doc/src/Section_commands.txt
+++ b/doc/src/Section_commands.txt
@@ -664,6 +664,8 @@ USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.
 "vector"_fix_vector.html,
 "viscosity"_fix_viscosity.html,
 "viscous"_fix_viscous.html,
+"wall/body/polygon"_fix_wall_body_polygon.html,
+"wall/body/polyhedron"_fix_wall_body_polyhedron.html,
 "wall/colloid"_fix_wall.html,
 "wall/gran"_fix_wall_gran.html,
 "wall/gran/region"_fix_wall_gran_region.html,
@@ -914,7 +916,9 @@ KOKKOS, o = USER-OMP, t = OPT.
 "airebo (oi)"_pair_airebo.html,
 "airebo/morse (oi)"_pair_airebo.html,
 "beck (go)"_pair_beck.html,
-"body"_pair_body.html,
+"body/nparticle"_pair_body_nparticle.html,
+"body/rounded/polygon"_pair_body_rounded/polygon.html,
+"body/rounded/polyhedron"_pair_body_rounded/polyhedron.html,
 "bop"_pair_bop.html,
 "born (go)"_pair_born.html,
 "born/coul/dsf"_pair_born.html,
diff --git a/doc/src/body.txt b/doc/src/body.txt
index 85095f7fb6..cef40cc643 100644
--- a/doc/src/body.txt
+++ b/doc/src/body.txt
@@ -286,12 +286,10 @@ polyhedron with a variable number of N vertices, E edges and F faces.
 This style can only be used for 3d models; see the
 "boundary"_boundary.html command.  See the "pair_style
 body/rounded/polygon" doc page for a diagram of a two 2d squares with
-rounded circles at the vertices.  A 3d cube with rounded spheres
-at the 8 vertices and 12 rounded edges would be similar.
-
-TRUNG: What are the special cases allowed for 3d, if any?  Similar to
-the N=1 (sphere) and N=2 (rod) special cases for 2d, descibed in
-previous section.
+rounded circles at the vertices.  A 3d cube with rounded spheres at
+the 8 vertices and 12 rounded edges would be similar.  Special cases
+for N = 1 (sphere) and N = 2 (rod with rounded ends) can also be
+specified.
 
 This body style is for 3d discrete element models, as described in
 "Wang"_#Wang.
diff --git a/doc/src/pair_body.txt b/doc/src/pair_body_nparticle.txt
similarity index 93%
rename from doc/src/pair_body.txt
rename to doc/src/pair_body_nparticle.txt
index 7899da832b..8c5b6e155d 100644
--- a/doc/src/pair_body.txt
+++ b/doc/src/pair_body_nparticle.txt
@@ -10,21 +10,21 @@ pair_style body command :h3
 
 [Syntax:]
 
-pair_style body cutoff :pre
+pair_style body/nparticle cutoff :pre
 
 cutoff = global cutoff for interactions (distance units)
 
 [Examples:]
 
-pair_style body 3.0
+pair_style body/nparticle 3.0
 pair_coeff * * 1.0 1.0
 pair_coeff 1 1 1.0 1.5 2.5 :pre
 
 [Description:]
 
-Style {body} is for use with body particles and calculates pairwise
-body/body interactions as well as interactions between body and
-point-particles.  See "Section 6.14"_Section_howto.html#howto_14
+Style {body/nparticle} is for use with body particles and calculates
+pairwise body/body interactions as well as interactions between body
+and point-particles.  See "Section 6.14"_Section_howto.html#howto_14
 of the manual and the "body"_body.html doc page for more details on
 using body particles.
 
diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt
index ea77fa9247..caaa0746a1 100644
--- a/doc/src/pair_body_rounded_polygon.txt
+++ b/doc/src/pair_body_rounded_polygon.txt
@@ -28,11 +28,11 @@ pair_coeff 1 1 100.0 1.0 :pre
 
 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 (modeled as disks with a specified diameter).
-See "Section 6.14"_Section_howto.html#howto_14 of the
-manual and the "body"_body.html doc page for more details on using
-body rounded/polygon particles.
+body/body interactions which can include body particles modeled as
+1-vertex circular disks with a specified diameter.  See "Section
+6.14"_Section_howto.html#howto_14 of the manual and the
+"body"_body.html doc page for more details on using body
+rounded/polygon particles.
 
 This pairwise interaction between rounded polygons is described in
 "Fraige"_#Fraige, where a polygon does not have sharp corners, but is
@@ -51,8 +51,21 @@ between two particles are defined with respect to the separation of
 their respective rounded surfaces, not by the separation of the
 vertices and edges themselves.
 
-This means that the specified cutoff in the pair_style command is
-the cutoff distance, r_c, for the surface separation, \delta_n (see figure below).
+This means that the specified cutoff in the pair_style command is the
+cutoff distance, r_c, for the surface separation, \delta_n (see figure
+below).  This is the distance at which two particles no longer
+interact.  If r_c is specified as 0.0, then it is a contact-only
+interaction.  I.e. the two particles must overlap in order to exert a
+repulsive force on each other.  If r_c > 0.0, then the force between
+two particles will be attractive for surface separations from 0 to
+r_c, and repulsive once the particles overlap.
+
+Note that unlike for other pair styles, the specified cutoff is not
+the distance between the centers of two particles at which they stop
+interacting.  This center-to-center distance depends on the shape and
+size of the two particles and their relative orientation.  LAMMPS
+takes that into account when computing the surface separation distance
+and applying the r_c cutoff.
 
 The forces between vertex-vertex, vertex-edge, and edge-edge overlaps
 are given by:
@@ -61,25 +74,10 @@ are given by:
 
 :c,image(JPG/pair_body_rounded.jpg)
 
-TRUNG: The diagram label "cohesive regions" confuses me.  Are you
-saying there is some distance d for which the force is attractive,
-i.e. the particles are cohesive?  I think when d > Ri + Rj, since Ri +
-Rj is the surface/surface overlap discussed above?  If so, then the
-discussion above about the specified cutoff is wrong?  I.e. you can
-specify a large cutoff than the surface/surface overlap to get
-cohesive interactions?  If so, this should be explained up above.
-But an additional confusion is that the specied cutoff (Rc in diagram?)
-is a single number, but depedning on the orientiation of the 2
-particles they might have a suface/surface overlap at a much
-smaller value of Ri + Rj.  So what is Rc then? - I added
-the following paragraph to address this.
-
-Note that F_n and F_t are functions of the surface separation
-\delta_n = d - (R_i + R_j).
-In this model, when (R_i + R_j) < d < (R_i + R_j) + r_c, that is,
-0 < \delta_n < r_c, the cohesive region of the two surfaces overlap
-and the two surfaces are attractive to each other.
-
+Note that F_n and F_t are functions of the surface separation \delta_n
+= d - (R_i + R_j).  In this model, when (R_i + R_j) < d < (R_i + R_j)
++ r_c, that is, 0 < \delta_n < r_c, the cohesive region of the two
+surfaces overlap and the two surfaces are attractive to each other.
 
 In "Fraige"_#Fraige, the tangential friction force between two
 particles that are in contact is modeled differently prior to gross
@@ -92,7 +90,6 @@ contact nor calculate the tangential deformation.  Instead, we assume
 that gross sliding takes place as soon as two particles are in
 contact.
 
-
 The following coefficients must be defined for each pair of atom types
 via the "pair_coeff"_pair_coeff.html command as in the examples above,
 or in the data file read by the "read_data"_read_data.html command:
@@ -101,12 +98,8 @@ k_n (energy/distance^2 units)
 k_na (energy/distance^2 units) :ul
 
 Effectively, k_n and k_na are the slopes of the red lines in the plot
-above for force versus surface separation, for \delta_n < 0 and 0 < \delta_n < r_c
-respectively.  (TRUNG: is this sentence correct? - it should read delta_n,
-instead of r)
-
-TRUNG: reminder to copy any change in this file
-to the pair polyhedron file as well (and vice versa)
+above for force versus surface separation, for \delta_n < 0 and 0 <
+\delta_n < r_c respectively.
 
 [Mixing, shift, table, tail correction, restart, rRESPA info]:
 
diff --git a/doc/src/pair_body_rounded_polyhedron.txt b/doc/src/pair_body_rounded_polyhedron.txt
index cb4ec00917..4a58e0119b 100644
--- a/doc/src/pair_body_rounded_polyhedron.txt
+++ b/doc/src/pair_body_rounded_polyhedron.txt
@@ -28,28 +28,11 @@ pair_coeff 1 1 100.0 1.0 :pre
 
 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 (modeled as spheres with a specified diameter).
-See "Section 6.14"_Section_howto.html#howto_14 of
-the manual and the "body"_body.html doc page for more details on using
-body rounded/polyhedron particles.
-
-TRUNG: I think we need a paragraph here about how body/sphere
-interactions are handled.  Does this pair style only do body/body but
-allow for a body = sphere or rod or some other degenerate case?  Or
-does this pair style allow you to model a simulation of mixed body and
-point particles, where point particles are spheroids.  If so, does
-this pair style do body/body and body/point, and you use one of the
-other granular pair styles to do point/point?  I.e. a pair hybrid
-model?  Or does everything have to be defined as bodies.  Actually
-this paragraph would make more sense in the body.txt file about how to
-create a model that includes non-body particles (spheres).  And in
-this pair style file just a couple lines about which part of the
-interactions this pair style computes.  Ditto in the pair body polygon
-file. - The pair style supports body/sphere and sphere/sphere
-given that all the atoms should be of body rounded/polyhedron.
-I updated the above paragraph and added examples in body.txt for
-specifying the special objects (i.e. spheres and rods).
+body/body interactions which can include body particles modeled as
+1-vertex spheres with a specified diameter.  See "Section
+6.14"_Section_howto.html#howto_14 of the manual and the
+"body"_body.html doc page for more details on using body
+rounded/polyhedron particles.
 
 This pairwise interaction between the rounded polyhedra is described in
 "Wang"_#Wang, where a polyhedron does not have sharp corners and
@@ -61,7 +44,6 @@ in the data file read by the "read data"_read_data.html command.  This
 is a discrete element model (DEM) which allows for multiple contact
 points.
 
-
 Note that when two particles interact, the effective surface of each
 polyhedron particle is displaced outward from each of its vertices,
 edges, and faces by half its sphere diameter.  The interaction forces
@@ -69,8 +51,21 @@ and energies between two particles are defined with respect to the
 separation of their respective rounded surfaces, not by the separation
 of the vertices, edges, and faces themselves.
 
-This means that the specified cutoff in the pair_style command is
-the cutoff distance, r_c, for the surface separation, \delta_n (see figure below).
+This means that the specified cutoff in the pair_style command is the
+cutoff distance, r_c, for the surface separation, \delta_n (see figure
+below).  This is the distance at which two particles no longer
+interact.  If r_c is specified as 0.0, then it is a contact-only
+interaction.  I.e. the two particles must overlap in order to exert a
+repulsive force on each other.  If r_c > 0.0, then the force between
+two particles will be attractive for surface separations from 0 to
+r_c, and repulsive once the particles overlap.
+
+Note that unlike for other pair styles, the specified cutoff is not
+the distance between the centers of two particles at which they stop
+interacting.  This center-to-center distance depends on the shape and
+size of the two particles and their relative orientation.  LAMMPS
+takes that into account when computing the surface separation distance
+and applying the r_c cutoff.
 
 The forces between vertex-vertex, vertex-edge, vertex-face, edge-edge,
 and edge-face overlaps are given by:
@@ -97,9 +92,8 @@ k_n (energy/distance^2 units)
 k_na (energy/distance^2 units) :ul
 
 Effectively, k_n and k_na are the slopes of the red lines in the plot
-above for force versus surface separation, for \delta_n < 0 and 0 < \delta_n < r_c
-respectively.  (TRUNG: is this sentence correct? - it should read delta_n,
-instead of r)
+above for force versus surface separation, for \delta_n < 0 and 0 <
+\delta_n < r_c respectively.
 
 [Mixing, shift, table, tail correction, restart, rRESPA info]:
 
diff --git a/examples/body/in.body b/examples/body/in.body
index 5879ed5e45..815b853154 100644
--- a/examples/body/in.body
+++ b/examples/body/in.body
@@ -8,7 +8,7 @@ read_data       data.body
 
 velocity	all create 1.44 87287 loop geom
 
-pair_style	body 5.0
+pair_style	body/nparticle 5.0
 pair_coeff	* * 1.0 1.0
 
 neighbor	0.5 bin
diff --git a/src/BODY/pair_body.cpp b/src/BODY/pair_body_nparticle.cpp
similarity index 95%
rename from src/BODY/pair_body.cpp
rename to src/BODY/pair_body_nparticle.cpp
index 8c12c0cf36..80b45beb4e 100644
--- a/src/BODY/pair_body.cpp
+++ b/src/BODY/pair_body_nparticle.cpp
@@ -15,7 +15,7 @@
 #include <cstdio>
 #include <cstdlib>
 #include <cstring>
-#include "pair_body.h"
+#include "pair_body_nparticle.h"
 #include "math_extra.h"
 #include "atom.h"
 #include "atom_vec_body.h"
@@ -32,7 +32,7 @@ using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
-PairBody::PairBody(LAMMPS *lmp) : Pair(lmp)
+PairBodyNparticle::PairBodyNparticle(LAMMPS *lmp) : Pair(lmp)
 {
   dmax = nmax = 0;
   discrete = NULL;
@@ -44,7 +44,7 @@ PairBody::PairBody(LAMMPS *lmp) : Pair(lmp)
 
 /* ---------------------------------------------------------------------- */
 
-PairBody::~PairBody()
+PairBodyNparticle::~PairBodyNparticle()
 {
   memory->destroy(discrete);
   memory->destroy(dnum);
@@ -66,7 +66,7 @@ PairBody::~PairBody()
 
 /* ---------------------------------------------------------------------- */
 
-void PairBody::compute(int eflag, int vflag)
+void PairBodyNparticle::compute(int eflag, int vflag)
 {
   int i,j,ii,jj,inum,jnum,itype,jtype;
   int ni,nj,npi,npj,ifirst,jfirst;
@@ -336,7 +336,7 @@ void PairBody::compute(int eflag, int vflag)
    allocate all arrays
 ------------------------------------------------------------------------- */
 
-void PairBody::allocate()
+void PairBodyNparticle::allocate()
 {
   allocated = 1;
   int n = atom->ntypes;
@@ -361,7 +361,7 @@ void PairBody::allocate()
    global settings
 ------------------------------------------------------------------------- */
 
-void PairBody::settings(int narg, char **arg)
+void PairBodyNparticle::settings(int narg, char **arg)
 {
   if (narg != 1) error->all(FLERR,"Illegal pair_style command");
 
@@ -381,7 +381,7 @@ void PairBody::settings(int narg, char **arg)
    set coeffs for one or more type pairs
 ------------------------------------------------------------------------- */
 
-void PairBody::coeff(int narg, char **arg)
+void PairBodyNparticle::coeff(int narg, char **arg)
 {
   if (narg < 4 || narg > 5)
     error->all(FLERR,"Incorrect args for pair coefficients");
@@ -415,12 +415,12 @@ void PairBody::coeff(int narg, char **arg)
    init specific to this pair style
 ------------------------------------------------------------------------- */
 
-void PairBody::init_style()
+void PairBodyNparticle::init_style()
 {
   avec = (AtomVecBody *) atom->style_match("body");
-  if (!avec) error->all(FLERR,"Pair body requires atom style body");
+  if (!avec) error->all(FLERR,"Pair body/nparticle requires atom style body");
   if (strcmp(avec->bptr->style,"nparticle") != 0)
-    error->all(FLERR,"Pair body requires body style nparticle");
+    error->all(FLERR,"Pair body/nparticle requires body style nparticle");
   bptr = (BodyNparticle *) avec->bptr;
 
   neighbor->request(this,instance_me);
@@ -430,7 +430,7 @@ void PairBody::init_style()
    init for one type pair i,j and corresponding j,i
 ------------------------------------------------------------------------- */
 
-double PairBody::init_one(int i, int j)
+double PairBodyNparticle::init_one(int i, int j)
 {
   if (setflag[i][j] == 0) {
     epsilon[i][j] = mix_energy(epsilon[i][i],epsilon[j][j],
@@ -459,7 +459,7 @@ double PairBody::init_one(int i, int j)
    store sub-particle space-frame displacements from COM in discrete list
 ------------------------------------------------------------------------- */
 
-void PairBody::body2space(int i)
+void PairBodyNparticle::body2space(int i)
 {
   int ibonus = atom->body[i];
   AtomVecBody::Bonus *bonus = &avec->bonus[ibonus];
diff --git a/src/BODY/pair_body.h b/src/BODY/pair_body_nparticle.h
similarity index 90%
rename from src/BODY/pair_body.h
rename to src/BODY/pair_body_nparticle.h
index 94fbdf34df..9c7d832b64 100644
--- a/src/BODY/pair_body.h
+++ b/src/BODY/pair_body_nparticle.h
@@ -13,21 +13,21 @@
 
 #ifdef PAIR_CLASS
 
-PairStyle(body,PairBody)
+PairStyle(body/nparticle,PairBodyNparticle)
 
 #else
 
-#ifndef LMP_PAIR_BODY_H
-#define LMP_PAIR_BODY_H
+#ifndef LMP_PAIR_BODY_NPARTICLE_H
+#define LMP_PAIR_BODY_NPARTICLE_H
 
 #include "pair.h"
 
 namespace LAMMPS_NS {
 
-class PairBody : public Pair {
+class PairBodyNparticle : public Pair {
  public:
-  PairBody(class LAMMPS *);
-  ~PairBody();
+  PairBodyNparticle(class LAMMPS *);
+  ~PairBodyNparticle();
   void compute(int, int);
   void settings(int, char **);
   void coeff(int, char **);
-- 
GitLab