From c960b9295cab16665c88d12a14ae40c131ca0a8a Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 17 May 2018 04:27:08 -0400
Subject: [PATCH 001/243] fix cut-n-paste error in fix property/local docs

correct issue reported in comment at https://github.com/lammps/lammps/pull/911
---
 doc/src/compute_property_local.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/compute_property_local.txt b/doc/src/compute_property_local.txt
index 39106a39c8..e4e6f1ef1e 100644
--- a/doc/src/compute_property_local.txt
+++ b/doc/src/compute_property_local.txt
@@ -19,8 +19,8 @@ one or more attributes may be appended :l
                         patom1 patom2 ptype1 ptype2
                         batom1 batom2 btype
                         aatom1 aatom2 aatom3 atype
-                        datom1 datom2 datom3 dtype
-                        iatom1 iatom2 iatom3 itype :pre
+                        datom1 datom2 datom3 datom4 dtype
+                        iatom1 iatom2 iatom3 iatom4 itype :pre
 
      natom1, natom2 = IDs of 2 atoms in each pair (within neighbor cutoff)
      ntype1, ntype2 = type of 2 atoms in each pair (within neighbor cutoff)
-- 
GitLab


From d10a470245c3cef9a0083e3d5855f58e7599bdc0 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Fri, 18 May 2018 06:43:23 -0400
Subject: [PATCH 002/243] second try to implement changes suggested in issue
 #888

In src/rcb.cpp:460 there is an if (smaller > largest).
now if we have one particle you will see that lo[] = hi[] and because
of this smaller == largest == 0 for all values of dim. This causes
this particular part of the code to never be run. In particular the
memcpy inside this if is never executed. This causes an unitialized
memory access in line 472. Additionally, dim is initialized with -1
and thus the accesses in 484 and 485 are problematic. Additionally,
valuehalf_select is never initialized either.

closes #888
---
 src/balance.cpp | 14 ++++++++++++++
 src/rcb.cpp     |  2 +-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/balance.cpp b/src/balance.cpp
index 86deb55b47..ed44e3ee0e 100644
--- a/src/balance.cpp
+++ b/src/balance.cpp
@@ -28,6 +28,7 @@
 #include "rcb.h"
 #include "irregular.h"
 #include "domain.h"
+#include "neighbor.h"
 #include "force.h"
 #include "update.h"
 #include "group.h"
@@ -643,6 +644,19 @@ int *Balance::bisection(int sortflag)
   double *shrinklo = &shrinkall[0];
   double *shrinkhi = &shrinkall[3];
 
+  // ensure that that the box has at least some extent.
+  const double nproc_rt = domain->dimension == 3 ?
+                          cbrt(static_cast<double>(comm->nprocs)) :
+                          sqrt(static_cast<double>(comm->nprocs));
+  const double min_extent = ceil(nproc_rt)*neighbor->skin;
+  for (int i = 0; i < domain->dimension; i++) {
+    if (shrinkall[3+i]-shrinkall[i] < min_extent) {
+      const double mid = 0.5*(shrinkall[3+i]+shrinkall[i]);
+      shrinkall[3+i] = std::min(mid + min_extent*0.5, boxhi[i]);
+      shrinkall[i]   = std::max(mid - min_extent*0.5, boxlo[i]);
+    }
+  }
+
   // invoke RCB
   // then invert() to create list of proc assignments for my atoms
   // NOTE: (3/2017) can remove undocumented "old" option at some point
diff --git a/src/rcb.cpp b/src/rcb.cpp
index 3027920310..4ea70ee914 100644
--- a/src/rcb.cpp
+++ b/src/rcb.cpp
@@ -243,7 +243,7 @@ void RCB::compute(int dimension, int n, double **x, double *wt,
     // dotmark_select = dot markings in that dimension
 
     int dim_select = -1;
-    double largest = 0.0;
+    double largest = -1.0;
 
     for (dim = 0; dim < dimension; dim++) {
 
-- 
GitLab


From 41687a84a4f8c17e597634978bfcb98a25455043 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Thu, 24 May 2018 22:55:49 -0500
Subject: [PATCH 003/243] Added body and pair styles for rounded/polygon and
 rounded polyhedra, wall fixesthat are compatible with these body styles

---
 src/BODY/body_rounded_polygon.cpp         |  452 ++++
 src/BODY/body_rounded_polygon.h           |   86 +
 src/BODY/body_rounded_polyhedron.cpp      |  523 +++++
 src/BODY/body_rounded_polyhedron.h        |   88 +
 src/BODY/fix_wall_body_polygon.cpp        |  831 ++++++++
 src/BODY/fix_wall_body_polygon.h          |  129 ++
 src/BODY/fix_wall_body_polyhedron.cpp     |  944 +++++++++
 src/BODY/fix_wall_body_polyhedron.h       |  143 ++
 src/BODY/pair_body_rounded_polygon.cpp    | 1359 ++++++++++++
 src/BODY/pair_body_rounded_polygon.h      |  128 ++
 src/BODY/pair_body_rounded_polyhedron.cpp | 2348 +++++++++++++++++++++
 src/BODY/pair_body_rounded_polyhedron.h   |  176 ++
 12 files changed, 7207 insertions(+)
 create mode 100644 src/BODY/body_rounded_polygon.cpp
 create mode 100644 src/BODY/body_rounded_polygon.h
 create mode 100644 src/BODY/body_rounded_polyhedron.cpp
 create mode 100644 src/BODY/body_rounded_polyhedron.h
 create mode 100644 src/BODY/fix_wall_body_polygon.cpp
 create mode 100644 src/BODY/fix_wall_body_polygon.h
 create mode 100644 src/BODY/fix_wall_body_polyhedron.cpp
 create mode 100644 src/BODY/fix_wall_body_polyhedron.h
 create mode 100644 src/BODY/pair_body_rounded_polygon.cpp
 create mode 100644 src/BODY/pair_body_rounded_polygon.h
 create mode 100644 src/BODY/pair_body_rounded_polyhedron.cpp
 create mode 100644 src/BODY/pair_body_rounded_polyhedron.h

diff --git a/src/BODY/body_rounded_polygon.cpp b/src/BODY/body_rounded_polygon.cpp
new file mode 100644
index 0000000000..d848a8fa95
--- /dev/null
+++ b/src/BODY/body_rounded_polygon.cpp
@@ -0,0 +1,452 @@
+/* ----------------------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+   Contributing author: Trung Dac Nguyen (ndactrung@gmail.com)
+------------------------------------------------------------------------- */
+
+#include <cstdlib>
+#include "body_rounded_polygon.h"
+#include "atom_vec_body.h"
+#include "atom.h"
+#include "force.h"
+#include "domain.h"
+#include "math_extra.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+
+#define EPSILON 1.0e-7
+enum{SPHERE,LINE};           // also in DumpImage
+
+/* ---------------------------------------------------------------------- */
+
+BodyRoundedPolygon::BodyRoundedPolygon(LAMMPS *lmp, int narg, char **arg) :
+  Body(lmp, narg, arg)
+{
+  if (narg != 3) error->all(FLERR,"Invalid body rounded/polygon command");
+
+  if (domain->dimension != 2)
+    error->all(FLERR,"Atom_style body rounded/polygon "
+               "can only be used in 2d simulations");
+
+  // nmin and nmax are minimum and maximum number of vertices
+
+  int nmin = force->inumeric(FLERR,arg[1]);
+  int nmax = force->inumeric(FLERR,arg[2]);
+  if (nmin <= 0 || nmin > nmax)
+    error->all(FLERR,"Invalid body rounded/polygon command");
+
+  size_forward = 0;
+
+  // 1 integer for number of vertices,
+  // 3*nmax doubles for vertex coordinates + 2*nmax doubles for edge ends
+  // 1 double for the enclosing radius
+  // 1 double for the rounded radius
+
+  size_border = 1 + 3*nmax + 2*nmax + 1 + 1;
+
+  // NOTE: need to set appropriate nnbin param for dcp
+
+  icp = new MyPoolChunk<int>(1,1);
+  dcp = new MyPoolChunk<double>(3*nmin+2*nmin+1+1,3*nmax+2*nmax+1+1);
+
+  memory->create(imflag,nmax,"body/rounded/polygon:imflag");
+  memory->create(imdata,nmax,7,"body/nparticle:imdata");
+}
+
+/* ---------------------------------------------------------------------- */
+
+BodyRoundedPolygon::~BodyRoundedPolygon()
+{
+  delete icp;
+  delete dcp;
+  memory->destroy(imflag);
+  memory->destroy(imdata);
+}
+
+/* ---------------------------------------------------------------------- */
+
+int BodyRoundedPolygon::nsub(AtomVecBody::Bonus *bonus)
+{
+  return bonus->ivalue[0];
+}
+
+/* ---------------------------------------------------------------------- */
+
+double *BodyRoundedPolygon::coords(AtomVecBody::Bonus *bonus)
+{
+  return bonus->dvalue;
+}
+
+/* ---------------------------------------------------------------------- */
+
+int BodyRoundedPolygon::nedges(AtomVecBody::Bonus *bonus)
+{
+  int nvertices = bonus->ivalue[0];
+  if (nvertices == 1) return 0;
+  else if (nvertices == 2) return 1;
+  return nvertices;
+}
+
+/* ---------------------------------------------------------------------- */
+
+double *BodyRoundedPolygon::edges(AtomVecBody::Bonus *bonus)
+{
+  return bonus->dvalue+3*nsub(bonus);
+}
+
+/* ---------------------------------------------------------------------- */
+
+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));
+}
+
+/* ---------------------------------------------------------------------- */
+
+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);
+}
+
+/* ---------------------------------------------------------------------- */
+
+int BodyRoundedPolygon::pack_border_body(AtomVecBody::Bonus *bonus, double *buf)
+{
+  int nsub = bonus->ivalue[0];
+  buf[0] = nsub;
+  memcpy(&buf[1],bonus->dvalue,(3*nsub+2*nsub+1+1)*sizeof(double));
+  return 1+(3*nsub+2*nsub+1+1);
+}
+
+/* ---------------------------------------------------------------------- */
+
+int BodyRoundedPolygon::unpack_border_body(AtomVecBody::Bonus *bonus,
+                                           double *buf)
+{
+  int nsub = static_cast<int> (buf[0]);
+  bonus->ivalue[0] = nsub;
+  memcpy(bonus->dvalue,&buf[1],(3*nsub+2*nsub+1+1)*sizeof(double));
+  return 1+(3*nsub+2*nsub+1+1);
+}
+
+/* ----------------------------------------------------------------------
+   populate bonus data structure with data file values
+------------------------------------------------------------------------- */
+
+void BodyRoundedPolygon::data_body(int ibonus, int ninteger, int ndouble,
+				   int *ifile, double *dfile)
+{
+  AtomVecBody::Bonus *bonus = &avec->bonus[ibonus];
+
+  // set ninteger, ndouble in bonus and allocate 2 vectors of ints, doubles
+
+  if (ninteger != 1)
+    error->one(FLERR,"Incorrect # of integer values in "
+               "Bodies section of data file");
+  int nsub = ifile[0];
+  if (nsub < 1)
+    error->one(FLERR,"Incorrect integer value in "
+               "Bodies section of data file");
+
+  // nentries = number of double entries to be read from Body section:
+  //   6 for inertia + 3*nsub for vertex coords + 1 for rounded radius
+
+  int nentries = 6 + 3*nsub + 1; 
+  if (ndouble != nentries)
+    error->one(FLERR,"Incorrect # of floating-point values in "
+             "Bodies section of data file");
+
+  bonus->ninteger = 1;
+  bonus->ivalue = icp->get(bonus->iindex);
+  bonus->ivalue[0] = nsub;
+  bonus->ndouble = 3*nsub + 2*nsub + 1 + 1;
+  bonus->dvalue = dcp->get(bonus->ndouble,bonus->dindex);
+
+  // diagonalize inertia tensor
+
+  double tensor[3][3];
+  tensor[0][0] = dfile[0];
+  tensor[1][1] = dfile[1];
+  tensor[2][2] = dfile[2];
+  tensor[0][1] = tensor[1][0] = dfile[3];
+  tensor[0][2] = tensor[2][0] = dfile[4];
+  tensor[1][2] = tensor[2][1] = dfile[5];
+
+  double *inertia = bonus->inertia;
+  double evectors[3][3];
+  int ierror = MathExtra::jacobi(tensor,inertia,evectors);
+  if (ierror) error->one(FLERR,
+                         "Insufficient Jacobi rotations for body nparticle");
+
+  // if any principal moment < scaled EPSILON, set to 0.0
+
+  double max;
+  max = MAX(inertia[0],inertia[1]);
+  max = MAX(max,inertia[2]);
+
+  if (inertia[0] < EPSILON*max) inertia[0] = 0.0;
+  if (inertia[1] < EPSILON*max) inertia[1] = 0.0;
+  if (inertia[2] < EPSILON*max) inertia[2] = 0.0;
+
+  // exyz_space = principal axes in space frame
+
+  double ex_space[3],ey_space[3],ez_space[3];
+
+  ex_space[0] = evectors[0][0];
+  ex_space[1] = evectors[1][0];
+  ex_space[2] = evectors[2][0];
+  ey_space[0] = evectors[0][1];
+  ey_space[1] = evectors[1][1];
+  ey_space[2] = evectors[2][1];
+  ez_space[0] = evectors[0][2];
+  ez_space[1] = evectors[1][2];
+  ez_space[2] = evectors[2][2];
+
+  // enforce 3 evectors as a right-handed coordinate system
+  // flip 3rd vector if needed
+
+  double cross[3];
+  MathExtra::cross3(ex_space,ey_space,cross);
+  if (MathExtra::dot3(cross,ez_space) < 0.0) MathExtra::negate3(ez_space);
+
+  // create initial quaternion
+
+  MathExtra::exyz_to_q(ex_space,ey_space,ez_space,bonus->quat);
+
+  // bonus->dvalue = the first 3*nsub elements are sub-particle displacements
+  // find the enclosing radius of the body from the maximum displacement
+
+  int i,m;
+  double delta[3], rsq, erad, rrad;
+  double erad2 = 0;
+  int j = 6;
+  int k = 0;
+  for (i = 0; i < nsub; i++) {
+    delta[0] = dfile[j];
+    delta[1] = dfile[j+1];
+    delta[2] = dfile[j+2];
+    MathExtra::transpose_matvec(ex_space,ey_space,ez_space,
+                                delta,&bonus->dvalue[k]);
+    rsq = delta[0] * delta[0] + delta[1] * delta[1] +
+      delta[2] * delta[2];
+    if (rsq > erad2) erad2 = rsq;
+    j += 3;
+    k += 3;
+  }
+
+  // .. the next 2*nsub elements are edge ends
+
+  int nedges;
+  if (nsub == 1) { // spheres
+    nedges = 0;
+    bonus->dvalue[k] = 0;
+    *(&bonus->dvalue[k]+1) = 0;
+    k += 2;
+
+    // the last element of bonus->dvalue is the rounded & enclosing radius
+
+    rrad = 0.5 * dfile[j];
+    bonus->dvalue[k] = rrad;
+    erad = rrad;
+
+    k++;
+    bonus->dvalue[k] = rrad;
+
+    atom->radius[bonus->ilocal] = erad;
+
+  } else if (nsub == 2) { // rods
+    nedges = 1;
+    for (i = 0; i < nedges; i++) {
+      bonus->dvalue[k] = 0;
+      *(&bonus->dvalue[k]+1) = 1;
+      k += 2;
+    }    
+
+    erad = sqrt(erad2);
+    bonus->dvalue[k] = erad;
+
+    // the last element of bonus->dvalue is the rounded radius
+
+    rrad = 0.5 * dfile[j];
+    k++;
+    bonus->dvalue[k] = rrad;
+
+    atom->radius[bonus->ilocal] = erad + rrad;
+
+  } else { // polygons
+    nedges = nsub;
+    for (i = 0; i < nedges; i++) {
+      bonus->dvalue[k] = i;
+      m = i+1;
+      if (m == nedges) m = 0;
+      *(&bonus->dvalue[k]+1) = m;
+      k += 2;
+    }
+
+    // the next to last element is the enclosing radius
+
+    erad = sqrt(erad2);
+    bonus->dvalue[k] = erad;
+
+    // the last element of bonus->dvalue is the rounded radius
+
+    rrad = 0.5 * dfile[j];
+    k++;
+    bonus->dvalue[k] = rrad;
+
+    atom->radius[bonus->ilocal] = erad + rrad;
+  }
+}
+
+/* ----------------------------------------------------------------------
+   return radius of body particle defined by ifile/dfile params
+   params are ordered as in data file
+   called by Molecule class which needs single body size
+------------------------------------------------------------------------- */
+
+double BodyRoundedPolygon::radius_body(int ninteger, int ndouble,
+				       int *ifile, double *dfile)
+{
+  int nsub = ifile[0];
+  if (nsub < 1)
+    error->one(FLERR,"Incorrect integer value in "
+               "Bodies section of data file");
+  if (ndouble != 6 + 3*nsub + 1)
+    error->one(FLERR,"Incorrect # of floating-point values in "
+               "Bodies section of data file");
+
+  // sub-particle coords are relative to body center at (0,0,0)
+  // offset = 6 for sub-particle coords
+
+  double onerad;
+  double maxrad = 0.0;
+  double delta[3];
+
+  int offset = 6;          
+  for (int i = 0; i < nsub; i++) {
+    delta[0] = dfile[offset];
+    delta[1] = dfile[offset+1];
+    delta[2] = dfile[offset+2];
+    offset += 3;
+    onerad = MathExtra::len3(delta);
+    maxrad = MAX(maxrad,onerad);
+  }
+  
+  // add in radius of rounded corners
+  
+  return maxrad + 0.5*dfile[offset];
+}
+
+/* ---------------------------------------------------------------------- */
+
+int BodyRoundedPolygon::noutcol()
+{
+  // the number of columns for the vertex coordinates
+
+  return 3;
+}
+
+/* ---------------------------------------------------------------------- */
+
+int BodyRoundedPolygon::noutrow(int ibonus)
+{
+  // only return the first nsub rows for the vertex coordinates
+
+  return avec->bonus[ibonus].ivalue[0];
+}
+
+/* ---------------------------------------------------------------------- */
+
+void BodyRoundedPolygon::output(int ibonus, int m, double *values)
+{
+  AtomVecBody::Bonus *bonus = &avec->bonus[ibonus];
+
+  double p[3][3];
+  MathExtra::quat_to_mat(bonus->quat,p);
+  MathExtra::matvec(p,&bonus->dvalue[3*m],values);
+
+  double *x = atom->x[bonus->ilocal];
+  values[0] += x[0];
+  values[1] += x[1];
+  values[2] += x[2];
+}
+
+/* ---------------------------------------------------------------------- */
+
+int BodyRoundedPolygon::image(int ibonus, double flag1, double flag2,
+                              int *&ivec, double **&darray)
+{
+  int j;
+  double p[3][3];
+  double *x, rrad;
+
+  AtomVecBody::Bonus *bonus = &avec->bonus[ibonus];
+  int n = bonus->ivalue[0];
+  
+  if (n == 1) {
+    for (int i = 0; i < n; i++) {
+      imflag[i] = SPHERE;
+      MathExtra::quat_to_mat(bonus->quat,p);
+      MathExtra::matvec(p,&bonus->dvalue[3*i],imdata[i]);
+
+      rrad = enclosing_radius(bonus);
+      x = atom->x[bonus->ilocal];
+      imdata[i][0] += x[0];
+      imdata[i][1] += x[1];
+      imdata[i][2] += x[2];
+      if (flag1 <= 0) imdata[i][3] = 2*rrad;
+      else imdata[i][3] = flag1;
+    }
+
+  } else {
+  
+    // first end pt of each line
+
+    for (int i = 0; i < n; i++) {
+      imflag[i] = LINE;
+      MathExtra::quat_to_mat(bonus->quat,p);
+      MathExtra::matvec(p,&bonus->dvalue[3*i],imdata[i]);
+
+      rrad = rounded_radius(bonus);
+      x = atom->x[bonus->ilocal];
+      imdata[i][0] += x[0];
+      imdata[i][1] += x[1];
+      imdata[i][2] += x[2];
+      if (flag1 <= 0) imdata[i][6] = 2*rrad;
+      else imdata[i][6] = flag1;
+    }
+
+    // second end pt of each line
+  
+    for (int i = 0; i < n; i++) {
+      j = i+1;
+      if (j == n) j = 0;
+      imdata[i][3] = imdata[j][0];
+      imdata[i][4] = imdata[j][1];
+      imdata[i][5] = imdata[j][2];
+    }
+  }
+
+  ivec = imflag;
+  darray = imdata;
+  return n;
+}
diff --git a/src/BODY/body_rounded_polygon.h b/src/BODY/body_rounded_polygon.h
new file mode 100644
index 0000000000..b6f45c5cf5
--- /dev/null
+++ b/src/BODY/body_rounded_polygon.h
@@ -0,0 +1,86 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef BODY_CLASS
+
+BodyStyle(rounded/polygon,BodyRoundedPolygon)
+
+#else
+
+#ifndef LMP_BODY_ROUNDED_POLYGON_H
+#define LMP_BODY_ROUNDED_POLYGON_H
+
+#include "body.h"
+#include "atom_vec_body.h"
+
+namespace LAMMPS_NS {
+
+class BodyRoundedPolygon : public Body {
+ public:
+  BodyRoundedPolygon(class LAMMPS *, int, char **);
+  ~BodyRoundedPolygon();
+  int nsub(struct AtomVecBody::Bonus *);
+  double *coords(struct AtomVecBody::Bonus *);
+  int nedges(struct AtomVecBody::Bonus *);
+  double *edges(struct AtomVecBody::Bonus *);
+  double enclosing_radius(struct AtomVecBody::Bonus *);
+  double rounded_radius(struct AtomVecBody::Bonus *);
+
+  int pack_border_body(struct AtomVecBody::Bonus *, double *);
+  int unpack_border_body(struct AtomVecBody::Bonus *, double *);
+  void data_body(int, int, int, int *, double *);
+  double radius_body(int, int, int *, double *);
+
+  int noutrow(int);
+  int noutcol();
+  void output(int, int, double *);
+  int image(int, double, double, int *&, double **&);
+
+ private:
+  int *imflag;
+  double **imdata;
+};
+
+}
+
+#endif
+#endif
+
+/* ERROR/WARNING messages:
+
+E: Invalid body rounded/polygon command
+
+Arguments in atom-style command are not correct.
+
+E: Invalid format in Bodies section of data file
+
+The specified number of integer or floating point values does not
+appear.
+
+E: Incorrect # of integer values in Bodies section of data file
+
+See doc page for body style.
+
+E: Incorrect integer value in Bodies section of data file
+
+See doc page for body style.
+
+E: Incorrect # of floating-point values in Bodies section of data file
+
+See doc page for body style.
+
+E: Insufficient Jacobi rotations for body nparticle
+
+Eigensolve for rigid body was not sufficiently accurate.
+
+*/
diff --git a/src/BODY/body_rounded_polyhedron.cpp b/src/BODY/body_rounded_polyhedron.cpp
new file mode 100644
index 0000000000..a26b6d0cbd
--- /dev/null
+++ b/src/BODY/body_rounded_polyhedron.cpp
@@ -0,0 +1,523 @@
+/* ----------------------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+   Contributing author: Trung Dac Nguyen (ndactrung@gmail.com)
+------------------------------------------------------------------------- */
+
+#include <cstdlib>
+#include "body_rounded_polyhedron.h"
+#include "atom_vec_body.h"
+#include "atom.h"
+#include "force.h"
+#include "domain.h"
+#include "math_extra.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+
+#define EPSILON 1.0e-7
+#define MAX_FACE_SIZE 4  // maximum number of vertices per face (for now)
+
+enum{SPHERE,LINE};       // also in DumpImage
+
+/* ---------------------------------------------------------------------- */
+
+BodyRoundedPolyhedron::BodyRoundedPolyhedron(LAMMPS *lmp, int narg, char **arg) :
+  Body(lmp, narg, arg)
+{
+  if (narg != 3) error->all(FLERR,"Invalid body rounded/polygon command");
+
+  // nmin and nmax are minimum and maximum number of vertices
+
+  int nmin = force->inumeric(FLERR,arg[1]);
+  int nmax = force->inumeric(FLERR,arg[2]);
+  if (nmin <= 0 || nmin > nmax)
+    error->all(FLERR,"Invalid body rounded/polyhedron command");
+
+  size_forward = 0;
+
+  // 1 integer for number of vertices,
+  // 3*nmax doubles for vertex coordinates + 2*nmax doubles for edge ends +
+  // (MAX_FACE_SIZE+1)*nmax for faces
+  // 1 double for the enclosing radius
+  // 1 double for the rounded radius
+
+  size_border = 1 + 3*nmax + 2*nmax + MAX_FACE_SIZE*nmax + 1 + 1;
+
+  // NOTE: need to set appropriate nnbin param for dcp
+
+  icp = new MyPoolChunk<int>(1,3);
+  dcp = new MyPoolChunk<double>(3*nmin+2+1+1,
+                                3*nmax+2*nmax+MAX_FACE_SIZE*nmax+1+1);
+
+  memory->create(imflag,2*nmax,"body/rounded/polyhedron:imflag");
+  memory->create(imdata,2*nmax,7,"body/polyhedron:imdata");
+}
+
+/* ---------------------------------------------------------------------- */
+
+BodyRoundedPolyhedron::~BodyRoundedPolyhedron()
+{
+  delete icp;
+  delete dcp;
+  memory->destroy(imflag);
+  memory->destroy(imdata);
+}
+
+/* ---------------------------------------------------------------------- */
+
+int BodyRoundedPolyhedron::nsub(AtomVecBody::Bonus *bonus)
+{
+  return bonus->ivalue[0];
+}
+
+/* ---------------------------------------------------------------------- */
+
+double *BodyRoundedPolyhedron::coords(AtomVecBody::Bonus *bonus)
+{
+  return bonus->dvalue;
+}
+
+/* ---------------------------------------------------------------------- */
+
+int BodyRoundedPolyhedron::nedges(AtomVecBody::Bonus *bonus)
+{
+  int nvertices = bonus->ivalue[0];
+  int nedges = bonus->ivalue[1];
+  int nfaces = bonus->ivalue[2];
+  if (nvertices == 1) return 0;
+  else if (nvertices == 2) return 1;
+  return nedges; //(nvertices+nfaces-2); // Euler's polyon formula: V-E+F=2
+}
+
+/* ---------------------------------------------------------------------- */
+
+double *BodyRoundedPolyhedron::edges(AtomVecBody::Bonus *bonus)
+{
+  return bonus->dvalue+3*nsub(bonus);
+}
+
+/* ---------------------------------------------------------------------- */
+
+int BodyRoundedPolyhedron::nfaces(AtomVecBody::Bonus *bonus)
+{
+  return bonus->ivalue[2];
+}
+
+/* ---------------------------------------------------------------------- */
+
+double *BodyRoundedPolyhedron::faces(AtomVecBody::Bonus *bonus)
+{
+  int nvertices = bonus->ivalue[0];
+  if (nvertices == 1 || nvertices == 2) return NULL;
+  return bonus->dvalue+3*nsub(bonus)+2*nedges(bonus);
+}
+
+/* ---------------------------------------------------------------------- */
+
+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));
+}
+
+/* ---------------------------------------------------------------------- */
+
+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);
+}
+
+/* ---------------------------------------------------------------------- */
+
+int BodyRoundedPolyhedron::pack_border_body(AtomVecBody::Bonus *bonus, double *buf)
+{
+  int nsub = bonus->ivalue[0];
+  int ned = bonus->ivalue[1];
+  int nfac = bonus->ivalue[2];
+  buf[0] = nsub;
+  buf[1] = ned;
+  buf[2] = nfac;
+  int ndouble;
+  if (nsub == 1 || nsub == 2) ndouble = 3*nsub+2+MAX_FACE_SIZE*nfac+1+1;
+  else ndouble = 3*nsub+2*nedges(bonus)+MAX_FACE_SIZE*nfac+1+1;
+  memcpy(&buf[3],bonus->dvalue,ndouble*sizeof(double));
+  return 3+ndouble;
+}
+
+/* ---------------------------------------------------------------------- */
+
+int BodyRoundedPolyhedron::unpack_border_body(AtomVecBody::Bonus *bonus,
+                                           double *buf)
+{
+  int nsub = static_cast<int> (buf[0]);
+  int ned = static_cast<int> (buf[1]);
+  int nfac = static_cast<int> (buf[2]);
+  bonus->ivalue[0] = nsub;
+  bonus->ivalue[1] = ned;
+  bonus->ivalue[2] = nfac;
+  int ndouble;
+  if (nsub == 1 || nsub == 2) ndouble = 3*nsub+2+MAX_FACE_SIZE*nfac+1+1;
+  else ndouble = 3*nsub+2*nedges(bonus)+MAX_FACE_SIZE*nfac+1+1;
+  memcpy(bonus->dvalue,&buf[3],ndouble*sizeof(double));
+  return 3+ndouble;
+}
+
+/* ----------------------------------------------------------------------
+   populate bonus data structure with data file values
+------------------------------------------------------------------------- */
+
+void BodyRoundedPolyhedron::data_body(int ibonus, int ninteger, int ndouble,
+                             int *ifile, double *dfile)
+{
+  AtomVecBody::Bonus *bonus = &avec->bonus[ibonus];
+
+  // set ninteger, ndouble in bonus and allocate 2 vectors of ints, doubles
+
+  if (ninteger != 3)
+    error->one(FLERR,"Incorrect # of integer values in "
+               "Bodies section of data file");
+  int nsub = ifile[0];
+  int ned = ifile[1];
+  int nfac = ifile[2];
+  if (nsub < 1)
+    error->one(FLERR,"Incorrect integer value in "
+               "Bodies section of data file");
+
+  // nentries = number of double entries to be read from Body section:
+  // 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
+
+  int nedges,nentries;
+  if (nsub == 1 || nsub == 2) {
+    nentries = 6 + 3*nsub + 1;
+  } else {
+    nedges = ned; //nsub + nfac - 2;
+    nentries = 6 + 3*nsub + 2*nedges + MAX_FACE_SIZE*nfac + 1;
+  }
+  if (ndouble != nentries)
+    error->one(FLERR,"Incorrect # of floating-point values in "
+             "Bodies section of data file");
+
+  bonus->ninteger = 3;
+  bonus->ivalue = icp->get(bonus->iindex);
+  bonus->ivalue[0] = nsub;
+  bonus->ivalue[1] = ned;
+  bonus->ivalue[2] = nfac;
+  if (nsub == 1 || nsub == 2) bonus->ndouble = 3*nsub + 2*nsub + 1 + 1;
+  else bonus->ndouble = 3*nsub + 2*nedges + MAX_FACE_SIZE*nfac + 1 + 1;
+  bonus->dvalue = dcp->get(bonus->ndouble,bonus->dindex);
+
+  // diagonalize inertia tensor
+
+  double tensor[3][3];
+  tensor[0][0] = dfile[0];
+  tensor[1][1] = dfile[1];
+  tensor[2][2] = dfile[2];
+  tensor[0][1] = tensor[1][0] = dfile[3];
+  tensor[0][2] = tensor[2][0] = dfile[4];
+  tensor[1][2] = tensor[2][1] = dfile[5];
+
+  double *inertia = bonus->inertia;
+  double evectors[3][3];
+  int ierror = MathExtra::jacobi(tensor,inertia,evectors);
+  if (ierror) error->one(FLERR,
+                         "Insufficient Jacobi rotations for body nparticle");
+
+  // if any principal moment < scaled EPSILON, set to 0.0
+
+  double max;
+  max = MAX(inertia[0],inertia[1]);
+  max = MAX(max,inertia[2]);
+
+  if (inertia[0] < EPSILON*max) inertia[0] = 0.0;
+  if (inertia[1] < EPSILON*max) inertia[1] = 0.0;
+  if (inertia[2] < EPSILON*max) inertia[2] = 0.0;
+
+  // exyz_space = principal axes in space frame
+
+  double ex_space[3],ey_space[3],ez_space[3];
+
+  ex_space[0] = evectors[0][0];
+  ex_space[1] = evectors[1][0];
+  ex_space[2] = evectors[2][0];
+  ey_space[0] = evectors[0][1];
+  ey_space[1] = evectors[1][1];
+  ey_space[2] = evectors[2][1];
+  ez_space[0] = evectors[0][2];
+  ez_space[1] = evectors[1][2];
+  ez_space[2] = evectors[2][2];
+
+  // enforce 3 evectors as a right-handed coordinate system
+  // flip 3rd vector if needed
+
+  double cross[3];
+  MathExtra::cross3(ex_space,ey_space,cross);
+  if (MathExtra::dot3(cross,ez_space) < 0.0) MathExtra::negate3(ez_space);
+
+  // create initial quaternion
+
+  MathExtra::exyz_to_q(ex_space,ey_space,ez_space,bonus->quat);
+
+  // bonus->dvalue = the first 3*nsub elements are sub-particle displacements
+  // find the enclosing radius of the body from the maximum displacement
+
+  int i,m;
+  double delta[3], rsq, erad, rrad;
+  double erad2 = 0;
+  int j = 6;
+  int k = 0;
+  for (i = 0; i < nsub; i++) {
+    delta[0] = dfile[j];
+    delta[1] = dfile[j+1];
+    delta[2] = dfile[j+2];
+    MathExtra::transpose_matvec(ex_space,ey_space,ez_space,
+                                delta,&bonus->dvalue[k]);
+    rsq = delta[0] * delta[0] + delta[1] * delta[1] +
+      delta[2] * delta[2];
+    if (rsq > erad2) erad2 = rsq;
+    j += 3;
+    k += 3;
+  }
+
+  // .. the next 2*nsub elements are edge ends
+
+  if (nsub == 1) { // spheres
+    nedges = 0;
+    bonus->dvalue[k] = 0;
+    *(&bonus->dvalue[k]+1) = 0;
+    k += 2;
+
+    rrad = 0.5 * dfile[j];
+    bonus->dvalue[k] = rrad;
+    erad = rrad; // enclosing radius = rounded_radius
+
+    // the last element of bonus->dvalue is the rounded radius
+
+    k++;
+    bonus->dvalue[k] = rrad;
+
+    atom->radius[bonus->ilocal] = erad;
+
+  } else if (nsub == 2) { // rods
+    nedges = 1;
+    for (i = 0; i < nedges; i++) {
+      bonus->dvalue[k] = 0;
+      *(&bonus->dvalue[k]+1) = 1;
+      k += 2;
+    }    
+
+    erad = sqrt(erad2);
+    bonus->dvalue[k] = erad;
+
+    // the last element of bonus->dvalue is the rounded radius
+
+    rrad = 0.5 * dfile[j];
+    k++;
+    bonus->dvalue[k] = rrad;
+
+    atom->radius[bonus->ilocal] = erad + rrad;
+
+  } else { // polyhedra
+
+    // edges
+
+    for (i = 0; i < nedges; i++) {
+      bonus->dvalue[k] = dfile[j];
+      *(&bonus->dvalue[k]+1) = dfile[j+1];
+      k += 2;
+      j += 2;
+    }
+
+    // faces
+
+    for (i = 0; i < nfac; i++) {
+      for (m = 0; m < MAX_FACE_SIZE; m++)
+        *(&bonus->dvalue[k]+m) = dfile[j+m];
+      k += MAX_FACE_SIZE;
+      j += MAX_FACE_SIZE;
+    }
+
+    // the next to last element is the enclosing radius
+
+    erad = sqrt(erad2);
+    bonus->dvalue[k] = erad;
+
+    // the last element bonus-> dvalue is the rounded radius
+
+    rrad = 0.5 * dfile[j];
+    k++;
+    bonus->dvalue[k] = rrad;
+
+    atom->radius[bonus->ilocal] = erad + rrad;
+  }
+}
+
+/* ----------------------------------------------------------------------
+   return radius of body particle defined by ifile/dfile params
+   params are ordered as in data file
+   called by Molecule class which needs single body size
+------------------------------------------------------------------------- */
+
+double BodyRoundedPolyhedron::radius_body(int ninteger, int ndouble,
+				       int *ifile, double *dfile)
+{
+  int nsub = ifile[0];
+  int ned = ifile[1];
+  int nfac = ifile[2];
+  int nedges = ned; //nsub + nfac - 2;
+
+  int nentries;
+  if (nsub == 1 || nsub == 2) nentries = 6 + 3*nsub + 1;
+  else nentries = 6 + 3*nsub + 2*nedges + MAX_FACE_SIZE*nfac + 1;
+
+  if (nsub < 1)
+    error->one(FLERR,"Incorrect integer value in "
+               "Bodies section of data file");
+  if (ndouble != nentries)
+    error->one(FLERR,"Incorrect # of floating-point values in "
+               "Bodies section of data file");
+
+  // sub-particle coords are relative to body center at (0,0,0)
+  // offset = 6 for sub-particle coords
+
+  double onerad;
+  double maxrad = 0.0;
+  double delta[3];
+
+  int offset = 6;          
+  for (int i = 0; i < nsub; i++) {
+    delta[0] = dfile[offset];
+    delta[1] = dfile[offset+1];
+    delta[2] = dfile[offset+2];
+    offset += 3;
+    onerad = MathExtra::len3(delta);
+    maxrad = MAX(maxrad,onerad);
+  }
+
+  if (nsub > 2) offset += (2*nedges+MAX_FACE_SIZE*nfac);
+
+  // add in radius of rounded corners
+  
+  return maxrad + 0.5*dfile[offset];
+}
+
+/* ---------------------------------------------------------------------- */
+
+int BodyRoundedPolyhedron::noutcol()
+{
+  // the number of columns for the vertex coordinates
+
+  return 3;
+}
+
+/* ---------------------------------------------------------------------- */
+
+int BodyRoundedPolyhedron::noutrow(int ibonus)
+{
+  // only return the first nsub rows for the vertex coordinates
+
+  return avec->bonus[ibonus].ivalue[0];
+}
+
+/* ---------------------------------------------------------------------- */
+
+void BodyRoundedPolyhedron::output(int ibonus, int m, double *values)
+{
+  AtomVecBody::Bonus *bonus = &avec->bonus[ibonus];
+
+  double p[3][3];
+  MathExtra::quat_to_mat(bonus->quat,p);
+  MathExtra::matvec(p,&bonus->dvalue[3*m],values);
+
+  double *x = atom->x[bonus->ilocal];
+  values[0] += x[0];
+  values[1] += x[1];
+  values[2] += x[2];
+}
+
+/* ---------------------------------------------------------------------- */
+
+int BodyRoundedPolyhedron::image(int ibonus, double flag1, double flag2,
+                              int *&ivec, double **&darray)
+{
+  int j, nelements;
+  double p[3][3];
+  double *x, rrad;
+
+  AtomVecBody::Bonus *bonus = &avec->bonus[ibonus];
+  int nvertices = bonus->ivalue[0];
+
+  if (nvertices == 1) { // spheres
+
+    for (int i = 0; i < nvertices; i++) {
+      imflag[i] = SPHERE;
+      MathExtra::quat_to_mat(bonus->quat,p);
+      MathExtra::matvec(p,&bonus->dvalue[3*i],imdata[i]);
+
+      rrad = enclosing_radius(bonus);
+      x = atom->x[bonus->ilocal];
+      imdata[i][0] += x[0];
+      imdata[i][1] += x[1];
+      imdata[i][2] += x[2];
+      if (flag1 <= 0) imdata[i][3] = 2*rrad;
+      else imdata[i][3] = flag1;
+    }
+
+    nelements = nvertices;
+  } else {
+    int nfaces = bonus->ivalue[2];
+    int nedges = bonus->ivalue[1]; //nvertices + nfaces - 2;
+    if (nvertices == 2) nedges = 1; // special case: rods
+    double* edge_ends = &bonus->dvalue[3*nvertices];
+    int pt1, pt2;
+
+    for (int i = 0; i < nedges; i++) {
+      imflag[i] = LINE;
+
+      pt1 = static_cast<int>(edge_ends[2*i]);
+      pt2 = static_cast<int>(edge_ends[2*i+1]);
+
+      MathExtra::quat_to_mat(bonus->quat,p);
+      MathExtra::matvec(p,&bonus->dvalue[3*pt1],imdata[i]);
+      MathExtra::matvec(p,&bonus->dvalue[3*pt2],&imdata[i][3]);
+
+      rrad = rounded_radius(bonus);
+      x = atom->x[bonus->ilocal];
+      imdata[i][0] += x[0];
+      imdata[i][1] += x[1];
+      imdata[i][2] += x[2];
+      imdata[i][3] += x[0];
+      imdata[i][4] += x[1];
+      imdata[i][5] += x[2];
+
+      if (flag1 <= 0) imdata[i][6] = 2*rrad;
+      else imdata[i][6] = flag1;
+    }
+
+    nelements = nedges;
+  }
+
+  ivec = imflag;
+  darray = imdata;
+  return nelements;
+}
diff --git a/src/BODY/body_rounded_polyhedron.h b/src/BODY/body_rounded_polyhedron.h
new file mode 100644
index 0000000000..e5b15fd8f9
--- /dev/null
+++ b/src/BODY/body_rounded_polyhedron.h
@@ -0,0 +1,88 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef BODY_CLASS
+
+BodyStyle(rounded/polyhedron,BodyRoundedPolyhedron)
+
+#else
+
+#ifndef LMP_BODY_ROUNDED_POLYHEDRON_H
+#define LMP_BODY_ROUNDED_POLYHEDRON_H
+
+#include "body.h"
+#include "atom_vec_body.h"
+
+namespace LAMMPS_NS {
+
+class BodyRoundedPolyhedron : public Body {
+ public:
+  BodyRoundedPolyhedron(class LAMMPS *, int, char **);
+  ~BodyRoundedPolyhedron();
+  int nsub(struct AtomVecBody::Bonus *);
+  double *coords(struct AtomVecBody::Bonus *);
+  int nedges(struct AtomVecBody::Bonus *);
+  double *edges(struct AtomVecBody::Bonus *);
+  int nfaces(struct AtomVecBody::Bonus *);
+  double *faces(struct AtomVecBody::Bonus *);
+  double enclosing_radius(struct AtomVecBody::Bonus *);
+  double rounded_radius(struct AtomVecBody::Bonus *);
+
+  int pack_border_body(struct AtomVecBody::Bonus *, double *);
+  int unpack_border_body(struct AtomVecBody::Bonus *, double *);
+  void data_body(int, int, int, int *, double *);
+  double radius_body(int, int, int *, double *);
+
+  int noutrow(int);
+  int noutcol();
+  void output(int, int, double *);
+  int image(int, double, double, int *&, double **&);
+
+ private:
+  int *imflag;
+  double **imdata;
+};
+
+}
+
+#endif
+#endif
+
+/* ERROR/WARNING messages:
+
+E: Invalid body rounded/polyhedron command
+
+Arguments in atom-style command are not correct.
+
+E: Invalid format in Bodies section of data file
+
+The specified number of integer or floating point values does not
+appear.
+
+E: Incorrect # of integer values in Bodies section of data file
+
+See doc page for body style.
+
+E: Incorrect integer value in Bodies section of data file
+
+See doc page for body style.
+
+E: Incorrect # of floating-point values in Bodies section of data file
+
+See doc page for body style.
+
+E: Insufficient Jacobi rotations for body rounded/polyhedron
+
+Eigensolve for rigid body was not sufficiently accurate.
+
+*/
diff --git a/src/BODY/fix_wall_body_polygon.cpp b/src/BODY/fix_wall_body_polygon.cpp
new file mode 100644
index 0000000000..ea81ae26df
--- /dev/null
+++ b/src/BODY/fix_wall_body_polygon.cpp
@@ -0,0 +1,831 @@
+/* ----------------------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+   Contributing authors: Trung Dac Nguyen (ndactrung@gmail.com)
+------------------------------------------------------------------------- */
+
+#include <cmath>
+#include <cstdlib>
+#include <cstring>
+#include "fix_wall_body_polygon.h"
+#include "atom.h"
+#include "atom_vec_body.h"
+#include "body_rounded_polygon.h"
+#include "domain.h"
+#include "update.h"
+#include "force.h"
+#include "pair.h"
+#include "modify.h"
+#include "respa.h"
+#include "math_const.h"
+#include "math_extra.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+using namespace FixConst;
+using namespace MathConst;
+
+enum{XPLANE=0,YPLANE=1,ZCYLINDER};    // XYZ PLANE need to be 0,1,2
+enum{HOOKE,HOOKE_HISTORY};
+
+enum {INVALID=0,NONE=1,VERTEX=2};
+enum {FAR=0,XLO,XHI,YLO,YHI};
+
+//#define _POLYGON_DEBUG
+#define DELTA 10000
+#define EPSILON 1e-2
+#define BIG 1.0e20
+#define MAX_CONTACTS 4  // maximum number of contacts for 2D models
+#define EFF_CONTACTS 2  // effective contacts for 2D models
+
+/* ---------------------------------------------------------------------- */
+
+FixWallBodyPolygon::FixWallBodyPolygon(LAMMPS *lmp, int narg, char **arg) :
+  Fix(lmp, narg, 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");
+
+  restart_peratom = 1;
+  create_attribute = 1;
+
+  // wall/particle coefficients
+
+  kn = force->numeric(FLERR,arg[3]);
+
+  c_n = force->numeric(FLERR,arg[4]);
+  if (strcmp(arg[5],"NULL") == 0) c_t = 0.5 * c_n;
+  else c_t = force->numeric(FLERR,arg[5]);
+
+  if (kn < 0.0 || c_n < 0.0 || c_t < 0.0)
+    error->all(FLERR,"Illegal fix wall/body/polygon command");
+
+  // wallstyle args
+
+  int iarg = 6;
+  if (strcmp(arg[iarg],"xplane") == 0) {
+    if (narg < iarg+3) error->all(FLERR,"Illegal fix wall/body/polygon command");
+    wallstyle = XPLANE;
+    if (strcmp(arg[iarg+1],"NULL") == 0) lo = -BIG;
+    else lo = force->numeric(FLERR,arg[iarg+1]);
+    if (strcmp(arg[iarg+2],"NULL") == 0) hi = BIG;
+    else hi = force->numeric(FLERR,arg[iarg+2]);
+    iarg += 3;
+  } else if (strcmp(arg[iarg],"yplane") == 0) {
+    if (narg < iarg+3) error->all(FLERR,"Illegal fix wall/body/polygon command");
+    wallstyle = YPLANE;
+    if (strcmp(arg[iarg+1],"NULL") == 0) lo = -BIG;
+    else lo = force->numeric(FLERR,arg[iarg+1]);
+    if (strcmp(arg[iarg+2],"NULL") == 0) hi = BIG;
+    else hi = force->numeric(FLERR,arg[iarg+2]);
+    iarg += 3;
+  } else if (strcmp(arg[iarg],"zcylinder") == 0) {
+    if (narg < iarg+2) error->all(FLERR,"Illegal fix wall/body/polygon command");
+    wallstyle = ZCYLINDER;
+    lo = hi = 0.0;
+    cylradius = force->numeric(FLERR,arg[iarg+1]);
+    iarg += 2;
+  }
+
+  // check for trailing keyword/values
+
+  wiggle = 0;
+
+  while (iarg < narg) {
+    if (strcmp(arg[iarg],"wiggle") == 0) {
+      if (iarg+4 > narg) error->all(FLERR,"Illegal fix wall/body/polygon command");
+      if (strcmp(arg[iarg+1],"x") == 0) axis = 0;
+      else if (strcmp(arg[iarg+1],"y") == 0) axis = 1;
+      else if (strcmp(arg[iarg+1],"z") == 0) axis = 2;
+      else error->all(FLERR,"Illegal fix wall/body/polygon command");
+      amplitude = force->numeric(FLERR,arg[iarg+2]);
+      period = force->numeric(FLERR,arg[iarg+3]);
+      wiggle = 1;
+      iarg += 4;
+    } else error->all(FLERR,"Illegal fix wall/body/polygon command");
+  }
+
+  if (wallstyle == XPLANE && domain->xperiodic)
+    error->all(FLERR,"Cannot use wall in periodic dimension");
+  if (wallstyle == YPLANE && domain->yperiodic)
+    error->all(FLERR,"Cannot use wall in periodic dimension");
+  if (wallstyle == ZCYLINDER && (domain->xperiodic || domain->yperiodic))
+    error->all(FLERR,"Cannot use wall in periodic dimension");
+
+  if (wiggle && wallstyle == ZCYLINDER && axis != 2)
+    error->all(FLERR,"Invalid wiggle direction for fix wall/body/polygon");
+
+  // setup oscillations
+
+  if (wiggle) omega = 2.0*MY_PI / period;
+
+  time_origin = update->ntimestep;
+
+  dmax = nmax = 0;
+  discrete = NULL;
+  dnum = dfirst = NULL;
+
+  edmax = ednummax = 0;
+  edge = NULL;
+  ednum = edfirst = NULL;
+
+  enclosing_radius = NULL;
+  rounded_radius = NULL;
+}
+
+/* ---------------------------------------------------------------------- */
+
+FixWallBodyPolygon::~FixWallBodyPolygon()
+{
+  memory->destroy(discrete);
+  memory->destroy(dnum);
+  memory->destroy(dfirst);
+
+  memory->destroy(edge);
+  memory->destroy(ednum);
+  memory->destroy(edfirst);
+
+  memory->destroy(enclosing_radius);
+  memory->destroy(rounded_radius);
+}
+
+/* ---------------------------------------------------------------------- */
+
+int FixWallBodyPolygon::setmask()
+{
+  int mask = 0;
+  mask |= POST_FORCE;
+  return mask;
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixWallBodyPolygon::init()
+{
+  dt = update->dt;
+
+  avec = (AtomVecBody *) atom->style_match("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");
+  bptr = (BodyRoundedPolygon *) avec->bptr;
+
+  // set pairstyle from body/polygonular pair style
+
+  if (force->pair_match("body/rounded/polygon",1))
+    pairstyle = HOOKE;
+  else error->all(FLERR,"Fix wall/body/polygon is incompatible with Pair style");
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixWallBodyPolygon::setup(int vflag)
+{
+  if (strstr(update->integrate_style,"verlet"))
+    post_force(vflag);
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixWallBodyPolygon::post_force(int vflag)
+{
+  double vwall[3],dx,dy,dz,del1,del2,delxy,delr,rsq,eradi,rradi,wall_pos;
+  int i,ni,npi,ifirst,nei,iefirst,side;
+  double facc[3];
+
+  // set position of wall to initial settings and velocity to 0.0
+  // if wiggle, set wall position and velocity accordingly
+
+  double wlo = lo;
+  double whi = hi;
+  vwall[0] = vwall[1] = vwall[2] = 0.0;
+  if (wiggle) {
+    double arg = omega * (update->ntimestep - time_origin) * dt;
+    if (wallstyle == axis) {
+      wlo = lo + amplitude - amplitude*cos(arg);
+      whi = hi + amplitude - amplitude*cos(arg);
+    }
+    vwall[axis] = amplitude*omega*sin(arg);
+  }
+
+  // loop over all my atoms
+  // rsq = distance from wall
+  // dx,dy,dz = signed distance from wall
+  // for rotating cylinder, reset vwall based on particle position
+  // skip atom if not close enough to wall
+  //   if wall was set to NULL, it's skipped since lo/hi are infinity
+  // compute force and torque on atom if close enough to wall
+  //   via wall potential matched to pair potential
+
+  double **x = atom->x;
+  double **v = atom->v;
+  double **f = atom->f;
+  int *body = atom->body;
+  double *radius = atom->radius;
+  double **torque = atom->torque;
+  double **angmom = atom->angmom;
+  int *mask = atom->mask;
+  int nlocal = atom->nlocal;
+
+  // grow the per-atom lists if necessary and initialize
+
+  if (atom->nmax > nmax) {
+    memory->destroy(dnum);
+    memory->destroy(dfirst);
+    memory->destroy(ednum);
+    memory->destroy(edfirst);
+    memory->destroy(enclosing_radius);
+    memory->destroy(rounded_radius);
+    nmax = atom->nmax;
+    memory->create(dnum,nmax,"fix:dnum");
+    memory->create(dfirst,nmax,"fix:dfirst");
+    memory->create(ednum,nmax,"fix:ednum");
+    memory->create(edfirst,nmax,"fix:edfirst");
+    memory->create(enclosing_radius,nmax,"fix:enclosing_radius");
+    memory->create(rounded_radius,nmax,"fix:rounded_radius");
+  }
+
+  ndiscrete = nedge = 0;
+  for (i = 0; i < nlocal; i++) 
+    dnum[i] = ednum[i] = 0;
+
+  for (i = 0; i < nlocal; i++) {
+    if (mask[i] & groupbit) {
+
+      if (body[i] < 0) continue;
+
+      dx = dy = dz = 0.0;
+      side = FAR;
+      if (wallstyle == XPLANE) {
+        del1 = x[i][0] - wlo;
+        del2 = whi - x[i][0];
+        if (del1 < del2) {
+          dx = del1;
+          wall_pos = wlo;
+          side = XLO;
+        } else {
+          dx = -del2;
+          wall_pos = whi;
+          side = XHI;
+        }
+      } else if (wallstyle == YPLANE) {
+        del1 = x[i][1] - wlo;
+        del2 = whi - x[i][1];
+        if (del1 < del2) {
+          dy = del1;
+          wall_pos = wlo;
+          side = YLO;
+        } else {
+          dy = -del2;
+          wall_pos = whi;
+          side = YHI;
+        }
+      } else if (wallstyle == ZCYLINDER) {
+        delxy = sqrt(x[i][0]*x[i][0] + x[i][1]*x[i][1]);
+        delr = cylradius - delxy;
+        if (delr > eradi) dz = cylradius;
+        else {
+          dx = -delr/delxy * x[i][0];
+          dy = -delr/delxy * x[i][1];
+        }
+      }
+
+      rsq = dx*dx + dy*dy + dz*dz;
+      if (rsq > radius[i]*radius[i]) continue;
+
+      double r = sqrt(rsq);
+      double rsqinv = 1.0 / rsq;
+
+      if (dnum[i] == 0) body2space(i);
+      npi = dnum[i];
+      ifirst = dfirst[i];
+      nei = ednum[i];
+      iefirst = edfirst[i];
+      eradi = enclosing_radius[i];
+      rradi = rounded_radius[i];
+
+      // reset vertex and edge forces
+
+      for (ni = 0; ni < npi; ni++) {
+        discrete[ifirst+ni][3] = 0;
+        discrete[ifirst+ni][4] = 0;
+        discrete[ifirst+ni][5] = 0;
+      }
+
+      for (ni = 0; ni < nei; ni++) {
+        edge[iefirst+ni][2] = 0;
+        edge[iefirst+ni][3] = 0;
+        edge[iefirst+ni][4] = 0;
+      }
+
+      int interact, num_contacts, done;
+      double delta_a, delta_ua, j_a;
+      Contact contact_list[MAX_CONTACTS];
+
+      num_contacts = 0;
+      facc[0] = facc[1] = facc[2] = 0;
+      interact = vertex_against_wall(i, wall_pos, x, f, torque, side,
+                                     contact_list, num_contacts, facc);
+
+      if (num_contacts >= 2) {
+
+        // find the first two distinct contacts
+
+        done = 0;
+        for (int m = 0; m < num_contacts-1; m++) {
+          for (int n = m+1; n < num_contacts; n++) {
+            delta_a = contact_separation(contact_list[m], contact_list[n]);
+            if (delta_a > 0) {
+              delta_ua = 1.0;
+              j_a = delta_a / (EFF_CONTACTS * delta_ua);
+              if (j_a < 1.0) j_a = 1.0;
+
+              // scale the force at both contacts
+
+              contact_forces(contact_list[m], j_a, x, v, angmom, f, torque,
+                             vwall, facc);
+              contact_forces(contact_list[n], j_a, x, v, angmom, f, torque,
+                             vwall, facc);
+              done = 1;
+              break;
+            }
+          }
+          if (done == 1) break;
+        }
+
+      } else if (num_contacts == 1) {
+
+        // if there's only one contact, it should be handled here
+        // since forces/torques have not been accumulated from vertex2wall()
+
+        contact_forces(contact_list[0], 1.0, x, v, angmom, f, torque,
+                       vwall, facc);
+      }
+    } // group bit
+  }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixWallBodyPolygon::reset_dt()
+{
+  dt = update->dt;
+}
+
+/* ----------------------------------------------------------------------
+   convert N sub-particles in body I to space frame using current quaternion
+   store sub-particle space-frame displacements from COM in discrete list
+------------------------------------------------------------------------- */
+
+void FixWallBodyPolygon::body2space(int i)
+{
+  int ibonus = atom->body[i];
+  AtomVecBody::Bonus *bonus = &avec->bonus[ibonus];
+  int nsub = bptr->nsub(bonus);
+  double *coords = bptr->coords(bonus);
+  int body_num_edges = bptr->nedges(bonus);
+  double* vertices = bptr->edges(bonus);
+  double eradius = bptr->enclosing_radius(bonus);
+  double rradius = bptr->rounded_radius(bonus);
+
+  // get the number of sub-particles (vertices)
+  // and the index of the first vertex of my body in the list
+
+  dnum[i] = nsub;
+  dfirst[i] = ndiscrete;
+
+  // grow the vertex list if necessary
+  // the first 3 columns are for coords, the last 3 for forces
+
+  if (ndiscrete + nsub > dmax) {
+    dmax += DELTA;
+    memory->grow(discrete,dmax,6,"fix:discrete");
+  }
+
+  double p[3][3];
+  MathExtra::quat_to_mat(bonus->quat,p);
+
+  for (int m = 0; m < nsub; m++) {
+    MathExtra::matvec(p,&coords[3*m],discrete[ndiscrete]);
+    discrete[ndiscrete][3] = 0;
+    discrete[ndiscrete][4] = 0;
+    discrete[ndiscrete][5] = 0;
+    ndiscrete++;
+  }
+
+  // get the number of edges (vertices)
+  // and the index of the first edge of my body in the list
+
+  ednum[i] = body_num_edges;
+  edfirst[i] = nedge;
+
+  // grow the edge list if necessary
+  // the first 2 columns are for vertex indices within body,
+  // the last 3 for forces
+
+  if (nedge + body_num_edges > edmax) {
+    edmax += DELTA;
+    memory->grow(edge,edmax,5,"fix:edge");
+  }
+
+  for (int m = 0; m < body_num_edges; m++) {
+    edge[nedge][0] = static_cast<int>(vertices[2*m+0]);
+    edge[nedge][1] = static_cast<int>(vertices[2*m+1]);
+    edge[nedge][2] = 0;
+    edge[nedge][3] = 0;
+    edge[nedge][4] = 0;
+    nedge++;
+  }
+
+  enclosing_radius[i] = eradius;
+  rounded_radius[i] = rradius;
+}
+
+/* ----------------------------------------------------------------------
+   Determine the interaction mode between i's vertices against the wall
+
+   i = atom i (body i)
+   x      = atoms' coordinates
+   f      = atoms' forces
+   torque = atoms' torques
+   Return:
+     contact_list = list of contacts between i and the wall
+     num_contacts = number of contacts between i's vertices and the wall
+     interact = 0 no interaction with the wall
+                1 there's at least one vertex of i interacts
+                  with the wall
+---------------------------------------------------------------------- */
+
+int FixWallBodyPolygon::vertex_against_wall(int i, double wall_pos,
+                double** x, double** f, double** torque, int side,
+                Contact* contact_list, int &num_contacts, double* facc)
+{
+  int ni, npi, ifirst, interact;
+  double xpi[3], xpj[3], dist, eradi, rradi;
+  double fx, fy, fz, rx, ry, rz;
+  int nlocal = atom->nlocal;
+
+  npi = dnum[i];
+  ifirst = dfirst[i];
+  eradi = enclosing_radius[i];
+  rradi = rounded_radius[i];
+
+  interact = 0;
+
+  // loop through body i's vertices
+
+  for (ni = 0; ni < npi; ni++) {
+
+    // convert body-fixed coordinates to space-fixed, xi
+
+    xpi[0] = x[i][0] + discrete[ifirst+ni][0];
+    xpi[1] = x[i][1] + discrete[ifirst+ni][1];
+    xpi[2] = x[i][2] + discrete[ifirst+ni][2];
+
+    int mode, contact, p2vertex;
+    double d, R, hi[3], t, delx, dely, delz, fpair, shift;
+    double xj[3], rij;
+
+    // compute the distance from the vertex xpi to the wall
+
+    mode = compute_distance_to_wall(xpi, rradi, wall_pos, side,
+                                    d, hi, contact);
+
+    if (mode == INVALID || mode == NONE) continue;
+
+    if (mode == VERTEX) {
+
+      interact = 1;
+
+      // vertex i interacts with the wall
+
+      delx = xpi[0] - hi[0];
+      dely = xpi[1] - hi[1];
+      delz = xpi[2] - hi[2];
+
+      // R = surface separation = d shifted by the rounded radius
+      // R = d - p1.rounded_radius;
+      // note: the force is defined for R, not for d
+      // R >  0: no interaction
+      // R <= 0: deformation between vertex i and the wall
+
+      rij = sqrt(delx*delx + dely*dely + delz*delz);
+      R = rij - rradi;
+
+      // the normal frictional term -c_n * vn will be added later
+
+      if (R <= 0) {           // deformation occurs
+        fpair = -kn * R;
+      } else fpair = 0.0;
+
+      fx = delx*fpair/rij;
+      fy = dely*fpair/rij;
+      fz = delz*fpair/rij;
+
+      #ifdef _POLYGON_DEBUG
+      printf("  Interaction between vertex %d of %d and wall:", ni);
+      printf("    mode = %d; contact = %d; d = %f; rij = %f\n",
+             mode, contact, d, rij);
+      printf("    R = %f\n", R);
+      printf("    fpair = %f\n", fpair);
+      #endif
+
+      if (contact == 1) {
+
+        // vertex ni of body i contacts with edge nj of body j
+
+        contact_list[num_contacts].ibody = i;
+        contact_list[num_contacts].jbody = -1;
+        contact_list[num_contacts].vertex = ni;
+        contact_list[num_contacts].edge = -1;
+        contact_list[num_contacts].xv[0] = xpi[0];
+        contact_list[num_contacts].xv[1] = xpi[1];
+        contact_list[num_contacts].xv[2] = xpi[2];
+        contact_list[num_contacts].xe[0] = hi[0];
+        contact_list[num_contacts].xe[1] = hi[1];
+        contact_list[num_contacts].xe[2] = hi[2];
+        contact_list[num_contacts].separation = R;
+        num_contacts++;
+
+        // store forces to vertex ni to be rescaled later,
+        // if there are 2 contacts
+
+        discrete[ifirst+ni][3] = fx;
+        discrete[ifirst+ni][4] = fy;
+        discrete[ifirst+ni][5] = fz;
+
+        #ifdef _POLYGON_DEBUG
+        printf("  Stored forces at vertex and edge for accumulating later.\n");
+        #endif
+
+      } else { // no contact
+
+        // accumulate force and torque to the body directly
+
+        f[i][0] += fx;
+        f[i][1] += fy;
+        f[i][2] += fz;
+        sum_torque(x[i], xpi, fx, fy, fz, torque[i]);
+
+      } // end if contact
+
+    } // end if mode
+
+  } // end for looping through the vertices of body i
+
+  return interact;
+}
+
+/* -------------------------------------------------------------------------
+  Compute the distance between a vertex to the wall
+  another body
+  Input:
+    x0         = coordinate of the tested vertex
+    rradi      = rounded radius of the vertex
+    wall_pos   = position of the wall
+  Output:
+    d          = Distance from a point x0 to an wall
+    hi         = coordinates of the projection of x0 on the wall
+  contact      = 0 no contact between the queried vertex and the wall
+                 1 contact detected
+  return NONE    if there is no interaction
+         EDGE    if the tested vertex interacts with the wall
+------------------------------------------------------------------------- */
+
+int FixWallBodyPolygon::compute_distance_to_wall(double* x0, double rradi,
+          double wall_pos, int side, double &d, double hi[3], int &contact)
+{
+  int mode;
+  double delxy;
+
+  // h0 = position of the projection of x0 on the wall
+  if (wallstyle == XPLANE) {
+    hi[0] = wall_pos;
+    hi[1] = x0[1];
+    hi[2] = x0[2];
+  } else if (wallstyle == YPLANE) {
+    hi[0] = x0[0];
+    hi[1] = wall_pos;
+    hi[2] = x0[2];
+  } else if (wallstyle == ZCYLINDER) {
+    delxy = sqrt(x0[0]*x0[0] + x0[1]*x0[1]);
+    hi[0] = x0[0]*cylradius/delxy;
+    hi[1] = x0[1]*cylradius/delxy;
+    hi[2] = x0[2];
+  }
+
+  // distance from x0 to the wall = distance from x0 to hi
+
+  distance(hi, x0, d);
+
+  // determine the interaction mode
+
+  if (d < rradi) {
+    mode = VERTEX;
+    contact = 1;
+  } else {
+    if (side == XLO) {
+      if (x0[0] < wall_pos) mode = VERTEX;
+      else mode = NONE;
+    } else if (side == XHI) {
+      if (x0[0] > wall_pos) mode = VERTEX;
+      else mode = NONE;
+    } else if (side == YLO) {
+      if (x0[1] < wall_pos) mode = VERTEX;
+      else mode = NONE;
+    } else if (side == YHI) {
+      if (x0[1] > wall_pos) mode = VERTEX;
+      else mode = NONE;
+    }
+  }
+
+  if (mode == NONE) contact = 0;
+  else contact = 1;
+
+  return mode;
+}
+
+/* ----------------------------------------------------------------------
+  Compute the contact forces between two bodies
+  modify the force stored at the vertex and edge in contact by j_a
+  sum forces and torque to the corresponding bodies
+    fn = normal friction component
+    ft = tangential friction component (-c_t * vrt)
+------------------------------------------------------------------------- */
+
+void FixWallBodyPolygon::contact_forces(Contact& contact, double j_a,
+                      double** x, double** v, double** angmom, double** f,
+                      double** torque, double* vwall, double* facc)
+{
+  int ibody,ibonus,ifirst, jefirst, ni;
+  double fx,fy,fz,delx,dely,delz,rsq,rsqinv;
+  double vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3;
+  double fn[3],ft[3],vi[3];
+  double *quat, *inertia;
+  AtomVecBody::Bonus *bonus;
+
+  ibody = contact.ibody;
+  
+  // compute the velocity of the vertex in the space-fixed frame
+
+  ibonus = atom->body[ibody];
+  bonus = &avec->bonus[ibonus];
+  quat = bonus->quat;
+  inertia = bonus->inertia;
+  total_velocity(contact.xv, x[ibody], v[ibody], angmom[ibody],
+                 inertia, quat, vi);
+
+  // vector pointing from the vertex to the point on the wall
+
+  delx = contact.xv[0] - contact.xe[0];
+  dely = contact.xv[1] - contact.xe[1];
+  delz = contact.xv[2] - contact.xe[2];
+  rsq = delx*delx + dely*dely + delz*delz;
+  rsqinv = 1.0/rsq;
+
+  // relative translational velocity
+
+  vr1 = vi[0] - vwall[0];
+  vr2 = vi[1] - vwall[1];
+  vr3 = vi[2] - vwall[2];
+
+  // normal component
+
+  vnnr = vr1*delx + vr2*dely + vr3*delz;
+  vn1 = delx*vnnr * rsqinv;
+  vn2 = dely*vnnr * rsqinv;
+  vn3 = delz*vnnr * rsqinv;
+
+  // tangential component
+
+  vt1 = vr1 - vn1;
+  vt2 = vr2 - vn2;
+  vt3 = vr3 - vn3;
+
+  // normal friction term at contact
+
+  fn[0] = -c_n * vn1;
+  fn[1] = -c_n * vn2;
+  fn[2] = -c_n * vn3;
+
+  // tangential friction term at contact
+  // excluding the tangential deformation term for now
+
+  ft[0] = -c_t * vt1;
+  ft[1] = -c_t * vt2;
+  ft[2] = -c_t * vt3;
+
+  // only the cohesive force is scaled by j_a
+
+  ifirst = dfirst[ibody];
+  ni = contact.vertex;
+
+  fx = discrete[ifirst+ni][3] * j_a + fn[0] + ft[0];
+  fy = discrete[ifirst+ni][4] * j_a + fn[1] + ft[1];
+  fz = discrete[ifirst+ni][5] * j_a + fn[2] + ft[2];
+  f[ibody][0] += fx;
+  f[ibody][1] += fy;
+  f[ibody][2] += fz;
+  sum_torque(x[ibody], contact.xv, fx, fy, fz, torque[ibody]);
+
+  // accumulate forces to the vertex only
+
+  facc[0] += fx; facc[1] += fy; facc[2] += fz;
+
+  #ifdef _POLYGON_DEBUG
+  printf("From contact forces: vertex fx %f fy %f fz %f\n"
+         "      torque body %d: %f %f %f\n",
+         discrete[ifirst+ni][3], discrete[ifirst+ni][4], discrete[ifirst+ni][5],
+         atom->tag[ibody],torque[ibody][0],torque[ibody][1],torque[ibody][2]);
+  #endif
+}
+
+/* ----------------------------------------------------------------------
+  Determine the length of the contact segment, i.e. the separation between
+  2 contacts
+------------------------------------------------------------------------- */
+
+double FixWallBodyPolygon::contact_separation(const Contact& c1,
+                                              const Contact& c2)
+{
+  double x1 = c1.xv[0];
+  double y1 = c1.xv[1];
+  double x2 = c1.xe[0];
+  double y2 = c1.xe[1];
+  double x3 = c2.xv[0];
+  double y3 = c2.xv[1];
+
+  double delta_a = 0.0;
+  if (fabs(x2 - x1) > EPSILON) {
+    double A = (y2 - y1) / (x2 - x1);
+    delta_a = fabs(y1 - A * x1 - y3 + A * x3) / sqrt(1 + A * A);
+  } else {
+    delta_a = fabs(x1 - x3);
+  }
+
+  return delta_a;
+}
+
+/* ----------------------------------------------------------------------
+  Accumulate torque to body from the force f=(fx,fy,fz) acting at point x
+------------------------------------------------------------------------- */
+
+void FixWallBodyPolygon::sum_torque(double* xm, double *x, double fx,
+                                    double fy, double fz, double* torque)
+{
+  double rx = x[0] - xm[0];
+  double ry = x[1] - xm[1];
+  double rz = x[2] - xm[2];
+  double tx = ry * fz - rz * fy;
+  double ty = rz * fx - rx * fz;
+  double tz = rx * fy - ry * fx;
+  torque[0] += tx;
+  torque[1] += ty;
+  torque[2] += tz;
+}
+
+/* ----------------------------------------------------------------------
+  Calculate the total velocity of a point (vertex, a point on an edge):
+    vi = vcm + omega ^ (p - xcm)
+------------------------------------------------------------------------- */
+
+void FixWallBodyPolygon::total_velocity(double* p, double *xcm,
+                              double* vcm, double *angmom, double *inertia,
+                              double *quat, double* vi)
+{
+  double r[3],omega[3],ex_space[3],ey_space[3],ez_space[3];
+  r[0] = p[0] - xcm[0];
+  r[1] = p[1] - xcm[1];
+  r[2] = p[2] - xcm[2];
+  MathExtra::q_to_exyz(quat,ex_space,ey_space,ez_space);
+  MathExtra::angmom_to_omega(angmom,ex_space,ey_space,ez_space,
+                             inertia,omega);
+  vi[0] = omega[1]*r[2] - omega[2]*r[1] + vcm[0];
+  vi[1] = omega[2]*r[0] - omega[0]*r[2] + vcm[1];
+  vi[2] = omega[0]*r[1] - omega[1]*r[0] + vcm[2];
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixWallBodyPolygon::distance(const double* x2, const double* x1,
+                                  double& r) {
+  r = sqrt((x2[0] - x1[0]) * (x2[0] - x1[0])
+    + (x2[1] - x1[1]) * (x2[1] - x1[1])
+    + (x2[2] - x1[2]) * (x2[2] - x1[2]));
+}
+
diff --git a/src/BODY/fix_wall_body_polygon.h b/src/BODY/fix_wall_body_polygon.h
new file mode 100644
index 0000000000..3521c6c797
--- /dev/null
+++ b/src/BODY/fix_wall_body_polygon.h
@@ -0,0 +1,129 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef FIX_CLASS
+
+FixStyle(wall/body/polygon,FixWallBodyPolygon)
+
+#else
+
+#ifndef LMP_FIX_WALL_BODY_POLYGON_H
+#define LMP_FIX_WALL_BODY_POLYGON_H
+
+#include "fix.h"
+
+namespace LAMMPS_NS {
+
+class FixWallBodyPolygon : public Fix {
+ public:
+  FixWallBodyPolygon(class LAMMPS *, int, char **);
+  virtual ~FixWallBodyPolygon();
+  int setmask();
+  void init();
+  void setup(int);
+  virtual void post_force(int);
+  void reset_dt();
+
+  struct Contact {
+    int ibody, jbody; // body (i.e. atom) indices (not tags)
+    int vertex;       // vertex of the first polygon
+    int edge;         // edge of the second polygon
+    double xv[3];     // coordinates of the vertex
+    double xe[3];     // coordinates of the projection of the vertex on the edge
+    double separation;// separation at contact
+  };
+
+ protected:
+  int wallstyle,pairstyle,wiggle,axis;
+  double kn,c_n,c_t;
+  double lo,hi,cylradius;
+  double amplitude,period,omega;
+  double dt;
+  int time_origin;
+
+  class AtomVecBody *avec;
+  class BodyRoundedPolygon *bptr;
+
+  double **discrete;  // list of all sub-particles for all bodies
+  int ndiscrete;      // number of discretes in list
+  int dmax;           // allocated size of discrete list
+  int *dnum;          // number of discretes per line, 0 if uninit
+  int *dfirst;        // index of first discrete per each line
+  int nmax;           // allocated size of dnum,dfirst vectors
+
+  double **edge;      // list of all edge for all bodies
+  int nedge;          // number of edge in list
+  int edmax;          // allocated size of edge list
+  int *ednum;         // number of edges per line, 0 if uninit
+  int *edfirst;       // index of first edge per each line
+  int ednummax;       // allocated size of ednum,edfirst vectors
+
+  double *enclosing_radius; // enclosing radii for all bodies
+  double *rounded_radius;   // rounded radii for all bodies
+
+  void body2space(int);
+
+  int vertex_against_wall(int ibody, double wall_pos, double** x,
+                          double** f, double** torque, int side,
+                          Contact* contact_list, int &num_contacts,
+                          double* facc);
+
+  int compute_distance_to_wall(double* x0, double rradi, double wall_pos,
+                               int side, double &d, double hi[3], int &contact);
+  double contact_separation(const Contact& c1, const Contact& c2);
+  void contact_forces(Contact& contact, double j_a, double** x,
+                      double** v, double** angmom, double** f, double** torque,
+                      double* vwall, double* facc);
+  void sum_torque(double* xm, double *x, double fx,
+                  double fy, double fz, double* torque);
+  void total_velocity(double* p, double *xcm, double* vcm, double *angmom,
+                      double *inertia, double *quat, double* vi);
+  void distance(const double* x2, const double* x1, double& r);
+
+};
+
+}
+
+#endif
+#endif
+
+/* ERROR/WARNING messages:
+
+E: Illegal ... command
+
+Self-explanatory.  Check the input script syntax and compare to the
+documentation for the command.  You can use -echo screen as a
+command-line option when running LAMMPS to see the offending line.
+
+E: Fix wall/body/polygon requires atom style body rounded/polygon
+
+Self-explanatory.
+
+E: Cannot use wall in periodic dimension
+
+Self-explanatory.
+
+E: Cannot wiggle and shear fix wall/body/polygon
+
+Cannot specify both options at the same time.
+
+E: Invalid wiggle direction for fix wall/body/polygon
+
+Self-explanatory.
+
+E: Fix wall/body/polygon is incompatible with Pair style
+
+Must use a body pair style to define the parameters needed for
+this fix.
+
+*/
diff --git a/src/BODY/fix_wall_body_polyhedron.cpp b/src/BODY/fix_wall_body_polyhedron.cpp
new file mode 100644
index 0000000000..4806da9673
--- /dev/null
+++ b/src/BODY/fix_wall_body_polyhedron.cpp
@@ -0,0 +1,944 @@
+/* ----------------------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+   Contributing authors: Trung Dac Nguyen (ndactrung@gmail.com)
+------------------------------------------------------------------------- */
+
+#include <cmath>
+#include <cstdlib>
+#include <cstring>
+#include "fix_wall_body_polyhedron.h"
+#include "atom.h"
+#include "atom_vec_body.h"
+#include "body_rounded_polyhedron.h"
+#include "domain.h"
+#include "update.h"
+#include "force.h"
+#include "pair.h"
+#include "modify.h"
+#include "respa.h"
+#include "math_const.h"
+#include "math_extra.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+using namespace FixConst;
+using namespace MathConst;
+
+enum{XPLANE=0,YPLANE=1,ZPLANE};    // XYZ PLANE need to be 0,1,2
+enum{HOOKE,HOOKE_HISTORY};
+
+enum {INVALID=0,NONE=1,VERTEX=2};
+enum {FAR=0,XLO,XHI,YLO,YHI,ZLO,ZHI};
+
+//#define _POLYHEDRON_DEBUG
+#define DELTA 10000
+#define EPSILON 1e-2
+#define BIG 1.0e20
+#define MAX_CONTACTS 4  // maximum number of contacts for 2D models
+#define EFF_CONTACTS 2  // effective contacts for 2D models
+
+/* ---------------------------------------------------------------------- */
+
+FixWallBodyPolyhedron::FixWallBodyPolyhedron(LAMMPS *lmp, int narg, char **arg) :
+  Fix(lmp, narg, 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");
+
+  restart_peratom = 1;
+  create_attribute = 1;
+
+  // wall/particle coefficients
+
+  kn = force->numeric(FLERR,arg[3]);
+
+  c_n = force->numeric(FLERR,arg[4]);
+  if (strcmp(arg[5],"NULL") == 0) c_t = 0.5 * c_n;
+  else c_t = force->numeric(FLERR,arg[5]);
+
+  if (kn < 0.0 || c_n < 0.0 || c_t < 0.0)
+    error->all(FLERR,"Illegal fix wall/body/polyhedron command");
+
+  // wallstyle args
+
+  int iarg = 6;
+  if (strcmp(arg[iarg],"xplane") == 0) {
+    if (narg < iarg+3) error->all(FLERR,"Illegal fix wall/body/polyhedron command");
+    wallstyle = XPLANE;
+    if (strcmp(arg[iarg+1],"NULL") == 0) lo = -BIG;
+    else lo = force->numeric(FLERR,arg[iarg+1]);
+    if (strcmp(arg[iarg+2],"NULL") == 0) hi = BIG;
+    else hi = force->numeric(FLERR,arg[iarg+2]);
+    iarg += 3;
+  } else if (strcmp(arg[iarg],"yplane") == 0) {
+    if (narg < iarg+3) error->all(FLERR,"Illegal fix wall/body/polyhedron command");
+    wallstyle = YPLANE;
+    if (strcmp(arg[iarg+1],"NULL") == 0) lo = -BIG;
+    else lo = force->numeric(FLERR,arg[iarg+1]);
+    if (strcmp(arg[iarg+2],"NULL") == 0) hi = BIG;
+    else hi = force->numeric(FLERR,arg[iarg+2]);
+    iarg += 3;
+  } else if (strcmp(arg[iarg],"zplane") == 0) {
+    if (narg < iarg+3) error->all(FLERR,"Illegal fix wall/body/polyhedron command");
+    wallstyle = ZPLANE;
+    if (strcmp(arg[iarg+1],"NULL") == 0) lo = -BIG;
+    else lo = force->numeric(FLERR,arg[iarg+1]);
+    if (strcmp(arg[iarg+2],"NULL") == 0) hi = BIG;
+    else hi = force->numeric(FLERR,arg[iarg+2]);
+    iarg += 3;
+  } 
+
+  // check for trailing keyword/values
+
+  wiggle = 0;
+
+  while (iarg < narg) {
+    if (strcmp(arg[iarg],"wiggle") == 0) {
+      if (iarg+4 > narg) error->all(FLERR,"Illegal fix wall/body/polyhedron command");
+      if (strcmp(arg[iarg+1],"x") == 0) axis = 0;
+      else if (strcmp(arg[iarg+1],"y") == 0) axis = 1;
+      else if (strcmp(arg[iarg+1],"z") == 0) axis = 2;
+      else error->all(FLERR,"Illegal fix wall/body/polyhedron command");
+      amplitude = force->numeric(FLERR,arg[iarg+2]);
+      period = force->numeric(FLERR,arg[iarg+3]);
+      wiggle = 1;
+      iarg += 4;
+    } else error->all(FLERR,"Illegal fix wall/body/polyhedron command");
+  }
+
+  if (wallstyle == XPLANE && domain->xperiodic)
+    error->all(FLERR,"Cannot use wall in periodic dimension");
+  if (wallstyle == YPLANE && domain->yperiodic)
+    error->all(FLERR,"Cannot use wall in periodic dimension");
+  if (wallstyle == ZPLANE && domain->zperiodic)
+    error->all(FLERR,"Cannot use wall in periodic dimension");
+
+  // setup oscillations
+
+  if (wiggle) omega = 2.0*MY_PI / period;
+
+  time_origin = update->ntimestep;
+
+  dmax = nmax = 0;
+  discrete = NULL;
+  dnum = dfirst = NULL;
+
+  edmax = ednummax = 0;
+  edge = NULL;
+  ednum = edfirst = NULL;
+
+  facmax = facnummax = 0;
+  face = NULL;
+  facnum = facfirst = NULL;
+
+  enclosing_radius = NULL;
+  rounded_radius = NULL;
+}
+
+/* ---------------------------------------------------------------------- */
+
+FixWallBodyPolyhedron::~FixWallBodyPolyhedron()
+{
+  memory->destroy(discrete);
+  memory->destroy(dnum);
+  memory->destroy(dfirst);
+
+  memory->destroy(edge);
+  memory->destroy(ednum);
+  memory->destroy(edfirst);
+
+  memory->destroy(face);
+  memory->destroy(facnum);
+  memory->destroy(facfirst);
+
+  memory->destroy(enclosing_radius);
+  memory->destroy(rounded_radius);
+}
+
+/* ---------------------------------------------------------------------- */
+
+int FixWallBodyPolyhedron::setmask()
+{
+  int mask = 0;
+  mask |= POST_FORCE;
+  return mask;
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixWallBodyPolyhedron::init()
+{
+  dt = update->dt;
+
+  avec = (AtomVecBody *) atom->style_match("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");
+  bptr = (BodyRoundedPolyhedron *) avec->bptr;
+
+  // set pairstyle from body/polyhedronular pair style
+
+  if (force->pair_match("body/rounded/polyhedron",1))
+    pairstyle = HOOKE;
+  else error->all(FLERR,"Fix wall/body/polyhedron is incompatible with Pair style");
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixWallBodyPolyhedron::setup(int vflag)
+{
+  if (strstr(update->integrate_style,"verlet"))
+    post_force(vflag);
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixWallBodyPolyhedron::post_force(int vflag)
+{
+  double vwall[3],dx,dy,dz,del1,del2,delxy,delr,rsq,eradi,rradi,wall_pos;
+  int i,ni,npi,ifirst,nei,iefirst,nfi,iffirst,side;
+  double facc[3];
+
+  // set position of wall to initial settings and velocity to 0.0
+  // if wiggle, set wall position and velocity accordingly
+
+  double wlo = lo;
+  double whi = hi;
+  vwall[0] = vwall[1] = vwall[2] = 0.0;
+  if (wiggle) {
+    double arg = omega * (update->ntimestep - time_origin) * dt;
+    if (wallstyle == axis) {
+      wlo = lo + amplitude - amplitude*cos(arg);
+      whi = hi + amplitude - amplitude*cos(arg);
+    }
+    vwall[axis] = amplitude*omega*sin(arg);
+  }
+
+  // loop over all my atoms
+  // rsq = distance from wall
+  // dx,dy,dz = signed distance from wall
+  // for rotating cylinder, reset vwall based on particle position
+  // skip atom if not close enough to wall
+  //   if wall was set to NULL, it's skipped since lo/hi are infinity
+  // compute force and torque on atom if close enough to wall
+  //   via wall potential matched to pair potential
+
+  double **x = atom->x;
+  double **v = atom->v;
+  double **f = atom->f;
+  int *body = atom->body;
+  double *radius = atom->radius;
+  double **torque = atom->torque;
+  double **angmom = atom->angmom;
+  int *mask = atom->mask;
+  int nlocal = atom->nlocal;
+
+  // grow the per-atom lists if necessary and initialize
+
+  if (atom->nmax > nmax) {
+    memory->destroy(dnum);
+    memory->destroy(dfirst);
+    memory->destroy(ednum);
+    memory->destroy(edfirst);
+    memory->destroy(facnum);
+    memory->destroy(facfirst);
+    memory->destroy(enclosing_radius);
+    memory->destroy(rounded_radius);
+    nmax = atom->nmax;
+    memory->create(dnum,nmax,"fix:dnum");
+    memory->create(dfirst,nmax,"fix:dfirst");
+    memory->create(ednum,nmax,"fix:ednum");
+    memory->create(edfirst,nmax,"fix:edfirst");
+    memory->create(facnum,nmax,"fix:facnum");
+    memory->create(facfirst,nmax,"fix:facfirst");
+    memory->create(enclosing_radius,nmax,"fix:enclosing_radius");
+    memory->create(rounded_radius,nmax,"fix:rounded_radius");
+  }
+
+  ndiscrete = nedge = nface = 0;
+  for (i = 0; i < nlocal; i++) 
+    dnum[i] = ednum[i] = facnum[i] = 0;
+
+  for (i = 0; i < nlocal; i++) {
+    if (mask[i] & groupbit) {
+
+      if (body[i] < 0) continue;
+
+      dx = dy = dz = 0.0;
+      side = FAR;
+      if (wallstyle == XPLANE) {
+        del1 = x[i][0] - wlo;
+        del2 = whi - x[i][0];
+        if (del1 < del2) {
+          dx = del1;
+          wall_pos = wlo;
+          side = XLO;
+        } else {
+          dx = -del2;
+          wall_pos = whi;
+          side = XHI;
+        }
+      } else if (wallstyle == YPLANE) {
+        del1 = x[i][1] - wlo;
+        del2 = whi - x[i][1];
+        if (del1 < del2) {
+          dy = del1;
+          wall_pos = wlo;
+          side = YLO;
+        } else {
+          dy = -del2;
+          wall_pos = whi;
+          side = YHI;
+        }
+      } else if (wallstyle == ZPLANE) {
+        del1 = x[i][2] - wlo;
+        del2 = whi - x[i][2];
+        if (del1 < del2) {
+          dy = del1;
+          wall_pos = wlo;
+          side = ZLO;
+        } else {
+          dy = -del2;
+          wall_pos = whi;
+          side = ZHI;
+        }
+      } 
+
+      rsq = dx*dx + dy*dy + dz*dz;
+      if (rsq > radius[i]*radius[i]) continue;
+
+      double r = sqrt(rsq);
+      double rsqinv = 1.0 / rsq;
+
+      if (dnum[i] == 0) body2space(i);
+      npi = dnum[i];
+      ifirst = dfirst[i];
+      nei = ednum[i];
+      iefirst = edfirst[i];
+      nfi = facnum[i];
+      iffirst = facfirst[i];
+      eradi = enclosing_radius[i];
+      rradi = rounded_radius[i];
+
+      if (npi == 1) {
+        sphere_against_wall(i, wall_pos, side, vwall, x, v, f, angmom, torque);
+        continue;
+      }
+
+      // reset vertex and edge forces
+
+      for (ni = 0; ni < npi; ni++) {
+        discrete[ifirst+ni][3] = 0;
+        discrete[ifirst+ni][4] = 0;
+        discrete[ifirst+ni][5] = 0;
+        discrete[ifirst+ni][6] = 0;
+      }
+
+      for (ni = 0; ni < nei; ni++) {
+        edge[iefirst+ni][2] = 0;
+        edge[iefirst+ni][3] = 0;
+        edge[iefirst+ni][4] = 0;
+        edge[iefirst+ni][5] = 0;
+      }
+
+      int interact, num_contacts, done;
+      double delta_a, delta_ua, j_a;
+      Contact contact_list[MAX_CONTACTS];
+
+      num_contacts = 0;
+      facc[0] = facc[1] = facc[2] = 0;
+      interact = edge_against_wall(i, wall_pos, side, vwall, x, f, torque,
+                                   contact_list, num_contacts, facc);
+
+    } // group bit
+  }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixWallBodyPolyhedron::reset_dt()
+{
+  dt = update->dt;
+}
+
+/* ----------------------------------------------------------------------
+   convert N sub-particles in body I to space frame using current quaternion
+   store sub-particle space-frame displacements from COM in discrete list
+------------------------------------------------------------------------- */
+
+void FixWallBodyPolyhedron::body2space(int i)
+{
+  int ibonus = atom->body[i];
+  AtomVecBody::Bonus *bonus = &avec->bonus[ibonus];
+  int nsub = bptr->nsub(bonus);
+  double *coords = bptr->coords(bonus);
+  int body_num_edges = bptr->nedges(bonus);
+  double* edge_ends = bptr->edges(bonus);
+  int body_num_faces = bptr->nfaces(bonus);
+  double* face_pts = bptr->faces(bonus);
+  double eradius = bptr->enclosing_radius(bonus);
+  double rradius = bptr->rounded_radius(bonus);
+
+  // get the number of sub-particles (vertices)
+  // and the index of the first vertex of my body in the list
+
+  dnum[i] = nsub;
+  dfirst[i] = ndiscrete;
+
+  // grow the vertex list if necessary
+  // the first 3 columns are for coords, the last 3 for forces
+
+  if (ndiscrete + nsub > dmax) {
+    dmax += DELTA;
+    memory->grow(discrete,dmax,7,"fix:discrete");
+  }
+
+  double p[3][3];
+  MathExtra::quat_to_mat(bonus->quat,p);
+
+  for (int m = 0; m < nsub; m++) {
+    MathExtra::matvec(p,&coords[3*m],discrete[ndiscrete]);
+    discrete[ndiscrete][3] = 0;
+    discrete[ndiscrete][4] = 0;
+    discrete[ndiscrete][5] = 0;
+    discrete[ndiscrete][6] = 0;
+    ndiscrete++;
+  }
+
+  // get the number of edges (vertices)
+  // and the index of the first edge of my body in the list
+
+  ednum[i] = body_num_edges;
+  edfirst[i] = nedge;
+
+  // grow the edge list if necessary
+  // the first 2 columns are for vertex indices within body,
+  // the last 3 for forces
+
+  if (nedge + body_num_edges > edmax) {
+    edmax += DELTA;
+    memory->grow(edge,edmax,6,"fix:edge");
+  }
+
+  for (int m = 0; m < body_num_edges; m++) {
+    edge[nedge][0] = static_cast<int>(edge_ends[2*m+0]);
+    edge[nedge][1] = static_cast<int>(edge_ends[2*m+1]);
+    edge[nedge][2] = 0;
+    edge[nedge][3] = 0;
+    edge[nedge][4] = 0;
+    edge[nedge][5] = 0;
+    nedge++;
+  }
+
+  // get the number of faces and the index of the first face
+
+  facnum[i] = body_num_faces;
+  facfirst[i] = nface;
+
+  // grow the face list if necessary
+  // the first 3 columns are for vertex indices within body, the last 3 for forces
+
+  if (nface + body_num_faces > facmax) {
+    facmax += DELTA;
+    memory->grow(face,facmax,6,"pair:face");
+  }
+
+  for (int m = 0; m < body_num_faces; m++) {
+    face[nface][0] = static_cast<int>(face_pts[3*m+0]);
+    face[nface][1] = static_cast<int>(face_pts[3*m+1]);
+    face[nface][2] = static_cast<int>(face_pts[3*m+2]);
+    face[nface][3] = 0;
+    face[nface][4] = 0;
+    face[nface][5] = 0;
+    nface++;
+  }
+
+  enclosing_radius[i] = eradius;
+  rounded_radius[i] = rradius;
+}
+
+/* ----------------------------------------------------------------------
+   Determine the interaction mode between a sphere against the wall
+
+   i = atom i (body i)
+   x      = atoms' coordinates
+   f      = atoms' forces
+   torque = atoms' torques
+---------------------------------------------------------------------- */
+
+int FixWallBodyPolyhedron::sphere_against_wall(int i, double wall_pos,
+     int side, double* vwall, double** x, double** v, double** f,
+     double** angmom, double** torque)
+{
+  int mode;
+  double rradi,hi[3],d,delx,dely,delz,R,fpair,fx,fy,fz;
+
+  rradi = rounded_radius[i];
+  mode = NONE;
+
+  if (wallstyle == XPLANE) {
+    hi[0] = wall_pos;
+    hi[1] = x[i][1];
+    hi[2] = x[i][2];
+  } else if (wallstyle == YPLANE) {
+    hi[0] = x[i][0];
+    hi[1] = wall_pos;
+    hi[2] = x[i][2];
+  } else if (wallstyle == ZPLANE) {
+    hi[0] = x[i][0];
+    hi[1] = x[i][1];
+    hi[2] = wall_pos;
+  } 
+
+  distance(hi, x[i], d);
+
+  if (d <= rradi) {
+    delx = x[i][0] - hi[0];
+    dely = x[i][1] - hi[1];
+    delz = x[i][2] - hi[2];
+    R = d - rradi;
+
+    fpair = -kn * R;
+
+    fx = delx*fpair/d;
+    fy = dely*fpair/d;
+    fz = delz*fpair/d;
+
+    contact_forces(i, 1.0, x[i], hi, delx, dely, delz,
+                   fx, fy, fz, x, v, angmom, f, torque, vwall);
+    mode = VERTEX;
+  }
+
+  return mode;
+}
+
+/* ----------------------------------------------------------------------
+   Determine the interaction mode between i's vertices against the wall
+
+   i = atom i (body i)
+   x      = atoms' coordinates
+   f      = atoms' forces
+   torque = atoms' torques
+   Output:
+     contact_list = list of contacts between i and the wall
+     num_contacts = number of contacts between i's vertices and the wall
+   Return: 
+     number of contacts of the edge to the wall (0, 1 or 2)
+---------------------------------------------------------------------- */
+
+int FixWallBodyPolyhedron::edge_against_wall(int i, double wall_pos,
+     int side, double* vwall, double** x, double** f, double** torque,
+     Contact* contact_list, int &num_contacts, double* facc)
+{
+  int ni, nei, mode, contact;
+  double rradi;
+  int nlocal = atom->nlocal;
+
+  nei = ednum[i];
+  rradi = rounded_radius[i];
+
+  contact = 0;
+
+  // loop through body i's edges
+
+  for (ni = 0; ni < nei; ni++)
+    mode = compute_distance_to_wall(i, ni, x[i], rradi, wall_pos, side, vwall,
+                                    contact);
+
+  return contact;
+}
+
+/* -------------------------------------------------------------------------
+  Compute the distance between a vertex to the wall
+  another body
+  Input:
+    x0         = coordinate of the tested vertex
+    rradi      = rounded radius of the vertex
+    wall_pos   = position of the wall
+  Output:
+    d          = Distance from a point x0 to an wall
+    hi         = coordinates of the projection of x0 on the wall
+  contact      = 0 no contact between the queried vertex and the wall
+                 1 contact detected
+  return NONE    if there is no interaction
+         VERTEX  if the tested vertex interacts with the wall
+------------------------------------------------------------------------- */
+
+int FixWallBodyPolyhedron::compute_distance_to_wall(int ibody, int edge_index,
+                        double *xmi, double rounded_radius_i, double wall_pos, 
+                        int side, double* vwall, int &contact)
+{
+  int mode,ifirst,iefirst,npi1,npi2;
+  double d1,d2,xpi1[3],xpi2[3],hi[3];
+  double fx,fy,fz,fpair,delx,dely,delz,R;
+
+  double** x = atom->x;
+  double** v = atom->v;
+  double** f = atom->f;
+  double** torque = atom->torque;
+  double** angmom = atom->angmom;
+
+  // two ends of the edge from body i
+
+  ifirst = dfirst[ibody];
+  iefirst = edfirst[ibody];
+  npi1 = static_cast<int>(edge[iefirst+edge_index][0]);
+  npi2 = static_cast<int>(edge[iefirst+edge_index][1]);
+
+  xpi1[0] = xmi[0] + discrete[ifirst+npi1][0];
+  xpi1[1] = xmi[1] + discrete[ifirst+npi1][1];
+  xpi1[2] = xmi[2] + discrete[ifirst+npi1][2];
+
+  xpi2[0] = xmi[0] + discrete[ifirst+npi2][0];
+  xpi2[1] = xmi[1] + discrete[ifirst+npi2][1];
+  xpi2[2] = xmi[2] + discrete[ifirst+npi2][2];
+
+  // determine the intersection of the edge to the wall
+
+  mode = NONE;
+  double j_a = 1.0;
+
+  if (wallstyle == XPLANE) {
+    hi[0] = wall_pos;
+    hi[1] = xpi1[1];
+    hi[2] = xpi1[2];
+  } else if (wallstyle == YPLANE) {
+    hi[0] = xpi1[0];
+    hi[1] = wall_pos;
+    hi[2] = xpi1[2];
+  } else if (wallstyle == ZPLANE) {
+    hi[0] = xpi1[0];
+    hi[1] = xpi1[1];
+    hi[2] = wall_pos;
+  } 
+
+  distance(hi, xpi1, d1);
+
+  if (d1 <= rounded_radius_i && static_cast<int>(discrete[ifirst+npi1][6]) == 0) {
+    delx = xpi1[0] - hi[0];
+    dely = xpi1[1] - hi[1];
+    delz = xpi1[2] - hi[2];
+    R = d1 - rounded_radius_i;
+
+    fpair = -kn * R;
+
+    fx = delx*fpair/d1;
+    fy = dely*fpair/d1;
+    fz = delz*fpair/d1;
+
+    contact_forces(ibody, j_a, xpi1, hi, delx, dely, delz,
+                   fx, fy, fz, x, v, angmom, f, torque, vwall);
+    discrete[ifirst+npi1][6] = 1;
+    contact++;
+    mode = VERTEX;
+  }
+
+  if (wallstyle == XPLANE) {
+    hi[0] = wall_pos;
+    hi[1] = xpi2[1];
+    hi[2] = xpi2[2];
+  } else if (wallstyle == YPLANE) {
+    hi[0] = xpi2[0];
+    hi[1] = wall_pos;
+    hi[2] = xpi2[2];
+  } else if (wallstyle == ZPLANE) {
+    hi[0] = xpi2[0];
+    hi[1] = xpi2[1];
+    hi[2] = wall_pos;
+  } 
+
+  distance(hi, xpi2, d2);
+
+  if (d2 <= rounded_radius_i && static_cast<int>(discrete[ifirst+npi2][6]) == 0) {
+    delx = xpi2[0] - hi[0];
+    dely = xpi2[1] - hi[1];
+    delz = xpi2[2] - hi[2];
+    R = d2 - rounded_radius_i;
+
+    fpair = -kn * R;
+
+    fx = delx*fpair/d2;
+    fy = dely*fpair/d2;
+    fz = delz*fpair/d2;
+
+    contact_forces(ibody, j_a, xpi2, hi, delx, dely, delz,
+                   fx, fy, fz, x, v, angmom, f, torque, vwall);
+    discrete[ifirst+npi2][6] = 1;
+    contact++;
+    mode = VERTEX;
+  }
+
+  return mode;
+}
+
+/* ----------------------------------------------------------------------
+  Compute contact forces between two bodies
+  modify the force stored at the vertex and edge in contact by j_a
+  sum forces and torque to the corresponding bodies
+  fn = normal friction component
+  ft = tangential friction component (-c_t * v_t)
+------------------------------------------------------------------------- */
+
+void FixWallBodyPolyhedron::contact_forces(int ibody,
+  double j_a, double *xi, double *xj, double delx, double dely, double delz,
+  double fx, double fy, double fz, double** x, double** v, double** angmom,
+  double** f, double** torque, double* vwall)
+{
+  int ibonus,jbonus;
+  double fxt,fyt,fzt,rsq,rsqinv;
+  double vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3;
+  double fn[3],ft[3],vi[3],vj[3];
+  double *quat, *inertia;
+  AtomVecBody::Bonus *bonus;
+
+  // compute the velocity of the vertex in the space-fixed frame
+
+  ibonus = atom->body[ibody];
+  bonus = &avec->bonus[ibonus];
+  quat = bonus->quat;
+  inertia = bonus->inertia;
+  total_velocity(xi, x[ibody], v[ibody], angmom[ibody],
+                 inertia, quat, vi);
+
+  // vector pointing from the contact point on ibody to the wall
+
+  rsq = delx*delx + dely*dely + delz*delz;
+  rsqinv = 1.0/rsq;
+
+  // relative translational velocity
+
+  vr1 = vi[0] - vwall[0];
+  vr2 = vi[1] - vwall[1];
+  vr3 = vi[2] - vwall[2];
+
+  // normal component
+
+  vnnr = vr1*delx + vr2*dely + vr3*delz;
+  vn1 = delx*vnnr * rsqinv;
+  vn2 = dely*vnnr * rsqinv;
+  vn3 = delz*vnnr * rsqinv;
+
+  // tangential component
+
+  vt1 = vr1 - vn1;
+  vt2 = vr2 - vn2;
+  vt3 = vr3 - vn3;
+
+  // normal friction term at contact
+
+  fn[0] = -c_n * vn1;
+  fn[1] = -c_n * vn2;
+  fn[2] = -c_n * vn3;
+
+  // tangential friction term at contact
+  // excluding the tangential deformation term for now
+
+  ft[0] = -c_t * vt1;
+  ft[1] = -c_t * vt2;
+  ft[2] = -c_t * vt3;
+
+  fxt = fx; fyt = fy; fzt = fz;
+  fx = fxt * j_a + fn[0] + ft[0];
+  fy = fyt * j_a + fn[1] + ft[1];
+  fz = fzt * j_a + fn[2] + ft[2];
+
+  f[ibody][0] += fx;
+  f[ibody][1] += fy;
+  f[ibody][2] += fz;
+  sum_torque(x[ibody], xi, fx, fy, fz, torque[ibody]);
+
+  #ifdef _POLYHEDRON_DEBUG
+  printf("From contact forces: vertex fx %f fy %f fz %f\n"
+         "      torque body %d: %f %f %f\n"
+         "      torque body %d: %f %f %f\n",
+         fxt, fyt, fzt,
+         atom->tag[ibody],torque[ibody][0],torque[ibody][1],torque[ibody][2],
+         atom->tag[jbody],torque[jbody][0],torque[jbody][1],torque[jbody][2]);
+  #endif
+}
+
+/* ----------------------------------------------------------------------
+  Compute the contact forces between two bodies
+  modify the force stored at the vertex and edge in contact by j_a
+  sum forces and torque to the corresponding bodies
+    fn = normal friction component
+    ft = tangential friction component (-c_t * vrt)
+------------------------------------------------------------------------- */
+
+void FixWallBodyPolyhedron::contact_forces(Contact& contact, double j_a,
+                      double** x, double** v, double** angmom, double** f,
+                      double** torque, double* vwall, double* facc)
+{
+  int ibody,ibonus,ifirst, jefirst, ni;
+  double fx,fy,fz,delx,dely,delz,rsq,rsqinv;
+  double vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3;
+  double fn[3],ft[3],vi[3];
+  double *quat, *inertia;
+  AtomVecBody::Bonus *bonus;
+
+  ibody = contact.ibody;
+  
+  // compute the velocity of the vertex in the space-fixed frame
+
+  ibonus = atom->body[ibody];
+  bonus = &avec->bonus[ibonus];
+  quat = bonus->quat;
+  inertia = bonus->inertia;
+  total_velocity(contact.xv, x[ibody], v[ibody], angmom[ibody],
+                 inertia, quat, vi);
+
+  // vector pointing from the vertex to the point on the wall
+
+  delx = contact.xv[0] - contact.xe[0];
+  dely = contact.xv[1] - contact.xe[1];
+  delz = contact.xv[2] - contact.xe[2];
+  rsq = delx*delx + dely*dely + delz*delz;
+  rsqinv = 1.0/rsq;
+
+  // relative translational velocity
+
+  vr1 = vi[0] - vwall[0];
+  vr2 = vi[1] - vwall[1];
+  vr3 = vi[2] - vwall[2];
+
+  // normal component
+
+  vnnr = vr1*delx + vr2*dely + vr3*delz;
+  vn1 = delx*vnnr * rsqinv;
+  vn2 = dely*vnnr * rsqinv;
+  vn3 = delz*vnnr * rsqinv;
+
+  // tangential component
+
+  vt1 = vr1 - vn1;
+  vt2 = vr2 - vn2;
+  vt3 = vr3 - vn3;
+
+  // normal friction term at contact
+
+  fn[0] = -c_n * vn1;
+  fn[1] = -c_n * vn2;
+  fn[2] = -c_n * vn3;
+
+  // tangential friction term at contact
+  // excluding the tangential deformation term for now
+
+  ft[0] = -c_t * vt1;
+  ft[1] = -c_t * vt2;
+  ft[2] = -c_t * vt3;
+
+  // only the cohesive force is scaled by j_a
+
+  ifirst = dfirst[ibody];
+  ni = contact.vertex;
+
+  fx = discrete[ifirst+ni][3] * j_a + fn[0] + ft[0];
+  fy = discrete[ifirst+ni][4] * j_a + fn[1] + ft[1];
+  fz = discrete[ifirst+ni][5] * j_a + fn[2] + ft[2];
+  f[ibody][0] += fx;
+  f[ibody][1] += fy;
+  f[ibody][2] += fz;
+  sum_torque(x[ibody], contact.xv, fx, fy, fz, torque[ibody]);
+
+  // accumulate forces to the vertex only
+
+  facc[0] += fx; facc[1] += fy; facc[2] += fz;
+
+  #ifdef _POLYHEDRON_DEBUG
+  printf("From contact forces: vertex fx %f fy %f fz %f\n"
+         "      torque body %d: %f %f %f\n",
+         discrete[ifirst+ni][3], discrete[ifirst+ni][4], discrete[ifirst+ni][5],
+         atom->tag[ibody],torque[ibody][0],torque[ibody][1],torque[ibody][2]);
+  #endif
+}
+
+/* ----------------------------------------------------------------------
+  Determine the length of the contact segment, i.e. the separation between
+  2 contacts
+------------------------------------------------------------------------- */
+
+double FixWallBodyPolyhedron::contact_separation(const Contact& c1,
+                                              const Contact& c2)
+{
+  double x1 = c1.xv[0];
+  double y1 = c1.xv[1];
+  double x2 = c1.xe[0];
+  double y2 = c1.xe[1];
+  double x3 = c2.xv[0];
+  double y3 = c2.xv[1];
+
+  double delta_a = 0.0;
+  if (fabs(x2 - x1) > EPSILON) {
+    double A = (y2 - y1) / (x2 - x1);
+    delta_a = fabs(y1 - A * x1 - y3 + A * x3) / sqrt(1 + A * A);
+  } else {
+    delta_a = fabs(x1 - x3);
+  }
+
+  return delta_a;
+}
+
+/* ----------------------------------------------------------------------
+  Accumulate torque to body from the force f=(fx,fy,fz) acting at point x
+------------------------------------------------------------------------- */
+
+void FixWallBodyPolyhedron::sum_torque(double* xm, double *x, double fx,
+                                    double fy, double fz, double* torque)
+{
+  double rx = x[0] - xm[0];
+  double ry = x[1] - xm[1];
+  double rz = x[2] - xm[2];
+  double tx = ry * fz - rz * fy;
+  double ty = rz * fx - rx * fz;
+  double tz = rx * fy - ry * fx;
+  torque[0] += tx;
+  torque[1] += ty;
+  torque[2] += tz;
+}
+
+/* ----------------------------------------------------------------------
+  Calculate the total velocity of a point (vertex, a point on an edge):
+    vi = vcm + omega ^ (p - xcm)
+------------------------------------------------------------------------- */
+
+void FixWallBodyPolyhedron::total_velocity(double* p, double *xcm,
+                              double* vcm, double *angmom, double *inertia,
+                              double *quat, double* vi)
+{
+  double r[3],omega[3],ex_space[3],ey_space[3],ez_space[3];
+  r[0] = p[0] - xcm[0];
+  r[1] = p[1] - xcm[1];
+  r[2] = p[2] - xcm[2];
+  MathExtra::q_to_exyz(quat,ex_space,ey_space,ez_space);
+  MathExtra::angmom_to_omega(angmom,ex_space,ey_space,ez_space,
+                             inertia,omega);
+  vi[0] = omega[1]*r[2] - omega[2]*r[1] + vcm[0];
+  vi[1] = omega[2]*r[0] - omega[0]*r[2] + vcm[1];
+  vi[2] = omega[0]*r[1] - omega[1]*r[0] + vcm[2];
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixWallBodyPolyhedron::distance(const double* x2, const double* x1,
+                                  double& r) {
+  r = sqrt((x2[0] - x1[0]) * (x2[0] - x1[0])
+    + (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.h b/src/BODY/fix_wall_body_polyhedron.h
new file mode 100644
index 0000000000..ff7b7ca7cf
--- /dev/null
+++ b/src/BODY/fix_wall_body_polyhedron.h
@@ -0,0 +1,143 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef FIX_CLASS
+
+FixStyle(wall/body/polyhedron,FixWallBodyPolyhedron)
+
+#else
+
+#ifndef LMP_FIX_WALL_BODY_POLYHERON_H
+#define LMP_FIX_WALL_BODY_POLYHERON_H
+
+#include "fix.h"
+
+namespace LAMMPS_NS {
+
+class FixWallBodyPolyhedron : public Fix {
+ public:
+  FixWallBodyPolyhedron(class LAMMPS *, int, char **);
+  virtual ~FixWallBodyPolyhedron();
+  int setmask();
+  void init();
+  void setup(int);
+  virtual void post_force(int);
+  void reset_dt();
+
+  struct Contact {
+    int ibody, jbody; // body (i.e. atom) indices (not tags)
+    int vertex;       // vertex of the first polygon
+    int edge;         // edge of the second polygon
+    double xv[3];     // coordinates of the vertex
+    double xe[3];     // coordinates of the projection of the vertex on the edge
+    double separation;// separation at contact
+  };
+
+ protected:
+  int wallstyle,pairstyle,wiggle,axis;
+  double kn,c_n,c_t;
+  double lo,hi,cylradius;
+  double amplitude,period,omega;
+  double dt;
+  int time_origin;
+
+  class AtomVecBody *avec;
+  class BodyRoundedPolyhedron *bptr;
+
+  double **discrete;  // list of all sub-particles for all bodies
+  int ndiscrete;      // number of discretes in list
+  int dmax;           // allocated size of discrete list
+  int *dnum;          // number of discretes per line, 0 if uninit
+  int *dfirst;        // index of first discrete per each line
+  int nmax;           // allocated size of dnum,dfirst vectors
+
+  double **edge;      // list of all edge for all bodies
+  int nedge;          // number of edge in list
+  int edmax;          // allocated size of edge list
+  int *ednum;         // number of edges per line, 0 if uninit
+  int *edfirst;       // index of first edge per each line
+  int ednummax;       // allocated size of ednum,edfirst vectors
+
+  double **face;      // list of all edge for all bodies
+  int nface;          // number of faces in list
+  int facmax;         // allocated size of face list
+  int *facnum;        // number of faces per line, 0 if uninit
+  int *facfirst;      // index of first face per each line
+  int facnummax;      // allocated size of facnum,facfirst vectors
+
+  double *enclosing_radius; // enclosing radii for all bodies
+  double *rounded_radius;   // rounded radii for all bodies
+
+  void body2space(int);
+
+  int edge_against_wall(int ibody, double wall_pos, int side, double* vwall,
+     double** x, double** f, double** torque, Contact* contact_list,
+     int &num_contacts, double* facc);
+  int sphere_against_wall(int i, double wall_pos, int side, double* vwall,
+     double** x, double** v, double** f, double** angmom, double** torque);
+
+  int compute_distance_to_wall(int ibody, int edge_index, double *xmi,
+                               double rounded_radius_i, double wall_pos, int side,
+                               double* vwall, int &contact);
+  double contact_separation(const Contact& c1, const Contact& c2);
+  void contact_forces(int ibody, double j_a, double *xi, double *xj, 
+                      double delx, double dely, double delz,
+                      double fx, double fy, double fz, double** x, double** v,
+                      double** angmom, double** f, double** torque, double* vwall);
+
+  void contact_forces(Contact& contact, double j_a, double** x,
+                      double** v, double** angmom, double** f, double** torque,
+                      double* vwall, double* facc);
+  void sum_torque(double* xm, double *x, double fx,
+                  double fy, double fz, double* torque);
+  void total_velocity(double* p, double *xcm, double* vcm, double *angmom,
+                      double *inertia, double *quat, double* vi);
+  void distance(const double* x2, const double* x1, double& r);
+
+};
+
+}
+
+#endif
+#endif
+
+/* ERROR/WARNING messages:
+
+E: Illegal ... command
+
+Self-explanatory.  Check the input script syntax and compare to the
+documentation for the command.  You can use -echo screen as a
+command-line option when running LAMMPS to see the offending line.
+
+E: Fix wall/body/polyhedron requires atom style body rounded/polyhedron
+
+Self-explanatory.
+
+E: Cannot use wall in periodic dimension
+
+Self-explanatory.
+
+E: Cannot wiggle and shear fix wall/body/polygon
+
+Cannot specify both options at the same time.
+
+E: Invalid wiggle direction for fix wall/body/polygon
+
+Self-explanatory.
+
+E: Fix wall/body/polygon is incompatible with Pair style
+
+Must use a body pair style to define the parameters needed for
+this fix.
+
+*/
diff --git a/src/BODY/pair_body_rounded_polygon.cpp b/src/BODY/pair_body_rounded_polygon.cpp
new file mode 100644
index 0000000000..72591d2bd0
--- /dev/null
+++ b/src/BODY/pair_body_rounded_polygon.cpp
@@ -0,0 +1,1359 @@
+/* ----------------------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+   Contributing author: Trung Dac Nguyen (ndactrung@gmail.com)
+   Ref: Fraige, Langston, Matchett and Dodds, Particuology 2008, 6:455-466
+   Note: The current implementation has not taken into account
+         the contact history for friction forces.
+------------------------------------------------------------------------- */
+
+#include <cmath>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include "pair_body_rounded_polygon.h"
+#include "math_extra.h"
+#include "atom.h"
+#include "atom_vec_body.h"
+#include "body_rounded_polygon.h"
+#include "comm.h"
+#include "force.h"
+#include "fix.h"
+#include "modify.h"
+#include "neighbor.h"
+#include "neigh_list.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+
+//#define _POLYGON_DEBUG
+#define DELTA 10000
+#define EPSILON 1e-3
+#define MAX_CONTACTS 4  // maximum number of contacts for 2D models
+#define EFF_CONTACTS 2  // effective contacts for 2D models
+
+enum {INVALID=0,NONE=1,VERTEXI=2,VERTEXJ=3,EDGE=4};
+
+/* ---------------------------------------------------------------------- */
+
+PairBodyRoundedPolygon::PairBodyRoundedPolygon(LAMMPS *lmp) : Pair(lmp)
+{
+  dmax = nmax = 0;
+  discrete = NULL;
+  dnum = dfirst = NULL;
+
+  edmax = ednummax = 0;
+  edge = NULL;
+  ednum = edfirst = NULL;
+
+  enclosing_radius = NULL;
+  rounded_radius = NULL;
+  maxerad = NULL;
+
+  single_enable = 0;
+  restartinfo = 0;
+
+  c_n = 0.1;
+  c_t = 0.2;
+  mu = 0.0;
+  delta_ua = 1.0;
+}
+
+/* ---------------------------------------------------------------------- */
+
+PairBodyRoundedPolygon::~PairBodyRoundedPolygon()
+{
+  memory->destroy(discrete);
+  memory->destroy(dnum);
+  memory->destroy(dfirst);
+
+  memory->destroy(edge);
+  memory->destroy(ednum);
+  memory->destroy(edfirst);
+
+  memory->destroy(enclosing_radius);
+  memory->destroy(rounded_radius);
+
+  if (allocated) {
+    memory->destroy(setflag);
+    memory->destroy(cutsq);
+
+    memory->destroy(k_n);
+    memory->destroy(k_na);
+    memory->destroy(maxerad);
+  }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void PairBodyRoundedPolygon::compute(int eflag, int vflag)
+{
+  int i,j,ii,jj,inum,jnum,itype,jtype;
+  int ni,nj,npi,npj,ifirst,jfirst;
+  int nei,nej,iefirst,jefirst;
+  double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fx,fy,fz;
+  double rsq,rsqinv,r,radi,radj,eradi,eradj,rradi,rradj,k_nij,k_naij;
+  double xi[3],xj[3],fi[3],fj[3],ti[3],tj[3],facc[3];
+  double *dxi,*dxj;
+  int *ilist,*jlist,*numneigh,**firstneigh;
+
+  evdwl = 0.0;
+  if (eflag || vflag) ev_setup(eflag,vflag);
+  else evflag = vflag_fdotr = 0;
+
+  double **x = atom->x;
+  double **v = atom->v;
+  double **f = atom->f;
+  double **torque = atom->torque;
+  double **angmom = atom->angmom;
+  double *radius = atom->radius;
+  tagint* tag = atom->tag;
+  int *body = atom->body;
+  int *type = atom->type;
+  int nlocal = atom->nlocal;
+  int nall = nlocal + atom->nghost;
+  int newton_pair = force->newton_pair;
+
+  inum = list->inum;
+  ilist = list->ilist;
+  numneigh = list->numneigh;
+  firstneigh = list->firstneigh;
+
+  // grow the per-atom lists if necessary and initialize
+
+  if (atom->nmax > nmax) {
+    memory->destroy(dnum);
+    memory->destroy(dfirst);
+    memory->destroy(ednum);
+    memory->destroy(edfirst);
+    memory->destroy(enclosing_radius);
+    memory->destroy(rounded_radius);
+    nmax = atom->nmax;
+    memory->create(dnum,nmax,"pair:dnum");
+    memory->create(dfirst,nmax,"pair:dfirst");
+    memory->create(ednum,nmax,"pair:ednum");
+    memory->create(edfirst,nmax,"pair:edfirst");
+    memory->create(enclosing_radius,nmax,"pair:enclosing_radius");
+    memory->create(rounded_radius,nmax,"pair:rounded_radius");
+  }
+
+  ndiscrete = nedge = 0;
+  for (i = 0; i < nall; i++)
+    dnum[i] = ednum[i] = 0;
+
+  // loop over neighbors of my atoms
+
+  for (ii = 0; ii < inum; ii++) {
+    i = ilist[ii];
+    xtmp = x[i][0];
+    ytmp = x[i][1];
+    ztmp = x[i][2];
+    itype = type[i];
+    radi = radius[i];
+    jlist = firstneigh[i];
+    jnum = numneigh[i];
+
+    if (body[i] >= 0) {
+      if (dnum[i] == 0) body2space(i);
+      npi = dnum[i];
+      ifirst = dfirst[i];
+      nei = ednum[i];
+      iefirst = edfirst[i];
+      eradi = enclosing_radius[i];
+      rradi = rounded_radius[i];
+    }
+
+    for (jj = 0; jj < jnum; jj++) {
+      j = jlist[jj];
+      j &= NEIGHMASK;
+
+      delx = xtmp - x[j][0];
+      dely = ytmp - x[j][1];
+      delz = ztmp - x[j][2];
+      rsq = delx*delx + dely*dely + delz*delz;
+      jtype = type[j];
+      radj = radius[j];
+
+      // body/body interactions
+
+      evdwl = 0.0;
+      facc[0] = facc[1] = facc[2] = 0;
+
+      if (body[i] < 0 || body[j] < 0) continue;
+
+      if (dnum[j] == 0) body2space(j);
+      npj = dnum[j];
+      jfirst = dfirst[j];
+      nej = ednum[j];
+      jefirst = edfirst[j];
+      eradj = enclosing_radius[j];
+      rradj = rounded_radius[j];
+
+      k_nij = k_n[itype][jtype];
+      k_naij = k_na[itype][jtype];
+
+      // no interaction
+
+      r = sqrt(rsq);
+      if (r > radi + radj + cut_inner) continue;
+      rsqinv = 1.0 / rsq;
+
+      if (npi == 1 && npj == 1) {
+        sphere_against_sphere(i, j, delx, dely, delz, rsq,
+                            k_nij, k_naij, x, v, f, evflag);
+        continue;
+      }
+
+      // reset vertex and edge forces
+
+      for (ni = 0; ni < npi; ni++) {
+        discrete[ifirst+ni][3] = 0;
+        discrete[ifirst+ni][4] = 0;
+        discrete[ifirst+ni][5] = 0;
+      }
+
+      for (nj = 0; nj < npj; nj++) {
+        discrete[jfirst+nj][3] = 0;
+        discrete[jfirst+nj][4] = 0;
+        discrete[jfirst+nj][5] = 0;
+      }
+
+      for (ni = 0; ni < nei; ni++) {
+        edge[iefirst+ni][2] = 0;
+        edge[iefirst+ni][3] = 0;
+        edge[iefirst+ni][4] = 0;
+      }
+
+      for (nj = 0; nj < nej; nj++) {
+        edge[jefirst+nj][2] = 0;
+        edge[jefirst+nj][3] = 0;
+        edge[jefirst+nj][4] = 0;
+      }
+
+      int interact, num_contacts, done;
+      double delta_a, j_a;
+      Contact contact_list[MAX_CONTACTS];
+
+      num_contacts = 0;
+
+      // check interaction between i's vertices and j' edges
+
+      interact = vertex_against_edge(i, j, k_nij, k_naij,
+                                     x, f, torque, tag, contact_list,
+                                     num_contacts, evdwl, facc);
+
+      // check interaction between j's vertices and i' edges
+
+      interact = vertex_against_edge(j, i, k_nij, k_naij,
+                                     x, f, torque, tag, contact_list,
+                                     num_contacts, evdwl, facc);
+
+      if (num_contacts >= 2) {
+
+        // find the first two distinct contacts
+
+        done = 0;
+        for (int m = 0; m < num_contacts-1; m++) {
+          for (int n = m+1; n < num_contacts; n++) {
+            delta_a = contact_separation(contact_list[m], contact_list[n]);
+            if (delta_a > 0) {
+              j_a = delta_a / (EFF_CONTACTS * delta_ua);
+              if (j_a < 1.0) j_a = 1.0;
+
+              // 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);
+              done = 1;
+
+              #ifdef _POLYGON_DEBUG
+              printf("  Two separate contacts %d and %d: delta_a = %f; j_a = %f\n",
+                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]);
+              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]);
+              #endif
+
+              break;
+            }
+          }
+          if (done == 1) break;
+        }
+
+
+      } else if (num_contacts == 1) {
+
+        // if there's only one contact, it should be handled here
+        // since forces/torques have not been accumulated from vertex2edge()
+
+        contact_forces(contact_list[0], 1.0, x, v, angmom, f, torque, evdwl, facc);
+
+        #ifdef _POLYGON_DEBUG
+        printf("One contact between vertex %d of body %d and edge %d of body %d:\n",
+                contact_list[0].vertex, tag[contact_list[0].ibody],
+                contact_list[0].edge, tag[contact_list[0].jbody]);
+        printf("xv = %f %f %f; xe = %f %f %f\n",
+               contact_list[0].xv[0], contact_list[0].xv[1], contact_list[0].xv[2],
+               contact_list[0].xe[0], contact_list[0].xe[1], contact_list[0].xe[2]);
+        #endif
+      }
+
+      #ifdef _POLYGON_DEBUG
+      int num_overlapping_contacts = 0;
+      for (int m = 0; m < num_contacts-1; m++) {
+        for (int n = m+1; n < num_contacts; n++) {
+          double l = contact_separation(contact_list[m], contact_list[n]);
+          if (l < EPSILON) num_overlapping_contacts++;
+        }
+      }
+      printf("There are %d contacts detected, %d of which overlap.\n",
+             num_contacts, num_overlapping_contacts);
+      #endif
+
+      if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair,evdwl,0.0,
+                               facc[0],facc[1],facc[2],delx,dely,delz);
+
+    } // end for jj
+  }
+
+  if (vflag_fdotr) virial_fdotr_compute();
+}
+
+/* ----------------------------------------------------------------------
+   allocate all arrays
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolygon::allocate()
+{
+  allocated = 1;
+  int n = atom->ntypes;
+
+  memory->create(setflag,n+1,n+1,"pair:setflag");
+  for (int i = 1; i <= n; i++)
+    for (int j = i; j <= n; j++)
+      setflag[i][j] = 0;
+
+  memory->create(cutsq,n+1,n+1,"pair:cutsq");
+
+  memory->create(k_n,n+1,n+1,"pair:k_n");
+  memory->create(k_na,n+1,n+1,"pair:k_na");
+  memory->create(maxerad,n+1,"pair:maxerad");
+}
+
+/* ----------------------------------------------------------------------
+   global settings
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolygon::settings(int narg, char **arg)
+{
+  if (narg < 5) error->all(FLERR,"Illegal pair_style command");
+
+  c_n = force->numeric(FLERR,arg[0]);
+  c_t = force->numeric(FLERR,arg[1]);
+  mu = force->numeric(FLERR,arg[2]);
+  delta_ua = force->numeric(FLERR,arg[3]);
+  cut_inner = force->numeric(FLERR,arg[4]);
+}
+
+/* ----------------------------------------------------------------------
+   set coeffs for one or more type pairs
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolygon::coeff(int narg, char **arg)
+{
+  if (narg < 4 || narg > 5)
+    error->all(FLERR,"Incorrect args for pair coefficients");
+  if (!allocated) allocate();
+
+  int ilo,ihi,jlo,jhi;
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
+
+  double k_n_one = force->numeric(FLERR,arg[2]);
+  double k_na_one = force->numeric(FLERR,arg[3]);
+
+  int count = 0;
+  for (int i = ilo; i <= ihi; i++) {
+    for (int j = MAX(jlo,i); j <= jhi; j++) {
+      k_n[i][j] = k_n_one;
+      k_na[i][j] = k_na_one;
+      setflag[i][j] = 1;
+      count++;
+    }
+  }
+
+  if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients");
+}
+
+/* ----------------------------------------------------------------------
+   init specific to this pair style
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolygon::init_style()
+{
+  avec = (AtomVecBody *) atom->style_match("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");
+  bptr = (BodyRoundedPolygon *) avec->bptr;
+
+  if (comm->ghost_velocity == 0)
+    error->all(FLERR,"Pair body/rounded/polygon requires ghost atoms store velocity");
+
+  neighbor->request(this);
+
+  // find the maximum enclosing radius for each atom type
+
+  int i, itype;
+  double eradi;
+  int* body = atom->body;
+  int* type = atom->type;
+  int ntypes = atom->ntypes;
+  int nlocal = atom->nlocal;
+
+  if (atom->nmax > nmax) {
+    memory->destroy(dnum);
+    memory->destroy(dfirst);
+    memory->destroy(ednum);
+    memory->destroy(edfirst);
+    memory->destroy(enclosing_radius);
+    memory->destroy(rounded_radius);
+    nmax = atom->nmax;
+    memory->create(dnum,nmax,"pair:dnum");
+    memory->create(dfirst,nmax,"pair:dfirst");
+    memory->create(ednum,nmax,"pair:ednum");
+    memory->create(edfirst,nmax,"pair:edfirst");
+    memory->create(enclosing_radius,nmax,"pair:enclosing_radius");
+    memory->create(rounded_radius,nmax,"pair:rounded_radius");
+  }
+
+  ndiscrete = nedge = 0;
+  for (i = 0; i < nlocal; i++)
+    dnum[i] = ednum[i] = 0;
+
+  double *merad = NULL;
+  memory->create(merad,ntypes+1,"pair:merad");
+  for (i = 1; i <= ntypes; i++)
+    maxerad[i] = merad[i] = 0;
+
+  int ipour;
+  for (ipour = 0; ipour < modify->nfix; ipour++)
+    if (strcmp(modify->fix[ipour]->style,"pour") == 0) break;
+  if (ipour == modify->nfix) ipour = -1;
+
+  int idep;
+  for (idep = 0; idep < modify->nfix; idep++)
+    if (strcmp(modify->fix[idep]->style,"deposit") == 0) break;
+  if (idep == modify->nfix) idep = -1;
+
+  for (i = 1; i <= ntypes; i++) {
+    merad[i] = 0.0;
+    if (ipour >= 0) {
+      itype = i;
+      merad[i] =
+        *((double *) modify->fix[ipour]->extract("radius",itype));
+    }
+    if (idep >= 0) {
+      itype = i;
+      merad[i] =
+        *((double *) modify->fix[idep]->extract("radius",itype));
+    }
+  }
+
+  for (i = 0; i < nlocal; i++) {
+    itype = type[i];
+    if (body[i] >= 0) {
+      if (dnum[i] == 0) body2space(i);
+      eradi = enclosing_radius[i];
+      if (eradi > merad[itype]) merad[itype] = eradi;
+    } else 
+      merad[itype] = 0;
+  }
+
+  MPI_Allreduce(&merad[1],&maxerad[1],ntypes,MPI_DOUBLE,MPI_MAX,world);
+
+  memory->destroy(merad);
+}
+
+/* ----------------------------------------------------------------------
+   init for one type pair i,j and corresponding j,i
+------------------------------------------------------------------------- */
+
+double PairBodyRoundedPolygon::init_one(int i, int j)
+{
+  k_n[j][i] = k_n[i][j];
+  k_na[j][i] = k_na[i][j];
+
+  return (maxerad[i]+maxerad[j]);
+}
+
+/* ----------------------------------------------------------------------
+   convert N sub-particles in body I to space frame using current quaternion
+   store sub-particle space-frame displacements from COM in discrete list
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolygon::body2space(int i)
+{
+  int ibonus = atom->body[i];
+  AtomVecBody::Bonus *bonus = &avec->bonus[ibonus];
+  int nsub = bptr->nsub(bonus);
+  double *coords = bptr->coords(bonus);
+  int body_num_edges = bptr->nedges(bonus);
+  double* edge_ends = bptr->edges(bonus);
+  double eradius = bptr->enclosing_radius(bonus);
+  double rradius = bptr->rounded_radius(bonus);
+
+  // get the number of sub-particles (vertices)
+  // and the index of the first vertex of my body in the list
+
+  dnum[i] = nsub;
+  dfirst[i] = ndiscrete;
+
+  // grow the vertex list if necessary
+  // the first 3 columns are for coords, the last 3 for forces
+
+  if (ndiscrete + nsub > dmax) {
+    dmax += DELTA;
+    memory->grow(discrete,dmax,6,"pair:discrete");
+  }
+
+  double p[3][3];
+  MathExtra::quat_to_mat(bonus->quat,p);
+
+  for (int m = 0; m < nsub; m++) {
+    MathExtra::matvec(p,&coords[3*m],discrete[ndiscrete]);
+    discrete[ndiscrete][3] = 0;
+    discrete[ndiscrete][4] = 0;
+    discrete[ndiscrete][5] = 0;
+    ndiscrete++;
+  }
+
+  // get the number of edges (vertices)
+  // and the index of the first edge of my body in the list
+
+  ednum[i] = body_num_edges;
+  edfirst[i] = nedge;
+
+  // grow the edge list if necessary
+  // the first 2 columns are for vertex indices within body, the last 3 for forces
+
+  if (nedge + body_num_edges > edmax) {
+    edmax += DELTA;
+    memory->grow(edge,edmax,5,"pair:edge");
+  }
+
+  for (int m = 0; m < body_num_edges; m++) {
+    edge[nedge][0] = static_cast<int>(edge_ends[2*m+0]);
+    edge[nedge][1] = static_cast<int>(edge_ends[2*m+1]);
+    edge[nedge][2] = 0;
+    edge[nedge][3] = 0;
+    edge[nedge][4] = 0;
+    nedge++;
+  }
+
+  enclosing_radius[i] = eradius;
+  rounded_radius[i] = rradius;
+}
+
+/* ----------------------------------------------------------------------
+   Interaction between two spheres with different radii
+   according to the 2D model from Fraige et al.
+---------------------------------------------------------------------- */
+
+void PairBodyRoundedPolygon::sphere_against_sphere(int i, int j,
+                       double delx, double dely, double delz, double rsq,
+                       double k_n, double k_na, double** x, double** v,
+                       double** f, int evflag)
+{
+  double eradi,eradj,rradi,rradj;
+  double vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3;
+  double rij,rsqinv,R,fx,fy,fz,fn[3],ft[3],fpair,shift,energy;
+  int nlocal = atom->nlocal;
+  int newton_pair = force->newton_pair;
+
+  eradi = enclosing_radius[i];
+  rradi = rounded_radius[i];
+
+  eradj = enclosing_radius[j];
+  rradj = rounded_radius[j];
+
+  rsqinv = 1.0/rsq;
+  rij = sqrt(rsq);
+  R = rij - (rradi + rradj);
+  shift = k_na * cut_inner;
+
+  energy = 0;
+
+  if (R <= 0) {           // deformation occurs
+    fpair = -k_n * R - shift;
+    energy = (0.5 * k_n * R + shift) * R;
+  } else if (R <= cut_inner) {   // not deforming but cohesive ranges overlap
+    fpair = k_na * R - shift;
+    energy = (-0.5 * k_na * R + shift) * R;
+  } else fpair = 0.0;
+
+  fx = delx*fpair/rij;
+  fy = dely*fpair/rij;
+  fz = delz*fpair/rij;
+
+  if (R <= EPSILON) { // in contact
+
+    // relative translational velocity
+
+    vr1 = v[i][0] - v[j][0];
+    vr2 = v[i][1] - v[j][1];
+    vr3 = v[i][2] - v[j][2];
+
+    // normal component
+
+    vnnr = vr1*delx + vr2*dely + vr3*delz;
+    vn1 = delx*vnnr * rsqinv;
+    vn2 = dely*vnnr * rsqinv;
+    vn3 = delz*vnnr * rsqinv;
+
+    // tangential component
+
+    vt1 = vr1 - vn1;
+    vt2 = vr2 - vn2;
+    vt3 = vr3 - vn3;
+
+    // normal friction term at contact
+
+    fn[0] = -c_n * vn1;
+    fn[1] = -c_n * vn2;
+    fn[2] = -c_n * vn3;
+
+    // tangential friction term at contact
+    // excluding the tangential deformation term
+
+    ft[0] = -c_t * vt1;
+    ft[1] = -c_t * vt2;
+    ft[2] = -c_t * vt3;
+  }
+
+  f[i][0] += fx;
+  f[i][1] += fy;
+  f[i][2] += fz;
+  
+  if (newton_pair || j < nlocal) {
+    f[j][0] -= fx;
+    f[j][1] -= fy;
+    f[j][2] -= fz;
+  }
+
+  if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair,
+                           energy,0.0,fx,fy,fz,delx,dely,delz);
+}
+
+/* ----------------------------------------------------------------------
+   Determine the interaction mode between i's vertices against j's edges
+
+   i = atom i (body i)
+   j = atom j (body j)
+   x      = atoms' coordinates
+   f      = atoms' forces
+   torque = atoms' torques
+   tag    = atoms' tags
+   contact_list = list of contacts
+   num_contacts = number of contacts between i's vertices and j's edges
+   Return:
+     interact = 0 no interaction at all
+                1 there's at least one case where i's vertices interacts
+                  with j's edges
+---------------------------------------------------------------------- */
+
+int PairBodyRoundedPolygon::vertex_against_edge(int i, int j,
+                                                double k_n, double k_na,
+                                                double** x, double** f,
+                                                double** torque, tagint* tag,
+                                                Contact* contact_list,
+                                                int &num_contacts,
+                                                double &evdwl, double* facc)
+{
+  int ni, npi, ifirst, nei, iefirst;
+  int nj, npj, jfirst, nej, jefirst;
+  double xpi[3], xpj[3], dist, eradi, eradj, rradi, rradj;
+  double fx, fy, fz, rx, ry, rz, energy;
+  int interact;
+  int nlocal = atom->nlocal;
+
+  npi = dnum[i];
+  ifirst = dfirst[i];
+  nei = ednum[i];
+  iefirst = edfirst[i];
+  eradi = enclosing_radius[i];
+  rradi = rounded_radius[i];
+
+  npj = dnum[j];
+  jfirst = dfirst[j];
+  nej = ednum[j];
+  jefirst = edfirst[j];
+  eradj = enclosing_radius[j];
+  rradj = rounded_radius[j];
+
+  energy = 0;
+  interact = 0;
+
+  // loop through body i's vertices
+
+  for (ni = 0; ni < npi; ni++) {
+
+    // convert body-fixed coordinates to space-fixed, xi
+
+    xpi[0] = x[i][0] + discrete[ifirst+ni][0];
+    xpi[1] = x[i][1] + discrete[ifirst+ni][1];
+    xpi[2] = x[i][2] + discrete[ifirst+ni][2];
+
+    // compute the distance from the vertex to the COM of body j
+
+    distance(xpi, x[j], dist);
+
+    #ifdef _POLYGON_DEBUG
+    printf("Distance between vertex %d of body %d (%0.1f %0.1f %0.1f) "
+           "to body %d's COM: %f (cut = %0.1f)\n",
+           ni, xpi[0], xpi[1], xpi[2], atom->tag[i], atom->tag[j], dist,
+           eradj + rradi + rradj + cut_inner);
+    #endif
+
+    // the vertex is within the enclosing circle (sphere) of body j,
+    // possibly interacting
+
+    if (dist > eradj + rradj + rradi + cut_inner) continue;
+
+    int mode, contact, p2vertex;
+    double d, R, hi[3], t, delx, dely, delz, fpair, shift;
+    double xj[3], rij;
+
+    // loop through body j's edges
+
+    for (nj = 0; nj < nej; nj++) {
+
+      // compute the distance between the edge nj to the vertex xpi
+
+      mode = compute_distance_to_vertex(j, nj, x[j], rradj,
+                                        xpi, rradi, cut_inner,
+                                        d, hi, t, contact);
+
+      if (mode == INVALID || mode == NONE) continue;
+
+      if (mode == VERTEXI || mode == VERTEXJ) {
+
+        interact = 1;
+
+        // vertex i interacts with a vertex of the edge, but does not contact
+
+        if (mode == VERTEXI) p2vertex = edge[jefirst+nj][0];
+        else if (mode == VERTEXJ) p2vertex = edge[jefirst+nj][1];
+
+        // p2.body2space(p2vertex, xj);
+        xpj[0] = x[j][0] + discrete[jfirst+p2vertex][0];
+        xpj[1] = x[j][1] + discrete[jfirst+p2vertex][1];
+        xpj[2] = x[j][2] + discrete[jfirst+p2vertex][2];
+
+        delx = xpi[0] - xpj[0];
+        dely = xpi[1] - xpj[1];
+        delz = xpi[2] - xpj[2];
+
+        // R = surface separation = rij shifted by the rounded radii
+        // R = rij - (p1.rounded_radius + p2.rounded_radius);
+        // note: the force is defined for R, not for rij
+        // R > rc:     no interaction between vertex ni and p2vertex
+        // 0 < R < rc: cohesion between vertex ni and p2vertex
+        // R < 0:      deformation between vertex ni and p2vertex
+
+        rij = sqrt(delx*delx + dely*dely + delz*delz);
+        R = rij - (rradi + rradj);
+        shift = k_na * cut_inner;
+
+        // the normal frictional term -c_n * vn will be added later
+
+        if (R <= 0) {           // deformation occurs
+          fpair = -k_n * R - shift;
+          energy += (0.5 * k_n * R + shift) * R;
+        } else if (R <= cut_inner) {   // not deforming but cohesive ranges overlap
+          fpair = k_na * R - shift;
+          energy += (-0.5 * k_na * R + shift) * R;
+        } else fpair = 0.0;
+
+        fx = delx*fpair/rij;
+        fy = dely*fpair/rij;
+        fz = delz*fpair/rij;
+
+        #ifdef _POLYGON_DEBUG
+        printf("  Interaction between vertex %d of %d and vertex %d of %d:",
+               ni, tag[i], p2vertex, tag[j]);
+        printf("    mode = %d; contact = %d; d = %f; rij = %f, t = %f\n",
+               mode, contact, d, rij, t);
+        printf("    R = %f; cut_inner = %f\n", R, cut_inner);
+        printf("    fpair = %f\n", fpair);
+        #endif
+
+        // add forces to body i and body j directly
+        // avoid double counts this pair of vertices
+        // i and j can be either local or ghost atoms (bodies)
+        // probably need more work here when the vertices' interaction
+        // are not symmetric, e.g. j interacts with the edge
+        // consisting of i but in mode = EDGE instead of VERTEX*.
+        // OR, for the time being assume that the edge length is
+        // sufficiently greater than the rounded radius to distinguish
+        // vertex-vertex from vertex-edge contact modes.
+        // Special case: when i is a sphere, also accumulate
+
+        if (tag[i] < tag[j] || npi == 1) {
+
+          f[i][0] += fx;
+          f[i][1] += fy;
+          f[i][2] += fz;
+          sum_torque(x[i], xpi, fx, fy, fz, torque[i]);
+
+          f[j][0] -= fx;
+          f[j][1] -= fy;
+          f[j][2] -= fz;
+          sum_torque(x[j], xpj, -fx, -fy, -fz, torque[j]);
+
+          facc[0] += fx; facc[1] += fy; facc[2] += fz;
+
+          #ifdef _POLYGON_DEBUG
+          printf("    from vertex-vertex: "
+                 "force on vertex %d of body %d: fx %f fy %f fz %f\n"
+                 "      torque body %d: %f %f %f\n"
+                 "      torque body %d: %f %f %f\n", ni, tag[i], fx, fy, fz,
+            tag[i],torque[i][0],torque[i][1],torque[i][2],
+            tag[j],torque[j][0],torque[j][1],torque[j][2]);
+        #endif
+        }
+
+        // done with the edges from body j,
+        // given that vertex ni interacts with only one vertex from one edge of body j
+
+//        break;
+
+      } else if (mode == EDGE) {
+
+        interact = 1;
+
+        // vertex i interacts with the edge
+
+        delx = xpi[0] - hi[0];
+        dely = xpi[1] - hi[1];
+        delz = xpi[2] - hi[2];
+
+        // R = surface separation = d shifted by the rounded radii
+        // R = d - (p1.rounded_radius + p2.rounded_radius);
+        // Note: the force is defined for R, not for d
+        // R > rc:     no interaction between vertex i and edge j
+        // 0 < R < rc: cohesion between vertex i and edge j
+        // R < 0:      deformation between vertex i and edge j
+        // rij = sqrt(delx*delx + dely*dely + delz*delz);
+
+        R = d - (rradi + rradj);
+        shift = k_na * cut_inner;
+
+        // the normal frictional term -c_n * vn will be added later
+
+        if (R <= 0) {           // deformation occurs
+          fpair = -k_n * R - shift;
+          energy += (0.5 * k_n * R + shift) * R;
+        } else if (R <= cut_inner) {   // not deforming but cohesive ranges overlap
+          fpair = k_na * R - shift;
+          energy += (-0.5 * k_na * R + shift) * R;
+        } else fpair = 0.0;
+
+        fx = delx*fpair/d;
+        fy = dely*fpair/d;
+        fz = delz*fpair/d;
+
+        #ifdef _POLYGON_DEBUG
+        printf("  Interaction between vertex %d of %d and edge %d of %d:",
+               ni, tag[i], nj, tag[j]);
+        printf("    mode = %d; contact = %d; d = %f; t = %f\n",
+               mode, contact, d, t);
+        printf("    R = %f; cut_inner = %f\n", R, cut_inner);
+        printf("    fpair = %f\n", fpair);
+        #endif
+
+        if (contact == 1) {
+
+          // vertex ni of body i contacts with edge nj of body j
+
+          contact_list[num_contacts].ibody = i;
+          contact_list[num_contacts].jbody = j;
+          contact_list[num_contacts].vertex = ni;
+          contact_list[num_contacts].edge = nj;
+          contact_list[num_contacts].xv[0] = xpi[0];
+          contact_list[num_contacts].xv[1] = xpi[1];
+          contact_list[num_contacts].xv[2] = xpi[2];
+          contact_list[num_contacts].xe[0] = hi[0];
+          contact_list[num_contacts].xe[1] = hi[1];
+          contact_list[num_contacts].xe[2] = hi[2];
+          contact_list[num_contacts].separation = R;
+          num_contacts++;
+
+          // store forces to vertex ni and the edge nj
+          // to be rescaled later
+
+          discrete[ifirst+ni][3] = fx;
+          discrete[ifirst+ni][4] = fy;
+          discrete[ifirst+ni][5] = fz;
+
+          edge[jefirst+nj][2] = -fx;
+          edge[jefirst+nj][3] = -fy;
+          edge[jefirst+nj][4] = -fz;
+
+          #ifdef _POLYGON_DEBUG
+          printf("  Stored forces at vertex and edge for accumulating later.\n");
+          #endif
+
+        } else { // no contact
+
+          // accumulate force and torque to both bodies directly
+
+          f[i][0] += fx;
+          f[i][1] += fy;
+          f[i][2] += fz;
+          sum_torque(x[i], xpi, fx, fy, fz, torque[i]);
+
+          f[j][0] -= fx;
+          f[j][1] -= fy;
+          f[j][2] -= fz;
+          sum_torque(x[j], hi, -fx, -fy, -fz, torque[j]);
+
+          facc[0] += fx; facc[1] += fy; facc[2] += fz;
+
+          #ifdef _POLYGON_DEBUG
+          printf("    from vertex-edge, no contact: "
+                 "force on vertex %d of body %d: fx %f fy %f fz %f\n"
+                 "      torque body %d: %f %f %f\n"
+                 "      torque body %d: %f %f %f\n", ni, tag[i], fx, fy, fz,
+                 tag[i],torque[i][0],torque[i][1],torque[i][2],
+                 tag[j],torque[j][0],torque[j][1],torque[j][2]);
+          #endif
+        } // end if contact
+
+        // done with the edges from body j,
+        // given that vertex ni interacts with only one edge from body j
+
+//        break;
+
+      } // end if mode
+
+    } // end for looping through the edges of body j
+
+  } // end for looping through the vertices of body i
+
+  evdwl += energy;
+
+  return interact;
+}
+
+/* -------------------------------------------------------------------------
+  Compute the distance between an edge of body i and a vertex from
+  another body
+  Input:
+    ibody      = body i (i.e. atom i)
+    edge_index = edge index of body i
+    xmi        = atom i's coordinates (body i's center of mass)
+    x0         = coordinate of the tested vertex from another body
+    x0_rounded_radius = rounded radius of the tested vertex
+    cut_inner  = cutoff for vertex-vertex and vertex-edge interaction
+  Output:
+    d          = Distance from a point x0 to an edge
+    hi         = coordinates of the projection of x0 on the edge
+    t          = ratio to determine the relative position of hi
+                 wrt xi and xj on the segment
+  contact      = 0 no contact between the queried vertex and the edge
+                 1 contact detected
+  return
+    INVALID if the edge index is invalid
+    NONE    if there is no interaction
+    VERTEXI if the tested vertex interacts with the first vertex of the edge
+    VERTEXJ if the tested vertex interacts with the second vertex of the edge
+    EDGE    if the tested vertex interacts with the edge
+------------------------------------------------------------------------- */
+
+int PairBodyRoundedPolygon::compute_distance_to_vertex(int ibody,
+                                                int edge_index,
+                                                double *xmi,
+                                                double rounded_radius,
+                                                double* x0,
+                                                double x0_rounded_radius,
+                                                double cut_inner,
+                                                double &d,
+                                                double hi[3],
+                                                double &t,
+                                                int &contact)
+{
+  if (edge_index >= ednum[ibody]) return INVALID;
+
+  int mode,ifirst,iefirst,npi1,npi2;
+  double xi1[3],xi2[3],u[3],v[3],uij[3];
+  double udotv, magv, magucostheta;
+  double delx,dely,delz;
+
+  ifirst = dfirst[ibody];
+  iefirst = edfirst[ibody];
+  npi1 = static_cast<int>(edge[iefirst+edge_index][0]);
+  npi2 = static_cast<int>(edge[iefirst+edge_index][1]);
+
+  // compute the space-fixed coordinates for the vertices of the edge
+
+  xi1[0] = xmi[0] + discrete[ifirst+npi1][0];
+  xi1[1] = xmi[1] + discrete[ifirst+npi1][1];
+  xi1[2] = xmi[2] + discrete[ifirst+npi1][2];
+
+  xi2[0] = xmi[0] + discrete[ifirst+npi2][0];
+  xi2[1] = xmi[1] + discrete[ifirst+npi2][1];
+  xi2[2] = xmi[2] + discrete[ifirst+npi2][2];
+
+  // u = x0 - xi1
+
+  u[0] = x0[0] - xi1[0];
+  u[1] = x0[1] - xi1[1];
+  u[2] = x0[2] - xi1[2];
+
+  // v = xi2 - xi1
+
+  v[0] = xi2[0] - xi1[0];
+  v[1] = xi2[1] - xi1[1];
+  v[2] = xi2[2] - xi1[2];
+
+  // dot product between u and v = magu * magv * costheta
+
+  udotv = u[0] * v[0] + u[1] * v[1] + u[2] * v[2];
+  magv = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
+  magucostheta = udotv / magv;
+
+  // uij is the unit vector pointing from xi to xj
+
+  uij[0] = v[0] / magv;
+  uij[1] = v[1] / magv;
+  uij[2] = v[2] / magv;
+
+  // position of the projection of x0 on the line (xi, xj)
+
+  hi[0] = xi1[0] + magucostheta * uij[0];
+  hi[1] = xi1[1] + magucostheta * uij[1];
+  hi[2] = xi1[2] + magucostheta * uij[2];
+
+  // distance from x0 to the line (xi, xj) = distance from x0 to hi
+
+  distance(hi, x0, d);
+
+  // determine the interaction mode
+  // for 2D: a vertex can interact with one edge at most
+  // for 3D: a vertex can interact with one face at most
+
+  mode = NONE;
+  contact = 0;
+
+  if (d > rounded_radius + x0_rounded_radius + cut_inner) {
+
+    // if the vertex is far away from the edge
+
+    mode = NONE;
+
+  } else {
+
+    // check if x0 (the queried vertex) and xmi (the body's center of mass)
+    // are on the different sides of the edge
+
+    int m = opposite_sides(xi1, xi2, x0, xmi);
+
+    if (m == 0) {
+
+      // x0 and xmi are on not the opposite sides of the edge
+      // leave xpi for another edge to detect
+
+      mode = NONE;
+
+    } else {
+
+      // x0 and xmi are on the different sides
+      // t is the ratio to detect if x0 is closer to the vertices xi or xj
+
+      if (fabs(xi2[0] - xi1[0]) > EPSILON)
+        t = (hi[0] - xi1[0]) / (xi2[0] - xi1[0]);
+      else if (fabs(xi2[1] - xi1[1]) > EPSILON)
+        t = (hi[1] - xi1[1]) / (xi2[1] - xi1[1]);
+      else if (fabs(xi2[2] - xi1[2]) > EPSILON)
+        t = (hi[2] - xi1[2]) / (xi2[2] - xi1[2]);
+
+      double contact_dist = rounded_radius + x0_rounded_radius;
+      if (t >= 0 && t <= 1) {
+        mode = EDGE;
+        if (d < contact_dist + EPSILON)
+          contact = 1;
+        
+      } else { // t < 0 || t > 1: closer to either vertices of the edge
+
+        if (t < 0) {
+          // measure the distance from x0 to xi1
+          delx = x0[0] - xi1[0];
+          dely = x0[1] - xi1[1];
+          delz = x0[2] - xi1[2];
+          double dx0xi1 = sqrt(delx*delx + dely*dely + delz*delz);
+          if (dx0xi1 > contact_dist + cut_inner)
+            mode = NONE;
+          else
+            mode = VERTEXI;
+        } else {
+          // measure the distance from x0 to xi2
+          delx = x0[0] - xi2[0];
+          dely = x0[1] - xi2[1];
+          delz = x0[2] - xi2[2];
+          double dx0xi2 = sqrt(delx*delx + dely*dely + delz*delz);
+          if (dx0xi2 > contact_dist + cut_inner)
+            mode = NONE;
+          else
+            mode = VERTEXJ;
+        }
+      } // end if t >= 0 && t <= 1
+    } // end if x0 and xmi are on the same side of the edge
+  }
+
+  return mode;
+}
+
+/* ----------------------------------------------------------------------
+  Compute contact forces between two bodies
+  modify the force stored at the vertex and edge in contact by j_a
+  sum forces and torque to the corresponding bodies
+  fn = normal friction component
+  ft = tangential friction component (-c_t * v_t)
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolygon::contact_forces(Contact& contact, double j_a,
+                       double** x, double** v, double** angmom, double** f,
+                       double** torque, double &evdwl, double* facc)
+{
+  int ibody,jbody,ibonus,jbonus,ifirst,jefirst,ni,nj;
+  double fx,fy,fz,delx,dely,delz,rsq,rsqinv;
+  double vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3;
+  double fn[3],ft[3],vi[3],vj[3];
+  double *quat, *inertia;
+  AtomVecBody::Bonus *bonus;
+
+  ibody = contact.ibody;
+  jbody = contact.jbody;
+
+  // compute the velocity of the vertex in the space-fixed frame
+
+  ibonus = atom->body[ibody];
+  bonus = &avec->bonus[ibonus];
+  quat = bonus->quat;
+  inertia = bonus->inertia;
+  total_velocity(contact.xv, x[ibody], v[ibody], angmom[ibody],
+                 inertia, quat, vi);
+
+  // compute the velocity of the point on the edge in the space-fixed frame
+
+  jbonus = atom->body[jbody];
+  bonus = &avec->bonus[jbonus];
+  quat = bonus->quat;
+  inertia = bonus->inertia;
+  total_velocity(contact.xe, x[jbody], v[jbody], angmom[jbody],
+                 inertia, quat, vj);
+
+  // vector pointing from the vertex to the point on the edge
+
+  delx = contact.xv[0] - contact.xe[0];
+  dely = contact.xv[1] - contact.xe[1];
+  delz = contact.xv[2] - contact.xe[2];
+  rsq = delx*delx + dely*dely + delz*delz;
+  rsqinv = 1.0/rsq;
+
+  // relative translational velocity
+
+  vr1 = vi[0] - vj[0];
+  vr2 = vi[1] - vj[1];
+  vr3 = vi[2] - vj[2];
+
+  // normal component
+
+  vnnr = vr1*delx + vr2*dely + vr3*delz;
+  vn1 = delx*vnnr * rsqinv;
+  vn2 = dely*vnnr * rsqinv;
+  vn3 = delz*vnnr * rsqinv;
+
+  // tangential component
+
+  vt1 = vr1 - vn1;
+  vt2 = vr2 - vn2;
+  vt3 = vr3 - vn3;
+
+  // normal friction term at contact
+
+  fn[0] = -c_n * vn1;
+  fn[1] = -c_n * vn2;
+  fn[2] = -c_n * vn3;
+
+  // tangential friction term at contact
+  // excluding the tangential deformation term for now
+
+  ft[0] = -c_t * vt1;
+  ft[1] = -c_t * vt2;
+  ft[2] = -c_t * vt3;
+
+  // only the cohesive force is scaled by j_a
+  // mu * fne = tangential friction deformation during gross sliding
+  // see Eq. 4, Fraige et al.
+
+  ifirst = dfirst[ibody];
+  ni = contact.vertex;
+
+  fx = discrete[ifirst+ni][3] * j_a + fn[0] + ft[0] +
+    mu * discrete[ifirst+ni][3];
+  fy = discrete[ifirst+ni][4] * j_a + fn[1] + ft[1] +
+    mu * discrete[ifirst+ni][4];
+  fz = discrete[ifirst+ni][5] * j_a + fn[2] + ft[2] +
+    mu * discrete[ifirst+ni][5];
+  f[ibody][0] += fx;
+  f[ibody][1] += fy;
+  f[ibody][2] += fz;
+  sum_torque(x[ibody], contact.xv, fx, fy, fz, torque[ibody]);
+
+  // accumulate forces to the vertex only
+
+  facc[0] += fx; facc[1] += fy; facc[2] += fz;
+
+  // only the cohesive force is scaled by j_a
+  // mu * fne = tangential friction deformation during gross sliding
+  // Eq. 4, Fraige et al.
+
+  jefirst = edfirst[jbody];
+  nj = contact.edge;
+
+  fx = edge[jefirst+nj][2] * j_a - fn[0] - ft[0] +
+    mu * edge[jefirst+nj][2];
+  fy = edge[jefirst+nj][3] * j_a - fn[1] - ft[1] +
+    mu * edge[jefirst+nj][3];
+  fz = edge[jefirst+nj][4] * j_a - fn[2] - ft[2] +
+    mu * edge[jefirst+nj][4];
+  f[jbody][0] += fx;
+  f[jbody][1] += fy;
+  f[jbody][2] += fz;
+  sum_torque(x[jbody], contact.xe, fx, fy, fz, torque[jbody]);
+
+  #ifdef _POLYGON_DEBUG
+  printf("From contact forces: vertex fx %f fy %f fz %f\n"
+         "      torque body %d: %f %f %f\n"
+         "      torque body %d: %f %f %f\n",
+         discrete[ifirst+ni][3], discrete[ifirst+ni][4], discrete[ifirst+ni][5],
+         atom->tag[ibody],torque[ibody][0],torque[ibody][1],torque[ibody][2],
+         atom->tag[jbody],torque[jbody][0],torque[jbody][1],torque[jbody][2]);
+  #endif
+}
+
+/* ----------------------------------------------------------------------
+  Determine the length of the contact segment, i.e. the separation between
+  2 contacts, should be extended for 3D models.
+------------------------------------------------------------------------- */
+
+double PairBodyRoundedPolygon::contact_separation(const Contact& c1,
+                                                  const Contact& c2)
+{
+  double x1 = c1.xv[0];
+  double y1 = c1.xv[1];
+  double x2 = c1.xe[0];
+  double y2 = c1.xe[1];
+  double x3 = c2.xv[0];
+  double y3 = c2.xv[1];
+
+  double delta_a = 0.0;
+  if (fabs(x2 - x1) > EPSILON) {
+    double A = (y2 - y1) / (x2 - x1);
+    delta_a = fabs(y1 - A * x1 - y3 + A * x3) / sqrt(1 + A * A);
+  } else {
+    delta_a = fabs(x1 - x3);
+  }
+
+  return delta_a;
+}
+
+/* ----------------------------------------------------------------------
+  Accumulate torque to body from the force f=(fx,fy,fz) acting at point x
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolygon::sum_torque(double* xm, double *x, double fx,
+                                        double fy, double fz, double* torque)
+{
+  double rx = x[0] - xm[0];
+  double ry = x[1] - xm[1];
+  double rz = x[2] - xm[2];
+  double tx = ry * fz - rz * fy;
+  double ty = rz * fx - rx * fz;
+  double tz = rx * fy - ry * fx;
+  torque[0] += tx;
+  torque[1] += ty;
+  torque[2] += tz;
+}
+
+/* ----------------------------------------------------------------------
+  Test if two points a and b are in opposite sides of the line that
+  connects two points x1 and x2
+------------------------------------------------------------------------- */
+
+int PairBodyRoundedPolygon::opposite_sides(double* x1, double* x2,
+                                           double* a, double* b)
+{
+  double m_a = (x1[1] - x2[1])*(a[0] - x1[0]) + (x2[0] - x1[0])*(a[1] - x1[1]);
+  double m_b = (x1[1] - x2[1])*(b[0] - x1[0]) + (x2[0] - x1[0])*(b[1] - x1[1]);
+  // equal to zero when either a or b is inline with the line x1-x2
+  if (m_a * m_b <= 0)
+    return 1;
+  else
+    return 0;
+}
+
+/* ----------------------------------------------------------------------
+  Calculate the total velocity of a point (vertex, a point on an edge):
+    vi = vcm + omega ^ (p - xcm)
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolygon::total_velocity(double* p, double *xcm,
+                              double* vcm, double *angmom, double *inertia,
+                              double *quat, double* vi)
+{
+  double r[3],omega[3],ex_space[3],ey_space[3],ez_space[3];
+  r[0] = p[0] - xcm[0];
+  r[1] = p[1] - xcm[1];
+  r[2] = p[2] - xcm[2];
+  MathExtra::q_to_exyz(quat,ex_space,ey_space,ez_space);
+  MathExtra::angmom_to_omega(angmom,ex_space,ey_space,ez_space,
+                             inertia,omega);
+  vi[0] = omega[1]*r[2] - omega[2]*r[1] + vcm[0];
+  vi[1] = omega[2]*r[0] - omega[0]*r[2] + vcm[1];
+  vi[2] = omega[0]*r[1] - omega[1]*r[0] + vcm[2];
+}
+
+/* ---------------------------------------------------------------------- */
+
+void PairBodyRoundedPolygon::distance(const double* x2, const double* x1,
+                                      double& r)
+{
+  r = sqrt((x2[0] - x1[0]) * (x2[0] - x1[0])
+    + (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.h b/src/BODY/pair_body_rounded_polygon.h
new file mode 100644
index 0000000000..09c93b832e
--- /dev/null
+++ b/src/BODY/pair_body_rounded_polygon.h
@@ -0,0 +1,128 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef PAIR_CLASS
+
+PairStyle(body/rounded/polygon,PairBodyRoundedPolygon)
+
+#else
+
+#ifndef LMP_PAIR_BODY_ROUNDED_POLYGON_H
+#define LMP_PAIR_BODY_ROUNDED_POLYGON_H
+
+#include "pair.h"
+
+namespace LAMMPS_NS {
+
+class PairBodyRoundedPolygon : public Pair {
+ public:
+  PairBodyRoundedPolygon(class LAMMPS *);
+  ~PairBodyRoundedPolygon();
+  void compute(int, int);
+  void settings(int, char **);
+  void coeff(int, char **);
+  void init_style();
+  double init_one(int, int);
+
+  struct Contact {
+    int ibody, jbody; // body (i.e. atom) indices (not tags)
+    int vertex;       // vertex of the first polygon
+    int edge;         // edge of the second polygon
+    double xv[3];     // coordinates of the vertex
+    double xe[3];     // coordinates of the projection of the vertex on the edge
+    double separation;// separation at contact
+  };
+
+ protected:
+  double **k_n;       // normal repulsion strength
+  double **k_na;      // normal attraction strength
+  double c_n;         // normal damping coefficient
+  double c_t;         // tangential damping coefficient
+  double mu;          // normal friction coefficient during gross sliding
+  double delta_ua;    // contact line (area for 3D models) modification factor
+  double cut_inner;   // cutoff for interaction between vertex-edge surfaces
+
+  class AtomVecBody *avec;
+  class BodyRoundedPolygon *bptr;
+
+  double **discrete;  // list of all sub-particles for all bodies
+  int ndiscrete;      // number of discretes in list
+  int dmax;           // allocated size of discrete list
+  int *dnum;          // number of discretes per line, 0 if uninit
+  int *dfirst;        // index of first discrete per each line
+  int nmax;           // allocated size of dnum,dfirst vectors
+
+  double **edge;      // list of all edge for all bodies
+  int nedge;          // number of edge in list
+  int edmax;          // allocated size of edge list
+  int *ednum;         // number of edges per line, 0 if uninit
+  int *edfirst;       // index of first edge per each line
+  int ednummax;       // allocated size of ednum,edfirst vectors
+
+  double *enclosing_radius; // enclosing radii for all bodies
+  double *rounded_radius;   // rounded radii for all bodies
+  double *maxerad;          // per-type maximum enclosing radius
+
+  void allocate();
+  void body2space(int);
+
+  int vertex_against_edge(int i, int j, double k_n, double k_na,
+                          double** x, double** f, double** torque,
+                          tagint* tag, Contact* contact_list,
+                          int &num_contacts, double &evdwl, double* facc);
+  void sphere_against_sphere(int i, int j, double delx, double dely, double delz,
+                             double rsq, double k_n, double k_na,
+                             double** x, double** v, double** f, int evflag);
+  int compute_distance_to_vertex(int ibody, int edge_index, double* xmi,
+                                 double rounded_radius, double* x0,
+                                 double x0_rounded_radius, double cut_inner,
+                                 double &d, double hi[3], double &t,
+                                 int &contact);
+  double contact_separation(const Contact& c1, const Contact& c2);
+  void contact_forces(Contact& contact, double j_a, double** x, 
+                      double** v, double** f, double** angmom, 
+                      double** torque, double &evdwl, double* facc);
+  void sum_torque(double* xm, double *x, double fx,
+                  double fy, double fz, double* torque);
+  int opposite_sides(double* x1, double* x2, double* a, double* b);
+  void total_velocity(double* p, double *xcm, double* vcm, double *angmom,
+                      double *inertia, double *quat, double* vi);
+  inline void distance(const double* x2, const double* x1, double& r);
+};
+
+}
+
+#endif
+#endif
+
+/* ERROR/WARNING messages:
+
+E: Illegal ... command
+
+Self-explanatory.  Check the input script syntax and compare to the
+documentation for the command.  You can use -echo screen as a
+command-line option when running LAMMPS to see the offending line.
+
+E: Incorrect args for pair coefficients
+
+Self-explanatory.  Check the input script or data file.
+
+E: Pair body/rounded/polygon requires atom style body rounded/polygon
+
+Self-explanatory.
+
+E: Pair body requires body style rounded/polygon
+
+This pair style is specific to the rounded/polygon body style.
+
+*/
diff --git a/src/BODY/pair_body_rounded_polyhedron.cpp b/src/BODY/pair_body_rounded_polyhedron.cpp
new file mode 100644
index 0000000000..8d5f9ec72c
--- /dev/null
+++ b/src/BODY/pair_body_rounded_polyhedron.cpp
@@ -0,0 +1,2348 @@
+/* ----------------------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+   Contributing author: Trung Dac Nguyen (ndactrung@gmail.com)
+   Ref: Wang, Yu, Langston, Fraige, Particle shape effects in discrete
+   element modelling of cohesive angular particles, Granular Matter 2011,
+   13:1-12.
+   Note: The current implementation has not taken into account
+         the contact history for friction forces.
+------------------------------------------------------------------------- */
+
+#include <cmath>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include "pair_body_rounded_polyhedron.h"
+#include "math_extra.h"
+#include "atom.h"
+#include "atom_vec_body.h"
+#include "body_rounded_polyhedron.h"
+#include "comm.h"
+#include "force.h"
+#include "fix.h"
+#include "modify.h"
+#include "neighbor.h"
+#include "neigh_list.h"
+#include "memory.h"
+#include "error.h"
+#include "math_extra.h"
+#include "math_const.h"
+
+using namespace LAMMPS_NS;
+using namespace MathExtra;
+using namespace MathConst;
+
+#define DELTA 10000
+#define EPSILON 1e-3
+#define MAX_FACE_SIZE 4 // maximum number of vertices per face (same as BodyRoundedPolyhedron)
+#define MAX_CONTACTS 16  // for 3D models
+
+//#define _POLYHEDRON_DEBUG
+
+enum {EE_INVALID=0,EE_NONE,EE_INTERACT};
+enum {EF_INVALID=0,EF_NONE,EF_PARALLEL,EF_SAME_SIDE_OF_FACE,
+      EF_INTERSECT_INSIDE,EF_INTERSECT_OUTSIDE};
+
+/* ---------------------------------------------------------------------- */
+
+PairBodyRoundedPolyhedron::PairBodyRoundedPolyhedron(LAMMPS *lmp) : Pair(lmp)
+{
+  dmax = nmax = 0;
+  discrete = NULL;
+  dnum = dfirst = NULL;
+
+  edmax = ednummax = 0;
+  edge = NULL;
+  ednum = edfirst = NULL;
+
+  facmax = facnummax = 0;
+  face = NULL;
+  facnum = facfirst = NULL;
+
+  enclosing_radius = NULL;
+  rounded_radius = NULL;
+  maxerad = NULL;
+
+  single_enable = 0;
+  restartinfo = 0;
+
+  c_n = 0.1;
+  c_t = 0.2;
+  mu = 0.0;
+  A_ua = 1.0;
+}
+
+/* ---------------------------------------------------------------------- */
+
+PairBodyRoundedPolyhedron::~PairBodyRoundedPolyhedron()
+{
+  memory->destroy(discrete);
+  memory->destroy(dnum);
+  memory->destroy(dfirst);
+
+  memory->destroy(edge);
+  memory->destroy(ednum);
+  memory->destroy(edfirst);
+
+  memory->destroy(face);
+  memory->destroy(facnum);
+  memory->destroy(facfirst);
+
+  memory->destroy(enclosing_radius);
+  memory->destroy(rounded_radius);
+  memory->destroy(maxerad);
+
+  if (allocated) {
+    memory->destroy(setflag);
+    memory->destroy(cutsq);
+
+    memory->destroy(k_n);
+    memory->destroy(k_na);
+  }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::compute(int eflag, int vflag)
+{
+  int i,j,ii,jj,inum,jnum,itype,jtype;
+  int ni,nj,npi,npj,ifirst,jfirst,nei,nej,iefirst,jefirst;
+  double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,facc[3];
+  double rsq,eradi,eradj,k_nij,k_naij;
+  int *ilist,*jlist,*numneigh,**firstneigh;
+
+  evdwl = 0.0;
+  if (eflag || vflag) ev_setup(eflag,vflag);
+  else evflag = vflag_fdotr = 0;
+
+  double **x = atom->x;
+  double **v = atom->v;
+  double **f = atom->f;
+  double **torque = atom->torque;
+  double **angmom = atom->angmom;
+  int *body = atom->body;
+  int *type = atom->type;
+  int nlocal = atom->nlocal;
+  int nall = nlocal + atom->nghost;
+  int newton_pair = force->newton_pair;
+
+  inum = list->inum;
+  ilist = list->ilist;
+  numneigh = list->numneigh;
+  firstneigh = list->firstneigh;
+
+  // grow the per-atom lists if necessary and initialize
+
+  if (atom->nmax > nmax) {
+    memory->destroy(dnum);
+    memory->destroy(dfirst);
+    memory->destroy(ednum);
+    memory->destroy(edfirst);
+    memory->destroy(facnum);
+    memory->destroy(facfirst);
+    memory->destroy(enclosing_radius);
+    memory->destroy(rounded_radius);
+    nmax = atom->nmax;
+    memory->create(dnum,nmax,"pair:dnum");
+    memory->create(dfirst,nmax,"pair:dfirst");
+    memory->create(ednum,nmax,"pair:ednum");
+    memory->create(edfirst,nmax,"pair:edfirst");
+    memory->create(facnum,nmax,"pair:facnum");
+    memory->create(facfirst,nmax,"pair:facfirst");
+    memory->create(enclosing_radius,nmax,"pair:enclosing_radius");
+    memory->create(rounded_radius,nmax,"pair:rounded_radius");
+  }
+
+  ndiscrete = nedge = nface = 0;
+  for (i = 0; i < nall; i++)
+    dnum[i] = ednum[i] = facnum[i] = 0;
+
+  // loop over neighbors of my atoms
+
+  for (ii = 0; ii < inum; ii++) {
+    i = ilist[ii];
+    xtmp = x[i][0];
+    ytmp = x[i][1];
+    ztmp = x[i][2];
+    itype = type[i];
+    jlist = firstneigh[i];
+    jnum = numneigh[i];
+
+    if (body[i] >= 0) {
+      if (dnum[i] == 0) body2space(i);
+      npi = dnum[i];
+      ifirst = dfirst[i];
+      nei = ednum[i];
+      iefirst = edfirst[i];
+      eradi = enclosing_radius[i];
+     }
+
+    for (jj = 0; jj < jnum; jj++) {
+      j = jlist[jj];
+      j &= NEIGHMASK;
+
+      delx = xtmp - x[j][0];
+      dely = ytmp - x[j][1];
+      delz = ztmp - x[j][2];
+      rsq = delx*delx + dely*dely + delz*delz;
+      jtype = type[j];
+
+      // body/body interactions
+
+      evdwl = 0.0;
+      facc[0] = facc[1] = facc[2] = 0;
+
+      if (body[i] < 0 || body[j] < 0) continue;
+
+      if (dnum[j] == 0) body2space(j);
+      npj = dnum[j];
+      jfirst = dfirst[j];
+      nej = ednum[j];
+      jefirst = edfirst[j];
+      eradj = enclosing_radius[j];
+      
+      k_nij = k_n[itype][jtype];
+      k_naij = k_na[itype][jtype];
+
+      // no interaction
+
+      double r = sqrt(rsq);
+      if (r > eradi + eradj + cut_inner) continue;
+
+      // sphere-sphere interaction
+
+      if (npi == 1 && npj == 1) {
+        sphere_against_sphere(i, j, delx, dely, delz, rsq,
+                              k_nij, k_naij, v, f, evflag);
+        continue;
+      }
+
+      // reset vertex and edge forces
+
+      for (ni = 0; ni < npi; ni++) {
+        discrete[ifirst+ni][3] = 0;
+        discrete[ifirst+ni][4] = 0;
+        discrete[ifirst+ni][5] = 0;
+        discrete[ifirst+ni][6] = 0;
+      }
+
+      for (nj = 0; nj < npj; nj++) {
+        discrete[jfirst+nj][3] = 0;
+        discrete[jfirst+nj][4] = 0;
+        discrete[jfirst+nj][5] = 0;
+        discrete[jfirst+nj][6] = 0;
+      }
+
+      for (ni = 0; ni < nei; ni++) {
+        edge[iefirst+ni][2] = 0;
+        edge[iefirst+ni][3] = 0;
+        edge[iefirst+ni][4] = 0;
+        edge[iefirst+ni][5] = 0;
+      }
+
+      for (nj = 0; nj < nej; nj++) {
+        edge[jefirst+nj][2] = 0;
+        edge[jefirst+nj][3] = 0;
+        edge[jefirst+nj][4] = 0;
+        edge[jefirst+nj][5] = 0;
+      }
+
+      // one of the two bodies is a sphere
+
+      if (npj == 1) {
+        sphere_against_face(i, j, k_nij, k_naij, x, v, f, torque,
+                            angmom, evflag);
+        sphere_against_edge(i, j, k_nij, k_naij, x, v, f, torque,
+                            angmom, evflag);
+        continue;
+      } else if (npi == 1) {
+        sphere_against_face(j, i, k_nij, k_naij, x, v, f, torque,
+                            angmom, evflag);
+        sphere_against_edge(j, i, k_nij, k_naij, x, v, f, torque,
+                            angmom, evflag);
+        continue;
+      }
+
+      int interact, num_contacts;
+      Contact contact_list[MAX_CONTACTS];
+
+      num_contacts = 0;
+
+      // check interaction between i's edges and j' faces
+      #ifdef _POLYHEDRON_DEBUG
+      printf("INTERACTION between edges of %d vs. faces of %d:\n", i, j);
+      #endif 
+      interact = edge_against_face(i, j, k_nij, k_naij, x, contact_list,
+                                   num_contacts, evdwl, facc);
+
+      // check interaction between j's edges and i' faces
+      #ifdef _POLYHEDRON_DEBUG
+      printf("\nINTERACTION between edges of %d vs. faces of %d:\n", j, i);
+      #endif
+      interact = edge_against_face(j, i, k_nij, k_naij, x, contact_list,
+                                   num_contacts, evdwl, facc);
+
+      // check interaction between i's edges and j' edges
+      #ifdef _POLYHEDRON_DEBUG
+      printf("INTERACTION between edges of %d vs. edges of %d:\n", i, j);
+      #endif 
+      interact = edge_against_edge(i, j, k_nij, k_naij, x, contact_list,
+                                   num_contacts, evdwl, facc);
+
+      // estimate the contact area
+      // also consider point contacts and line contacts
+
+      if (num_contacts > 0) {
+        double contact_area;
+        if (num_contacts == 1) {
+          contact_area = 0;
+        } else if (num_contacts == 2) {
+          contact_area = num_contacts * A_ua;
+        } else {
+          int m;
+          double xc[3],dx,dy,dz;
+          xc[0] = xc[1] = xc[2] = 0;
+          for (m = 0; m < num_contacts; m++) {
+            xc[0] += contact_list[m].xi[0];
+            xc[1] += contact_list[m].xi[1];
+            xc[2] += contact_list[m].xi[2];
+          }
+
+          xc[0] /= (double)num_contacts;
+          xc[1] /= (double)num_contacts;
+          xc[2] /= (double)num_contacts;
+
+          contact_area = 0.0;
+          for (m = 0; m < num_contacts; m++) {
+            dx = contact_list[m].xi[0] - xc[0];
+            dy = contact_list[m].xi[1] - xc[1];
+            dz = contact_list[m].xi[2] - xc[2];
+            contact_area += (dx*dx + dy*dy + dz*dz);
+          }
+          contact_area *= (MY_PI/(double)num_contacts);
+        }
+        rescale_cohesive_forces(x, f, torque, contact_list, num_contacts,
+                                contact_area, k_nij, k_naij, facc);
+      }
+
+      if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair,evdwl,0.0,
+                               facc[0],facc[1],facc[2],delx,dely,delz);
+
+    } // end for jj
+  }
+
+  if (vflag_fdotr) virial_fdotr_compute();
+}
+
+/* ----------------------------------------------------------------------
+   allocate all arrays
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::allocate()
+{
+  allocated = 1;
+  int n = atom->ntypes;
+
+  memory->create(setflag,n+1,n+1,"pair:setflag");
+  for (int i = 1; i <= n; i++)
+    for (int j = i; j <= n; j++)
+      setflag[i][j] = 0;
+
+  memory->create(cutsq,n+1,n+1,"pair:cutsq");
+
+  memory->create(k_n,n+1,n+1,"pair:k_n");
+  memory->create(k_na,n+1,n+1,"pair:k_na");
+  memory->create(maxerad,n+1,"pair:maxerad");
+}
+
+/* ----------------------------------------------------------------------
+   global settings
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::settings(int narg, char **arg)
+{
+  if (narg < 5) error->all(FLERR,"Illegal pair_style command");
+
+  c_n = force->numeric(FLERR,arg[0]);
+  c_t = force->numeric(FLERR,arg[1]);
+  mu = force->numeric(FLERR,arg[2]);
+  A_ua = force->numeric(FLERR,arg[3]);
+  cut_inner = force->numeric(FLERR,arg[4]);
+}
+
+/* ----------------------------------------------------------------------
+   set coeffs for one or more type pairs
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::coeff(int narg, char **arg)
+{
+  if (narg < 4 || narg > 5)
+    error->all(FLERR,"Incorrect args for pair coefficients");
+  if (!allocated) allocate();
+
+  int ilo,ihi,jlo,jhi;
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
+
+  double k_n_one = force->numeric(FLERR,arg[2]);
+  double k_na_one = force->numeric(FLERR,arg[3]);
+
+  int count = 0;
+  for (int i = ilo; i <= ihi; i++) {
+    for (int j = MAX(jlo,i); j <= jhi; j++) {
+      k_n[i][j] = k_n_one;
+      k_na[i][j] = k_na_one;
+      setflag[i][j] = 1;
+      count++;
+    }
+  }
+
+  if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients");
+}
+
+/* ----------------------------------------------------------------------
+   init specific to this pair style
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::init_style()
+{
+  avec = (AtomVecBody *) atom->style_match("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");
+  bptr = (BodyRoundedPolyhedron *) avec->bptr;
+
+  if (comm->ghost_velocity == 0)
+    error->all(FLERR,"Pair body/rounded/polyhedron requires ghost atoms store velocity");
+
+  neighbor->request(this);
+
+  // find the maximum enclosing radius for each atom type
+
+  int i, itype;
+  double eradi;
+  int* body = atom->body;
+  int* type = atom->type;
+  int ntypes = atom->ntypes;
+  int nlocal = atom->nlocal;
+
+  if (atom->nmax > nmax) {
+    memory->destroy(dnum);
+    memory->destroy(dfirst);
+    memory->destroy(ednum);
+    memory->destroy(edfirst);
+    memory->destroy(facnum);
+    memory->destroy(facfirst);
+    memory->destroy(enclosing_radius);
+    memory->destroy(rounded_radius);
+    nmax = atom->nmax;
+    memory->create(dnum,nmax,"pair:dnum");
+    memory->create(dfirst,nmax,"pair:dfirst");
+    memory->create(ednum,nmax,"pair:ednum");
+    memory->create(edfirst,nmax,"pair:edfirst");
+    memory->create(facnum,nmax,"pair:facnum");
+    memory->create(facfirst,nmax,"pair:facfirst");
+    memory->create(enclosing_radius,nmax,"pair:enclosing_radius");
+    memory->create(rounded_radius,nmax,"pair:rounded_radius");
+  }
+
+  ndiscrete = nedge = nface = 0;
+  for (i = 0; i < nlocal; i++)
+    dnum[i] = ednum[i] = facnum[i] = 0;
+
+  double *merad = NULL;
+  memory->create(merad,ntypes+1,"pair:merad");
+  for (i = 1; i <= ntypes; i++)
+    maxerad[i] = merad[i] = 0;
+
+  int ipour;
+  for (ipour = 0; ipour < modify->nfix; ipour++)
+    if (strcmp(modify->fix[ipour]->style,"pour") == 0) break;
+  if (ipour == modify->nfix) ipour = -1;
+
+  int idep;
+  for (idep = 0; idep < modify->nfix; idep++)
+    if (strcmp(modify->fix[idep]->style,"deposit") == 0) break;
+  if (idep == modify->nfix) idep = -1;
+
+  for (i = 1; i <= ntypes; i++) {
+    merad[i] = 0.0;
+    if (ipour >= 0) {
+      itype = i;
+      merad[i] =
+        *((double *) modify->fix[ipour]->extract("radius",itype));
+    }
+    if (idep >= 0) {
+      itype = i;
+      merad[i] =
+        *((double *) modify->fix[idep]->extract("radius",itype));
+    }
+  }
+
+  for (i = 0; i < nlocal; i++) {
+    itype = type[i];
+    if (body[i] >= 0) {
+      if (dnum[i] == 0) body2space(i);
+      eradi = enclosing_radius[i];
+      if (eradi > merad[itype]) merad[itype] = eradi;
+    } else 
+      merad[itype] = 0;
+  }
+
+  MPI_Allreduce(&merad[1],&maxerad[1],ntypes,MPI_DOUBLE,MPI_MAX,world);
+
+  memory->destroy(merad);
+
+  sanity_check();
+}
+
+/* ----------------------------------------------------------------------
+   init for one type pair i,j and corresponding j,i
+------------------------------------------------------------------------- */
+
+double PairBodyRoundedPolyhedron::init_one(int i, int j)
+{
+  k_n[j][i] = k_n[i][j];
+  k_na[j][i] = k_na[i][j];
+
+  return (maxerad[i]+maxerad[j]);
+}
+
+/* ----------------------------------------------------------------------
+   convert N sub-particles in body I to space frame using current quaternion
+   store sub-particle space-frame displacements from COM in discrete list
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::body2space(int i)
+{
+  int ibonus = atom->body[i];
+  AtomVecBody::Bonus *bonus = &avec->bonus[ibonus];
+  int nsub = bptr->nsub(bonus);
+  double *coords = bptr->coords(bonus);
+  int body_num_edges = bptr->nedges(bonus);
+  double* edge_ends = bptr->edges(bonus);
+  int body_num_faces = bptr->nfaces(bonus);
+  double* face_pts = bptr->faces(bonus);
+  double eradius = bptr->enclosing_radius(bonus);
+  double rradius = bptr->rounded_radius(bonus);
+
+  // get the number of sub-particles (vertices)
+  // and the index of the first vertex of my body in the list
+
+  dnum[i] = nsub;
+  dfirst[i] = ndiscrete;
+
+  // grow the vertex list if necessary
+  // the first 3 columns are for coords, the last 3 for forces
+
+  if (ndiscrete + nsub > dmax) {
+    dmax += DELTA;
+    memory->grow(discrete,dmax,7,"pair:discrete");
+  }
+
+  double p[3][3];
+  MathExtra::quat_to_mat(bonus->quat,p);
+
+  for (int m = 0; m < nsub; m++) {
+    MathExtra::matvec(p,&coords[3*m],discrete[ndiscrete]);
+    discrete[ndiscrete][3] = 0;
+    discrete[ndiscrete][4] = 0;
+    discrete[ndiscrete][5] = 0;
+    discrete[ndiscrete][6] = 0;
+    ndiscrete++;
+  }
+
+  // get the number of edges (vertices)
+  // and the index of the first edge of my body in the list
+
+  ednum[i] = body_num_edges;
+  edfirst[i] = nedge;
+
+  // grow the edge list if necessary
+  // the first 2 columns are for vertex indices within body, the last 3 for forces
+
+  if (nedge + body_num_edges > edmax) {
+    edmax += DELTA;
+    memory->grow(edge,edmax,6,"pair:edge");
+  }
+
+  for (int m = 0; m < body_num_edges; m++) {
+    edge[nedge][0] = static_cast<int>(edge_ends[2*m+0]);
+    edge[nedge][1] = static_cast<int>(edge_ends[2*m+1]);
+    edge[nedge][2] = 0;
+    edge[nedge][3] = 0;
+    edge[nedge][4] = 0;
+    edge[nedge][5] = 0;
+    nedge++;
+  }
+
+  // get the number of faces and the index of the first face
+
+  facnum[i] = body_num_faces;
+  facfirst[i] = nface;
+
+  // grow the face list if necessary
+  // the first 3 columns are for vertex indices within body, the last 3 for forces
+
+  if (nface + body_num_faces > facmax) {
+    facmax += DELTA;
+    memory->grow(face,facmax,MAX_FACE_SIZE,"pair:face");
+  }
+
+  for (int m = 0; m < body_num_faces; m++) {
+    for (int k = 0; k < MAX_FACE_SIZE; k++)
+      face[nface][k] = static_cast<int>(face_pts[MAX_FACE_SIZE*m+k]);
+    nface++;
+  }
+
+  enclosing_radius[i] = eradius;
+  rounded_radius[i] = rradius;
+}
+
+/* ----------------------------------------------------------------------
+   Interaction between two spheres with different radii
+   according to the 2D model from Fraige et al.
+---------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::sphere_against_sphere(int ibody, int jbody,
+                       double delx, double dely, double delz, double rsq,
+                       double k_n, double k_na, double** v, double** f,
+                       int evflag)
+{
+  double rradi,rradj,contact_dist;
+  double vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3;
+  double rij,rsqinv,R,fx,fy,fz,fn[3],ft[3],fpair,shift,energy;
+  int nlocal = atom->nlocal;
+  int newton_pair = force->newton_pair;
+
+  rradi = rounded_radius[ibody];
+  rradj = rounded_radius[jbody];
+  contact_dist = rradi + rradj;
+
+  rij = sqrt(rsq);
+  R = rij - contact_dist;
+  shift = k_na * cut_inner;
+
+  energy = 0;
+
+  if (R <= 0) {           // deformation occurs
+    fpair = -k_n * R - shift;
+    energy = (0.5 * k_n * R + shift) * R;
+  } else if (R <= cut_inner) {   // not deforming but cohesive ranges overlap
+    fpair = k_na * R - shift;
+    energy = (-0.5 * k_na * R + shift) * R;
+  } else fpair = 0.0;
+
+  fx = delx*fpair/rij;
+  fy = dely*fpair/rij;
+  fz = delz*fpair/rij;
+
+  if (R <= 0) { // in contact
+
+    // relative translational velocity
+
+    vr1 = v[ibody][0] - v[jbody][0];
+    vr2 = v[ibody][1] - v[jbody][1];
+    vr3 = v[ibody][2] - v[jbody][2];
+
+    // normal component
+    
+    rsqinv = 1.0/rsq;
+    vnnr = vr1*delx + vr2*dely + vr3*delz;
+    vn1 = delx*vnnr * rsqinv;
+    vn2 = dely*vnnr * rsqinv;
+    vn3 = delz*vnnr * rsqinv;
+
+    // tangential component
+
+    vt1 = vr1 - vn1;
+    vt2 = vr2 - vn2;
+    vt3 = vr3 - vn3;
+
+    // normal friction term at contact
+
+    fn[0] = -c_n * vn1;
+    fn[1] = -c_n * vn2;
+    fn[2] = -c_n * vn3;
+
+    // tangential friction term at contact,
+    // excluding the tangential deformation term for now
+
+    ft[0] = -c_t * vt1;
+    ft[1] = -c_t * vt2;
+    ft[2] = -c_t * vt3;
+
+    fx += fn[0] + ft[0];
+    fy += fn[1] + ft[1];
+    fz += fn[2] + ft[2];
+  }
+
+  f[ibody][0] += fx;
+  f[ibody][1] += fy;
+  f[ibody][2] += fz;
+  
+  if (newton_pair || jbody < nlocal) {
+    f[jbody][0] -= fx;
+    f[jbody][1] -= fy;
+    f[jbody][2] -= fz;
+  }
+
+  if (evflag) ev_tally_xyz(ibody,jbody,nlocal,newton_pair,
+                           energy,0.0,fx,fy,fz,delx,dely,delz);
+}
+
+/* ----------------------------------------------------------------------
+   Interaction bt the faces of a polyhedron (ibody) and a sphere (jbody)
+---------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::sphere_against_face(int ibody, int jbody,
+                       double k_n, double k_na, double** x, double** v,
+                       double** f, double** torque, double** angmom,
+                       int evflag)
+{
+  int ni,nfi,inside,ifirst,iffirst,npi1,npi2,npi3,ibonus,tmp;
+  double xi1[3],xi2[3],xi3[3],ui[3],vi[3],vti[3],n[3],h[3],fn[3],ft[3],d;
+  double delx,dely,delz,rsq,rij,rsqinv,R,fx,fy,fz,fpair,shift,energy;
+  double rradi,rradj,contact_dist;
+  double vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3;
+  double *quat, *inertia;
+  AtomVecBody::Bonus *bonus;
+
+  int nlocal = atom->nlocal;
+  int newton_pair = force->newton_pair;
+
+  ifirst = dfirst[ibody];
+  iffirst = facfirst[ibody];
+  nfi = facnum[ibody];
+
+  rradi = rounded_radius[ibody];
+  rradj = rounded_radius[jbody];
+  contact_dist = rradi + rradj;
+
+  for (ni = 0; ni < nfi; ni++) {
+
+    npi1 = static_cast<int>(face[iffirst+ni][0]);
+    npi2 = static_cast<int>(face[iffirst+ni][1]);
+    npi3 = static_cast<int>(face[iffirst+ni][2]);
+
+    // compute the space-fixed coordinates for the vertices of the face
+
+    xi1[0] = x[ibody][0] + discrete[ifirst+npi1][0];
+    xi1[1] = x[ibody][1] + discrete[ifirst+npi1][1];
+    xi1[2] = x[ibody][2] + discrete[ifirst+npi1][2];
+
+    xi2[0] = x[ibody][0] + discrete[ifirst+npi2][0];
+    xi2[1] = x[ibody][1] + discrete[ifirst+npi2][1];
+    xi2[2] = x[ibody][2] + discrete[ifirst+npi2][2];
+
+    xi3[0] = x[ibody][0] + discrete[ifirst+npi3][0];
+    xi3[1] = x[ibody][1] + discrete[ifirst+npi3][1];
+    xi3[2] = x[ibody][2] + discrete[ifirst+npi3][2];
+
+    // find the normal unit vector of the face
+  
+    MathExtra::sub3(xi2, xi1, ui);
+    MathExtra::sub3(xi3, xi1, vi);
+    MathExtra::cross3(ui, vi, n);
+    MathExtra::norm3(n);
+
+    // skip if the COM of the two bodies are in the same side of the face
+
+    if (opposite_sides(n, xi1, x[ibody], x[jbody]) == 0) continue;
+
+    // find the projection of the sphere on the face
+
+    project_pt_plane(x[jbody], xi1, xi2, xi3, h, d, inside);
+
+    inside_polygon(ibody, ni, x[ibody], h, NULL, inside, tmp);
+    if (inside == 0) continue;
+
+    delx = h[0] - x[jbody][0];
+    dely = h[1] - x[jbody][1];
+    delz = h[2] - x[jbody][2];
+    rsq = delx*delx + dely*dely + delz*delz;
+    rij = sqrt(rsq);
+    R = rij - contact_dist;
+    shift = k_na * cut_inner;
+
+    energy = 0;
+
+    if (R <= 0) { // deformation occurs
+      fpair = -k_n * R - shift;
+      energy = (0.5 * k_n * R + shift) * R;
+    } else if (R <= cut_inner) { // not deforming but cohesive ranges overlap
+      fpair = k_na * R - shift;
+      energy = (-0.5 * k_na * R + shift) * R;
+    } else fpair = 0.0;
+
+    fx = delx*fpair/rij;
+    fy = dely*fpair/rij;
+    fz = delz*fpair/rij;
+
+    if (R <= 0) { // in contact
+
+      // compute the velocity of the vertex in the space-fixed frame
+
+      ibonus = atom->body[ibody];
+      bonus = &avec->bonus[ibonus];
+      quat = bonus->quat;
+      inertia = bonus->inertia;
+      total_velocity(h, x[ibody], v[ibody], angmom[ibody],
+                     inertia, quat, vti);
+
+      // relative translational velocity
+
+      vr1 = vti[0] - v[jbody][0];
+      vr2 = vti[1] - v[jbody][1];
+      vr3 = vti[2] - v[jbody][2];
+
+      // normal component
+
+      rsqinv = 1.0/rsq;
+      vnnr = vr1*delx + vr2*dely + vr3*delz;
+      vn1 = delx*vnnr * rsqinv;
+      vn2 = dely*vnnr * rsqinv;
+      vn3 = delz*vnnr * rsqinv;
+
+      // tangential component
+
+      vt1 = vr1 - vn1;
+      vt2 = vr2 - vn2;
+      vt3 = vr3 - vn3;
+
+      // normal friction term at contact
+
+      fn[0] = -c_n * vn1;
+      fn[1] = -c_n * vn2;
+      fn[2] = -c_n * vn3;
+
+      // tangential friction term at contact,
+      // excluding the tangential deformation term for now
+
+      ft[0] = -c_t * vt1;
+      ft[1] = -c_t * vt2;
+      ft[2] = -c_t * vt3;
+
+      fx += fn[0] + ft[0];
+      fy += fn[1] + ft[1];
+      fz += fn[2] + ft[2];
+    }
+
+    f[ibody][0] += fx;
+    f[ibody][1] += fy;
+    f[ibody][2] += fz;
+    sum_torque(x[ibody], h, fx, fy, fz, torque[ibody]);
+
+    if (newton_pair || jbody < nlocal) {
+      f[jbody][0] -= fx;
+      f[jbody][1] -= fy;
+      f[jbody][2] -= fz;
+    }
+
+    if (evflag) ev_tally_xyz(ibody,jbody,nlocal,newton_pair,
+                           energy,0.0,fx,fy,fz,delx,dely,delz);
+  }
+}
+
+/* ----------------------------------------------------------------------
+   Interaction bt the edges of a polyhedron (ibody) and a sphere (jbody)
+---------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::sphere_against_edge(int ibody, int jbody,
+                       double k_n, double k_na, double** x, double** v,
+                       double** f, double** torque, double** angmom,
+                       int evflag)
+{
+  int ni,nei,ifirst,iefirst,npi1,npi2,ibonus;
+  double xi1[3],xi2[3],vti[3],h[3],fn[3],ft[3],d,t;
+  double delx,dely,delz,rij,rsqinv,R,fx,fy,fz,fpair,shift,energy;
+  double rradi,rradj,contact_dist;
+  double vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3;
+  double *quat, *inertia;
+  AtomVecBody::Bonus *bonus;
+
+  int nlocal = atom->nlocal;
+  int newton_pair = force->newton_pair;
+
+  ifirst = dfirst[ibody];
+  iefirst = edfirst[ibody];
+  nei = ednum[ibody];
+
+  rradi = rounded_radius[ibody];
+  rradj = rounded_radius[jbody];
+  contact_dist = rradi + rradj;
+
+  for (ni = 0; ni < nei; ni++) {
+
+    npi1 = static_cast<int>(edge[iefirst+ni][0]);
+    npi2 = static_cast<int>(edge[iefirst+ni][1]);
+
+    // compute the space-fixed coordinates for the vertices of the face
+
+    xi1[0] = x[ibody][0] + discrete[ifirst+npi1][0];
+    xi1[1] = x[ibody][1] + discrete[ifirst+npi1][1];
+    xi1[2] = x[ibody][2] + discrete[ifirst+npi1][2];
+
+    xi2[0] = x[ibody][0] + discrete[ifirst+npi2][0];
+    xi2[1] = x[ibody][1] + discrete[ifirst+npi2][1];
+    xi2[2] = x[ibody][2] + discrete[ifirst+npi2][2];
+
+    // find the projection of the jbody's COM on the edge
+
+    project_pt_line(x[jbody], xi1, xi2, h, d, t);
+
+    if (d > contact_dist + cut_inner) continue;
+    if (t < 0 || t > 1) continue;
+
+    if (fabs(t) < EPSILON) {
+      if (static_cast<int>(discrete[ifirst+npi1][6]) == 1)
+        continue;
+      else {
+        h[0] = xi1[0];
+        h[1] = xi1[1];
+        h[2] = xi1[2];
+        discrete[ifirst+npi1][6] = 1;
+      }
+    }
+
+    if (fabs(t-1) < EPSILON) {
+      if (static_cast<int>(discrete[ifirst+npi2][6]) == 1)
+        continue;
+      else {
+        h[0] = xi2[0];
+        h[1] = xi2[1];
+        h[2] = xi2[2];
+        discrete[ifirst+npi2][6] = 1;
+      }
+    }
+
+    delx = h[0] - x[jbody][0];
+    dely = h[1] - x[jbody][1];
+    delz = h[2] - x[jbody][2];
+    rij = sqrt(delx*delx + dely*dely + delz*delz);
+    R = rij - contact_dist;
+    shift = k_na * cut_inner;
+
+    energy = 0;
+
+    if (R <= 0) {           // deformation occurs
+      fpair = -k_n * R - shift;
+      energy = (0.5 * k_n * R + shift) * R;
+    } else if (R <= cut_inner) {   // not deforming but cohesive ranges overlap
+      fpair = k_na * R - shift;
+      energy = (-0.5 * k_na * R + shift) * R;
+    } else fpair = 0.0;
+
+    fx = delx*fpair/rij;
+    fy = dely*fpair/rij;
+    fz = delz*fpair/rij;
+
+    if (R <= 0) { // in contact
+
+      // compute the velocity of the vertex in the space-fixed frame
+
+      ibonus = atom->body[ibody];
+      bonus = &avec->bonus[ibonus];
+      quat = bonus->quat;
+      inertia = bonus->inertia;
+      total_velocity(h, x[ibody], v[ibody], angmom[ibody],
+                     inertia, quat, vti);
+
+      // relative translational velocity
+
+      vr1 = vti[0] - v[jbody][0];
+      vr2 = vti[1] - v[jbody][1];
+      vr3 = vti[2] - v[jbody][2];
+
+      // normal component
+
+      vnnr = vr1*delx + vr2*dely + vr3*delz;
+      vn1 = delx*vnnr * rsqinv;
+      vn2 = dely*vnnr * rsqinv;
+      vn3 = delz*vnnr * rsqinv;
+
+      // tangential component
+
+      vt1 = vr1 - vn1;
+      vt2 = vr2 - vn2;
+      vt3 = vr3 - vn3;
+
+      // normal friction term at contact
+
+      fn[0] = -c_n * vn1;
+      fn[1] = -c_n * vn2;
+      fn[2] = -c_n * vn3;
+
+      // tangential friction term at contact, excluding the tangential deformation term
+
+      ft[0] = -c_t * vt1;
+      ft[1] = -c_t * vt2;
+      ft[2] = -c_t * vt3;
+
+      fx += fn[0] + ft[0];
+      fy += fn[1] + ft[1];
+      fz += fn[2] + ft[2];
+    }
+
+    f[ibody][0] += fx;
+    f[ibody][1] += fy;
+    f[ibody][2] += fz;
+    sum_torque(x[ibody], h, fx, fy, fz, torque[ibody]);
+
+    if (newton_pair || jbody < nlocal) {
+      f[jbody][0] -= fx;
+      f[jbody][1] -= fy;
+      f[jbody][2] -= fz;
+    }
+
+    if (evflag) ev_tally_xyz(ibody,jbody,nlocal,newton_pair,
+                           energy,0.0,fx,fy,fz,delx,dely,delz);
+  }
+
+}
+
+/* ----------------------------------------------------------------------
+   Determine the interaction mode between i's edges against j's faces
+
+   i = atom i (body i)
+   j = atom j (body j)
+   x      = atoms' coordinates
+   f      = atoms' forces
+   torque = atoms' torques
+   tag    = atoms' tags
+   contact_list = list of contacts
+   num_contacts = number of contacts between i's edges and j's faces
+   Return:
+
+---------------------------------------------------------------------- */
+
+int PairBodyRoundedPolyhedron::edge_against_face(int ibody, int jbody,
+             double k_n, double k_na, double** x, Contact* contact_list,
+             int &num_contacts, double &evdwl, double* facc)
+{
+  int ni,nei,nj,nfj,contact,interact;
+  double rradi,rradj,energy;
+
+  nei = ednum[ibody];
+  rradi = rounded_radius[ibody];
+  nfj = facnum[jbody];
+  rradj = rounded_radius[jbody];
+
+  energy = 0;
+  interact = EF_NONE;
+
+  // loop through body i's edges
+
+  for (ni = 0; ni < nei; ni++) {
+
+    // loop through body j's faces
+
+    for (nj = 0; nj < nfj; nj++) {
+
+      // 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",
+             nj, jbody, ni, ibody);
+      #endif
+
+      interact = interaction_face_to_edge(jbody, nj, x[jbody], rradj,
+                                          ibody, ni, x[ibody], rradi,
+                                          k_n, k_na, cut_inner,
+                                          contact_list, num_contacts,
+                                          energy, facc);
+    } 
+
+  } // end for looping through the edges of body i
+
+  evdwl += energy;
+
+  return interact;
+}
+
+/* ----------------------------------------------------------------------
+   Determine the interaction mode between i's edges against j's edges
+
+   i = atom i (body i)
+   j = atom j (body j)
+   x      = atoms' coordinates
+   f      = atoms' forces
+   torque = atoms' torques
+   tag    = atoms' tags
+   contact_list = list of contacts
+   num_contacts = number of contacts between i's edges and j's edges
+   Return:
+
+---------------------------------------------------------------------- */
+
+int PairBodyRoundedPolyhedron::edge_against_edge(int ibody, int jbody,
+             double k_n, double k_na, double** x, Contact* contact_list,
+             int &num_contacts, double &evdwl, double* facc)
+{
+  int ni,nei,nj,nej,contact,interact;
+  double rradi,rradj,energy;
+
+  nei = ednum[ibody];
+  rradi = rounded_radius[ibody];
+  nej = ednum[jbody];
+  rradj = rounded_radius[jbody];
+
+  energy = 0;
+  interact = EE_NONE;
+
+  // loop through body i's edges
+
+  for (ni = 0; ni < nei; ni++) {
+
+    for (nj = 0; nj < nej; nj++) {
+
+      // 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",
+             nj, jbody, ni, ibody);
+      #endif
+
+      interact = interaction_edge_to_edge(ibody, ni, x[ibody], rradi,
+                                          jbody, nj, x[jbody], rradj,
+                                          k_n, k_na, cut_inner,
+                                          contact_list, num_contacts,
+                                          energy, facc);
+    }
+
+  } // end for looping through the edges of body i
+
+  evdwl += energy;
+
+  return interact;
+}
+
+/* -------------------------------------------------------------------------
+  Compute the interaction between a face of body i and an edge from
+  another body
+  Input:
+    ibody      = body i (i.e. atom i)
+    face_index = face index of body i
+    xmi        = atom i's coordinates (body i's center of mass)
+    rounded_radius_i = rounded radius of the body i
+    jbody      = body i (i.e. atom j)
+    edge_index = coordinate of the tested edge from another body
+    xmj        = atom j's coordinates (body j's center of mass)
+    rounded_radius_j = rounded radius of the body j
+    cut_inner  = cutoff for vertex-vertex and vertex-edge interaction
+  Output:
+    d          = Distance from a point x0 to an edge
+    hi         = coordinates of the projection of x0 on the edge
+
+  contact      = 0 no contact between the queried edge and the face
+                 1 contact detected
+  return
+    INVALID if the face index is invalid
+    NONE    if there is no interaction
+------------------------------------------------------------------------- */
+
+int PairBodyRoundedPolyhedron::interaction_face_to_edge(int ibody,
+                                                int face_index,
+                                                double *xmi,
+                                                double rounded_radius_i,
+                                                int jbody,
+                                                int edge_index,
+                                                double *xmj,
+                                                double rounded_radius_j,
+                                                double k_n,
+                                                double k_na,
+                                                double cut_inner,
+                                                Contact* contact_list,
+                                                int &num_contacts,
+                                                double &energy,
+                                                double* facc)
+{
+  if (face_index >= facnum[ibody]) return EF_INVALID;
+
+  int ifirst,iffirst,jfirst,npi1,npi2,npi3;
+  int jefirst,npj1,npj2;
+  double xi1[3],xi2[3],xi3[3],xpj1[3],xpj2[3],ui[3],vi[3],n[3];
+
+  double** x = atom->x;
+  double** v = atom->v;
+  double** f = atom->f;
+  double** torque = atom->torque;
+  double** angmom = atom->angmom;
+
+  ifirst = dfirst[ibody];
+  iffirst = facfirst[ibody];
+  npi1 = static_cast<int>(face[iffirst+face_index][0]);
+  npi2 = static_cast<int>(face[iffirst+face_index][1]);
+  npi3 = static_cast<int>(face[iffirst+face_index][2]);
+
+  // compute the space-fixed coordinates for the vertices of the face
+
+  xi1[0] = xmi[0] + discrete[ifirst+npi1][0];
+  xi1[1] = xmi[1] + discrete[ifirst+npi1][1];
+  xi1[2] = xmi[2] + discrete[ifirst+npi1][2];
+
+  xi2[0] = xmi[0] + discrete[ifirst+npi2][0];
+  xi2[1] = xmi[1] + discrete[ifirst+npi2][1];
+  xi2[2] = xmi[2] + discrete[ifirst+npi2][2];
+
+  xi3[0] = xmi[0] + discrete[ifirst+npi3][0];
+  xi3[1] = xmi[1] + discrete[ifirst+npi3][1];
+  xi3[2] = xmi[2] + discrete[ifirst+npi3][2];
+
+  // find the normal unit vector of the face, ensure it point outward of the body
+  
+  MathExtra::sub3(xi2, xi1, ui);
+  MathExtra::sub3(xi3, xi1, vi);
+  MathExtra::cross3(ui, vi, n);
+  MathExtra::norm3(n);
+
+  double xc[3], dot, ans[3];
+  xc[0] = (xi1[0] + xi2[0] + xi3[0])/3.0;
+  xc[1] = (xi1[1] + xi2[1] + xi3[1])/3.0;
+  xc[2] = (xi1[2] + xi2[2] + xi3[2])/3.0;
+  MathExtra::sub3(xc, xmi, ans);
+  dot = MathExtra::dot3(ans, n);
+  if (dot < 0) MathExtra::negate3(n);
+
+  // two ends of the edge from body j
+
+  jfirst = dfirst[jbody];
+  jefirst = edfirst[jbody];
+  npj1 = static_cast<int>(edge[jefirst+edge_index][0]);
+  npj2 = static_cast<int>(edge[jefirst+edge_index][1]);
+
+  xpj1[0] = xmj[0] + discrete[jfirst+npj1][0];
+  xpj1[1] = xmj[1] + discrete[jfirst+npj1][1];
+  xpj1[2] = xmj[2] + discrete[jfirst+npj1][2];
+
+  xpj2[0] = xmj[0] + discrete[jfirst+npj2][0];
+  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
+
+  if (opposite_sides(n, xi1, xmi, xpj1) == 0 &&
+      opposite_sides(n, xi1, xmi, xpj2) == 0)
+    return EF_NONE;
+
+  // determine the intersection of the edge to the face
+
+  double hi1[3], hi2[3], d1, d2, contact_dist, shift;
+  int inside1 = 0;
+  int inside2 = 0;
+
+  // 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);
+
+  inside_polygon(ibody, face_index, xmi, hi1, hi2, inside1, inside2);
+
+  contact_dist = rounded_radius_i + rounded_radius_j;
+  shift = k_na * cut_inner;
+
+  // both endpoints are on the same side of, or parallel to, the face
+  // and both are out of the interaction zone
+
+  if (interact == EF_SAME_SIDE_OF_FACE || interact == EF_PARALLEL) {
+
+    if (d1 > contact_dist + cut_inner && d2 > contact_dist + cut_inner)
+      return EF_NONE;
+
+    int num_outside = 0;
+    int jflag = 1;
+
+    #ifdef _POLYHEDRON_DEBUG
+    if (interact == EF_SAME_SIDE_OF_FACE) 
+      printf(" - same side of face\n");
+    else if (interact == EF_PARALLEL) 
+      printf(" - parallel\n");
+    printf("     face: xi1 (%f %f %f) xi2 (%f %f %f) xi3 (%f %f %f)\n",
+      xi1[0], xi1[1], xi1[2], xi2[0], xi2[1], xi2[2], xi3[0], xi3[1], xi3[2]);
+    printf("     edge: xpj1 (%f %f %f) xpj2 (%f %f %f)\n",
+      xpj1[0], xpj1[1], xpj1[2], xpj2[0], xpj2[1], xpj2[2]);
+    #endif
+
+    // xpj1 is in the interaction zone
+    // and its projection on the face is inside the triangle
+    // compute vertex-face interaction and accumulate force/torque to both bodies
+
+    if (d1 <= contact_dist + cut_inner) {
+      if (inside1) {
+        if (static_cast<int>(discrete[jfirst+npj1][6]) == 0) {
+          pair_force_and_torque(jbody, ibody, xpj1, hi1, d1, contact_dist,
+                                k_n, k_na, shift, x, v, f, torque, angmom,
+                                jflag, energy, facc);
+          #ifdef _POLYHEDRON_DEBUG
+          printf(" - compute pair force between vertex %d from edge %d of body %d "
+                 "with face %d of body %d: d1 = %f\n",
+            npj1, edge_index, jbody, face_index, ibody, d1);
+          #endif
+
+          if (d1 <= contact_dist) {
+            // store the contact info
+            contact_list[num_contacts].ibody = ibody;
+            contact_list[num_contacts].jbody = jbody;
+            contact_list[num_contacts].xi[0] = hi1[0];
+            contact_list[num_contacts].xi[1] = hi1[1];
+            contact_list[num_contacts].xi[2] = hi1[2];
+            contact_list[num_contacts].xj[0] = xpj1[0];
+            contact_list[num_contacts].xj[1] = xpj1[1];
+            contact_list[num_contacts].xj[2] = xpj1[2];
+            contact_list[num_contacts].type = 0;
+            contact_list[num_contacts].separation = d1 - contact_dist;
+            num_contacts++;
+          }
+
+          discrete[jfirst+npj1][6] = 1;
+        }
+      } else {
+        num_outside++;
+      }
+    } 
+
+    // xpj2 is in the interaction zone 
+    // and its projection on the face is inside the triangle
+    // compute vertex-face interaction and accumulate force/torque to both bodies
+
+    if (d2 <= contact_dist + cut_inner) {
+      if (inside2) {
+        if (static_cast<int>(discrete[jfirst+npj2][6]) == 0) {
+          pair_force_and_torque(jbody, ibody, xpj2, hi2, d2, contact_dist,
+                                k_n, k_na, shift, x, v, f, torque, angmom,
+                                jflag, energy, facc);
+          #ifdef _POLYHEDRON_DEBUG
+          printf(" - compute pair force between vertex %d from edge %d of body %d "
+                 "with face %d of body %d: d2 = %f\n", 
+                 npj2, edge_index, jbody, face_index, ibody, d2);
+          #endif
+
+          if (d2 <= contact_dist) {
+            // store the contact info
+            contact_list[num_contacts].ibody = ibody;
+            contact_list[num_contacts].jbody = jbody;
+            contact_list[num_contacts].xi[0] = hi2[0];
+            contact_list[num_contacts].xi[1] = hi2[1];
+            contact_list[num_contacts].xi[2] = hi2[2];
+            contact_list[num_contacts].xj[0] = xpj2[0];
+            contact_list[num_contacts].xj[1] = xpj2[1];
+            contact_list[num_contacts].xj[2] = xpj2[2];
+            contact_list[num_contacts].type = 0;
+            contact_list[num_contacts].separation = d2 - contact_dist;
+            num_contacts++;
+          }
+          discrete[jfirst+npj2][6] = 1;
+        }
+      } else {
+        num_outside++;
+      }
+    }
+
+    // both ends have projection outside of the face
+    // compute interaction between the edge with the three edges of the face
+
+    if (num_outside == 2) {
+
+      #ifdef _POLYHEDRON_DEBUG
+      printf(" - outside = 2\n");
+      printf(" - compute pair force between edge %d of body %d "
+             "with 3 edges of face %d of body %d\n",
+        edge_index, jbody, face_index, ibody);
+      #endif
+
+      interact = EF_INTERSECT_OUTSIDE;
+
+    }
+
+  } else if (interact == EF_INTERSECT_OUTSIDE) {
+
+    // compute interaction between the edge with the three edges of the face
+
+    #ifdef _POLYHEDRON_DEBUG
+    printf(" - intersect outside triangle\n"); 
+    printf(" - compute pair force between edge %d of body %d "
+           "with face %d of body %d\n", edge_index, jbody, face_index, ibody);
+    printf("     face: xi1 (%f %f %f) xi2 (%f %f %f) xi3 (%f %f %f)\n",
+      xi1[0], xi1[1], xi1[2], xi2[0], xi2[1], xi2[2], xi3[0], xi3[1], xi3[2]);
+    printf("     edge: xpj1 (%f %f %f) xpj2 (%f %f %f)\n",
+      xpj1[0], xpj1[1], xpj1[2], xpj2[0], xpj2[1], xpj2[2]);
+
+    #endif
+  } else if (interact == EF_INTERSECT_INSIDE) {
+
+  }
+
+  return interact;
+}
+
+/* -------------------------------------------------------------------------
+  Compute the distance between an edge of body i and an edge from
+  another body
+  Input:
+    ibody      = body i (i.e. atom i)
+    face_index = face index of body i
+    xmi        = atom i's coordinates (body i's center of mass)
+    rounded_radius_i = rounded radius of the body i
+    jbody      = body i (i.e. atom j)
+    edge_index = coordinate of the tested edge from another body
+    xmj        = atom j's coordinates (body j's center of mass)
+    rounded_radius_j = rounded radius of the body j
+    cut_inner  = cutoff for vertex-vertex and vertex-edge interaction
+  Output:
+    d          = Distance from a point x0 to an edge
+    hi         = coordinates of the projection of x0 on the edge
+
+  contact      = 0 no contact between the queried edge and the face
+                 1 contact detected
+  return
+    INVALID if the face index is invalid
+    NONE    if there is no interaction
+------------------------------------------------------------------------- */
+
+int PairBodyRoundedPolyhedron::interaction_edge_to_edge(int ibody,
+                                                int edge_index_i,
+                                                double *xmi,
+                                                double rounded_radius_i,
+                                                int jbody,
+                                                int edge_index_j,
+                                                double *xmj,
+                                                double rounded_radius_j,
+                                                double k_n,
+                                                double k_na,
+                                                double cut_inner,
+                                                Contact* contact_list,
+                                                int &num_contacts,
+                                                double &energy,
+                                                double* facc)
+{
+  int ifirst,iefirst,jfirst,jefirst,npi1,npi2,npj1,npj2,interact;
+  double xi1[3],xi2[3],xpj1[3],xpj2[3];
+  double r,t1,t2,h1[3],h2[3];
+  double contact_dist, shift;
+
+  double** x = atom->x;
+  double** v = atom->v;
+  double** f = atom->f;
+  double** torque = atom->torque;
+  double** angmom = atom->angmom;
+
+  ifirst = dfirst[ibody];
+  iefirst = edfirst[ibody];
+  npi1 = static_cast<int>(edge[iefirst+edge_index_i][0]);
+  npi2 = static_cast<int>(edge[iefirst+edge_index_i][1]);
+
+  // compute the space-fixed coordinates for the edge ends
+
+  xi1[0] = xmi[0] + discrete[ifirst+npi1][0];
+  xi1[1] = xmi[1] + discrete[ifirst+npi1][1];
+  xi1[2] = xmi[2] + discrete[ifirst+npi1][2];
+
+  xi2[0] = xmi[0] + discrete[ifirst+npi2][0];
+  xi2[1] = xmi[1] + discrete[ifirst+npi2][1];
+  xi2[2] = xmi[2] + discrete[ifirst+npi2][2];
+
+  // two ends of the edge from body j
+
+  jfirst = dfirst[jbody];
+  jefirst = edfirst[jbody];
+  npj1 = static_cast<int>(edge[jefirst+edge_index_j][0]);
+  npj2 = static_cast<int>(edge[jefirst+edge_index_j][1]);
+
+  xpj1[0] = xmj[0] + discrete[jfirst+npj1][0];
+  xpj1[1] = xmj[1] + discrete[jfirst+npj1][1];
+  xpj1[2] = xmj[2] + discrete[jfirst+npj1][2];
+
+  xpj2[0] = xmj[0] + discrete[jfirst+npj2][0];
+  xpj2[1] = xmj[1] + discrete[jfirst+npj2][1];
+  xpj2[2] = xmj[2] + discrete[jfirst+npj2][2];
+
+  contact_dist = rounded_radius_i + rounded_radius_j;
+  shift = k_na * cut_inner;
+
+  int jflag = 1;
+  distance_bt_edges(xpj1, xpj2, xi1, xi2, h1, h2, t1, t2, r);
+
+  #ifdef _POLYHEDRON_DEBUG
+  double ui[3],uj[3];
+  MathExtra::sub3(xi1,xi2,ui);
+  MathExtra::norm3(ui);
+  MathExtra::sub3(xpj1,xpj2,uj);
+  MathExtra::norm3(uj);
+  double dot = MathExtra::dot3(ui, uj);
+  printf("  edge npi1 = %d (%f %f %f); npi2 = %d (%f %f %f) vs."
+         "  edge npj1 = %d (%f %f %f); npj2 = %d (%f %f %f): "
+         "t1 = %f; t2 = %f; r = %f; dot = %f\n",
+    npi1, xi1[0], xi1[1], xi1[2], npi2, xi2[0], xi2[1], xi2[2], 
+    npj1, xpj1[0], xpj1[1], xpj1[2], npj2, xpj2[0], xpj2[1], xpj2[2],
+    t1, t2, r, dot);
+  #endif
+
+  interact = EE_NONE;
+
+  // singularity case, ignore interactions
+
+  if (r < EPSILON) return interact;
+
+  // include the vertices for interactions
+
+  if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1 &&
+      r < contact_dist + cut_inner) {
+    pair_force_and_torque(jbody, ibody, h1, h2, r, contact_dist,
+                          k_n, k_na, shift, x, v, f, torque, angmom,
+                          jflag, energy, facc);
+
+    interact = EE_INTERACT;
+    if (r <= contact_dist) {
+      // store the contact info
+      contact_list[num_contacts].ibody = ibody;
+      contact_list[num_contacts].jbody = jbody;
+      contact_list[num_contacts].xi[0] = h2[0];
+      contact_list[num_contacts].xi[1] = h2[1];
+      contact_list[num_contacts].xi[2] = h2[2];
+      contact_list[num_contacts].xj[0] = h1[0];
+      contact_list[num_contacts].xj[1] = h1[1];
+      contact_list[num_contacts].xj[2] = h1[2];
+      contact_list[num_contacts].type = 1;
+      contact_list[num_contacts].separation = r - contact_dist;
+      num_contacts++;
+    }
+  } else {
+
+  }
+
+  return interact;
+}
+
+/* ----------------------------------------------------------------------
+  Compute forces and torques between two bodies caused by the interaction
+  between a pair of points on either bodies (similar to sphere-sphere)
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::pair_force_and_torque(int ibody, int jbody,
+                 double* pi, double* pj, double r, double contact_dist,
+                 double k_n, double k_na, double shift, double** x,
+                 double** v, double** f, double** torque, double** angmom,
+                 int jflag, double& energy, double* facc)
+{
+  double delx,dely,delz,R,fx,fy,fz,fpair;
+
+  delx = pi[0] - pj[0];
+  dely = pi[1] - pj[1];
+  delz = pi[2] - pj[2];
+  R = r - contact_dist; 
+  if (R <= 0) {                // deformation occurs
+    fpair = -k_n * R - shift;
+    energy += (0.5 * k_n * R + shift) * R;
+  } else if (R <= cut_inner) { // not deforming but cohesive ranges overlap
+    fpair = k_na * R - shift;
+    energy += (-0.5 * k_na * R + shift) * R;
+  } else fpair = 0.0;
+
+  fx = delx*fpair/r;
+  fy = dely*fpair/r;
+  fz = delz*fpair/r;
+
+  #ifdef _POLYHEDRON_DEBUG
+  printf("  - R = %f; r = %f; k_na = %f; shift = %f; fpair = %f;"
+         " energy = %f; jflag = %d\n", R, r, k_na, shift, fpair,
+         energy, jflag);
+  #endif
+
+  if (R <= 0) {
+
+    // contact: accumulate normal and tangential contact force components
+
+    contact_forces(ibody, jbody, pi, pj, delx, dely, delz, fx, fy, fz,
+                   x, v, angmom, f, torque, facc);
+  } else {
+
+    // accumulate force and torque to both bodies directly
+
+    f[ibody][0] += fx;
+    f[ibody][1] += fy;
+    f[ibody][2] += fz;
+    sum_torque(x[ibody], pi, fx, fy, fz, torque[ibody]);
+
+    facc[0] += fx; facc[1] += fy; facc[2] += fz;
+
+    if (jflag) {
+      f[jbody][0] -= fx;
+      f[jbody][1] -= fy;
+      f[jbody][2] -= fz;
+      sum_torque(x[jbody], pj, -fx, -fy, -fz, torque[jbody]);
+    }
+  }
+}
+
+/* ----------------------------------------------------------------------
+  Compute contact forces between two bodies
+  modify the force stored at the vertex and edge in contact by j_a
+  sum forces and torque to the corresponding bodies
+  fx,fy,fz = unscaled cohesive forces
+  fn = normal friction component
+  ft = tangential friction component (-c_t * v_t)
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::contact_forces(int ibody, int jbody,
+  double *xi, double *xj, double delx, double dely, double delz,
+  double fx, double fy, double fz, double** x, double** v, double** angmom,
+  double** f, double** torque, double* facc)
+{
+  int ibonus,jbonus;
+  double rsq,rsqinv,vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3;
+  double fn[3],ft[3],vi[3],vj[3];
+  double *quat, *inertia;
+  AtomVecBody::Bonus *bonus;
+
+  // compute the velocity of the vertex in the space-fixed frame
+
+  ibonus = atom->body[ibody];
+  bonus = &avec->bonus[ibonus];
+  quat = bonus->quat;
+  inertia = bonus->inertia;
+  total_velocity(xi, x[ibody], v[ibody], angmom[ibody],
+                 inertia, quat, vi);
+
+  // compute the velocity of the point on the edge in the space-fixed frame
+
+  jbonus = atom->body[jbody];
+  bonus = &avec->bonus[jbonus];
+  quat = bonus->quat;
+  inertia = bonus->inertia;
+  total_velocity(xj, x[jbody], v[jbody], angmom[jbody],
+                 inertia, quat, vj);
+
+  // vector pointing from the contact point on ibody to that on jbody
+
+  rsq = delx*delx + dely*dely + delz*delz;
+  rsqinv = 1.0/rsq;
+
+  // relative translational velocity
+
+  vr1 = vi[0] - vj[0];
+  vr2 = vi[1] - vj[1];
+  vr3 = vi[2] - vj[2];
+
+  // normal component
+
+  vnnr = vr1*delx + vr2*dely + vr3*delz;
+  vn1 = delx*vnnr * rsqinv;
+  vn2 = dely*vnnr * rsqinv;
+  vn3 = delz*vnnr * rsqinv;
+
+  // tangential component
+
+  vt1 = vr1 - vn1;
+  vt2 = vr2 - vn2;
+  vt3 = vr3 - vn3;
+
+  // normal friction term at contact
+
+  fn[0] = -c_n * vn1;
+  fn[1] = -c_n * vn2;
+  fn[2] = -c_n * vn3;
+
+  // tangential friction term at contact
+  // excluding the tangential deformation term for now
+
+  ft[0] = -c_t * vt1;
+  ft[1] = -c_t * vt2;
+  ft[2] = -c_t * vt3;
+
+  // cohesive forces will be scaled by j_a after contact area is computed
+  // mu * fne = tangential friction deformation during gross sliding
+  // see Eq. 4, Fraige et al.
+
+  fx = fn[0] + ft[0] + mu * fx;
+  fy = fn[1] + ft[1] + mu * fy;
+  fz = fn[2] + ft[2] + mu * fz;
+
+  f[ibody][0] += fx;
+  f[ibody][1] += fy;
+  f[ibody][2] += fz;
+  sum_torque(x[ibody], xi, fx, fy, fz, torque[ibody]);
+
+  f[jbody][0] -= fx;
+  f[jbody][1] -= fy;
+  f[jbody][2] -= fz;
+  sum_torque(x[jbody], xj, -fx, -fy, -fz, torque[jbody]);
+
+  facc[0] += fx; facc[1] += fy; facc[2] += fz;
+
+  #ifdef _POLYHEDRON_DEBUG
+  printf("contact ibody = %d: f = %f %f %f; torque = %f %f %f\n", ibody,
+     f[ibody][0], f[ibody][1], f[ibody][2],
+     torque[ibody][0], torque[ibody][1], torque[ibody][2]);
+  printf("contact jbody = %d: f = %f %f %f; torque = %f %f %f\n", jbody,
+     f[jbody][0], f[jbody][1], f[jbody][2],
+     torque[jbody][0], torque[jbody][1], torque[jbody][2]);
+  #endif
+}
+
+/* ----------------------------------------------------------------------
+  Rescale the forces and torques for all the contacts
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::rescale_cohesive_forces(double** x,
+     double** f, double** torque, Contact* contact_list, int &num_contacts,
+     double contact_area, double k_n, double k_na, double* facc)
+{
+  int m,ibody,jbody;
+  double delx,dely,delz,fx,fy,fz,R,fpair,r,shift;
+  double j_a = contact_area / (num_contacts * A_ua);
+  if (j_a < 1.0) j_a = 1.0;
+
+  shift = k_na * cut_inner;
+
+  for (m = 0; m < num_contacts; m++) {
+    ibody = contact_list[m].ibody;
+    jbody = contact_list[m].jbody;
+
+    delx = contact_list[m].xi[0] - contact_list[m].xj[0];
+    dely = contact_list[m].xi[1] - contact_list[m].xj[1];
+    delz = contact_list[m].xi[2] - contact_list[m].xj[2];
+    r = sqrt(delx*delx + dely*dely + delz*delz);
+    R = contact_list[m].separation; 
+    if (R <= 0) {                // deformation occurs
+      fpair = -k_n * R - shift;
+    } else if (R <= cut_inner) { // not deforming but cohesive ranges overlap
+      fpair = k_na * R - shift;
+    } else fpair = 0.0;
+
+    fpair *= j_a;
+    fx = delx*fpair/r;
+    fy = dely*fpair/r;
+    fz = delz*fpair/r;
+
+    f[ibody][0] += fx;
+    f[ibody][1] += fy;
+    f[ibody][2] += fz;
+    sum_torque(x[ibody], contact_list[m].xi, fx, fy, fz, torque[ibody]);
+
+    f[jbody][0] -= fx;
+    f[jbody][1] -= fy;
+    f[jbody][2] -= fz;
+    sum_torque(x[jbody], contact_list[m].xj, -fx, -fy, -fz, torque[jbody]);
+
+    facc[0] += fx; facc[1] += fy; facc[2] += fz;
+  }
+}
+
+/* ----------------------------------------------------------------------
+  Accumulate torque to body from the force f=(fx,fy,fz) acting at point x
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::sum_torque(double* xm, double *x, double fx,
+                                      double fy, double fz, double* torque)
+{
+  double rx = x[0] - xm[0];
+  double ry = x[1] - xm[1];
+  double rz = x[2] - xm[2];
+  double tx = ry * fz - rz * fy;
+  double ty = rz * fx - rx * fz;
+  double tz = rx * fy - ry * fx;
+  torque[0] += tx;
+  torque[1] += ty;
+  torque[2] += tz;
+}
+
+/* ----------------------------------------------------------------------
+  Test if two points a and b are in opposite sides of a plane defined by
+  a normal vector n and a point x0
+------------------------------------------------------------------------- */
+
+int PairBodyRoundedPolyhedron::opposite_sides(double* n, double* x0,
+                                           double* a, double* b)
+{
+  double m_a = n[0]*(a[0] - x0[0])+n[1]*(a[1] - x0[1])+n[2]*(a[2] - x0[2]);
+  double m_b = n[0]*(b[0] - x0[0])+n[1]*(b[1] - x0[1])+n[2]*(b[2] - x0[2]);
+  // equal to zero when either a or b is on the plane
+  if (m_a * m_b <= 0)
+    return 1;
+  else
+    return 0;
+}
+
+/* ----------------------------------------------------------------------
+  Test if a line segment defined by two points a and b intersects with
+  a triangle defined by three points x1, x2 and x3
+------------------------------------------------------------------------- */
+
+int PairBodyRoundedPolyhedron::edge_face_intersect(double* x1, double* x2,
+               double* x3, double* a, double* b, double* h_a, double* h_b,
+               double& d_a, double& d_b, int& inside_a, int& inside_b)
+{
+  double s[3], u[3], v[3], n[3];
+
+  // line director
+
+  MathExtra::sub3(b, a, s);
+
+  // plane normal vector
+
+  MathExtra::sub3(x2, x1, u);
+  MathExtra::sub3(x3, x1, v);
+  MathExtra::cross3(u, v, n);
+  MathExtra::norm3(n);
+
+  // find the projection of a and b to the plane and the corresponding distances
+
+  project_pt_plane(a, x1, x2, x3, h_a, d_a, inside_a);
+
+  project_pt_plane(b, x1, x2, x3, h_b, d_b, inside_b);
+
+  // check if the line segment is parallel to the plane
+
+  double dot = MathExtra::dot3(s, n);
+  if (fabs(dot) < EPSILON) return EF_PARALLEL;
+
+  // solve for the intersection between the line and the plane
+
+  double m[3][3], invm[3][3], p[3], ans[3];
+  m[0][0] = -s[0];
+  m[0][1] = u[0];
+  m[0][2] = v[0];
+
+  m[1][0] = -s[1];
+  m[1][1] = u[1];
+  m[1][2] = v[1];
+
+  m[2][0] = -s[2];
+  m[2][1] = u[2];
+  m[2][2] = v[2];
+
+  MathExtra::sub3(a, x1, p);
+  MathExtra::invert3(m, invm);
+  MathExtra::matvec(invm, p, ans);
+
+  // p is reused for the intersection point
+  // s = b - a
+
+  double t = ans[0];
+  p[0] = a[0] + s[0] * t;
+  p[1] = a[1] + s[1] * t;
+  p[2] = a[2] + s[2] * t;
+
+  // check if p is inside the triangle, excluding the edges and vertices
+  // the edge-edge and edge-vertices are handled separately
+
+  int inside = 0;
+  if (ans[1] > 0 && ans[2] > 0 && ans[1] + ans[2] < 1)
+    inside = 1;
+
+  int interact;
+  if (t < 0 || t > 1) {
+    interact = EF_SAME_SIDE_OF_FACE;
+  } else {
+    if (inside == 1) 
+      interact = EF_INTERSECT_INSIDE;
+    else
+      interact = EF_INTERSECT_OUTSIDE;
+  }
+  
+  return interact;
+}
+
+/* ----------------------------------------------------------------------
+  Find the projection of q on the plane defined by point p and the normal
+  unit vector n: q_proj = q - dot(q - p, n) * n
+  and the distance d from q to the plane
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::project_pt_plane(const double* q,
+                                        const double* p, const double* n,
+                                        double* q_proj, double &d)
+{
+  double dot, ans[3], n_p[3];
+  n_p[0] = n[0]; n_p[1] = n[1]; n_p[2] = n[2];
+  MathExtra::sub3(q, p, ans);
+  dot = MathExtra::dot3(ans, n_p);
+  MathExtra::scale3(dot, n_p);
+  MathExtra::sub3(q, n_p, q_proj);
+  MathExtra::sub3(q, q_proj, ans);
+  d = MathExtra::len3(ans);
+}
+
+/* ----------------------------------------------------------------------
+  Check if points q1 and q2 are inside a convex polygon, i.e. a face of
+  a polyhedron
+    ibody       = atom i's index
+    face_index  = face index of the body
+    xmi         = atom i's coordinates
+    q1          = tested point on the face (e.g. the projection of a point)
+    q2          = another point (can be NULL) for face-edge intersection
+  Output:
+    inside1     = 1 if q1 is inside the polygon, 0 otherwise
+    inside2     = 1 if q2 is inside the polygon, 0 otherwise
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::inside_polygon(int ibody, int face_index,
+                            double* xmi, const double* q1, const double* q2,
+                            int& inside1, int& inside2)
+
+{
+  int i,n,ifirst,iffirst,npi1,npi2;
+  double xi1[3],xi2[3],u[3],v[3],costheta,anglesum1,anglesum2,magu,magv;
+
+  ifirst = dfirst[ibody];
+  iffirst = facfirst[ibody];
+  anglesum1 = anglesum2 = 0;;
+  for (i = 0; i < MAX_FACE_SIZE; i++) {
+    npi1 = static_cast<int>(face[iffirst+face_index][i]);
+    if (npi1 < 0) break;
+    n = i + 1;
+    if (n <= MAX_FACE_SIZE - 1) {
+      npi2 = static_cast<int>(face[iffirst+face_index][n]);
+      if (npi2 < 0) npi2 = static_cast<int>(face[iffirst+face_index][0]);
+    } else {
+      npi2 = static_cast<int>(face[iffirst+face_index][0]);
+    }
+
+    xi1[0] = xmi[0] + discrete[ifirst+npi1][0];
+    xi1[1] = xmi[1] + discrete[ifirst+npi1][1];
+    xi1[2] = xmi[2] + discrete[ifirst+npi1][2];
+
+    xi2[0] = xmi[0] + discrete[ifirst+npi2][0];
+    xi2[1] = xmi[1] + discrete[ifirst+npi2][1];
+    xi2[2] = xmi[2] + discrete[ifirst+npi2][2];
+
+    MathExtra::sub3(xi1,q1,u);
+    MathExtra::sub3(xi2,q1,v);
+    magu = MathExtra::len3(u);
+    magv = MathExtra::len3(v);
+
+    // the point is at either vertices
+
+    if (magu * magv < EPSILON) inside1 = 1;
+    else {
+      costheta = MathExtra::dot3(u,v)/(magu*magv);
+      anglesum1 += acos(costheta);
+    }
+
+    if (q2 != NULL) {
+      MathExtra::sub3(xi1,q2,u);
+      MathExtra::sub3(xi2,q2,v);
+      magu = MathExtra::len3(u);
+      magv = MathExtra::len3(v);
+      if (magu * magv < EPSILON) inside2 = 1;
+      else {
+        costheta = MathExtra::dot3(u,v)/(magu*magv);
+        anglesum2 += acos(costheta);
+      }
+    }
+  }
+
+  if (fabs(anglesum1 - MY_2PI) < EPSILON) inside1 = 1;
+  else inside1 = 0;
+
+  if (q2 != NULL) {
+    if (fabs(anglesum2 - MY_2PI) < EPSILON) inside2 = 1;
+    else inside2 = 0;
+  }
+}
+
+/* ----------------------------------------------------------------------
+  Find the projection of q on the plane defined by 3 points x1, x2 and x3
+  returns the distance d from q to the plane and whether the projected
+  point is inside the triangle defined by (x1, x2, x3)
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::project_pt_plane(const double* q,
+      const double* x1, const double* x2, const double* x3, double* q_proj,
+      double &d, int& inside)
+{
+  double u[3],v[3],n[3];
+
+  // plane normal vector
+
+  MathExtra::sub3(x2, x1, u);
+  MathExtra::sub3(x3, x1, v);
+  MathExtra::cross3(u, v, n);
+  MathExtra::norm3(n);
+
+  // solve for the intersection between the line and the plane
+
+  double m[3][3], invm[3][3], p[3], ans[3];
+  m[0][0] = -n[0];
+  m[0][1] = u[0];
+  m[0][2] = v[0];
+
+  m[1][0] = -n[1];
+  m[1][1] = u[1];
+  m[1][2] = v[1];
+
+  m[2][0] = -n[2];
+  m[2][1] = u[2];
+  m[2][2] = v[2];
+
+  MathExtra::sub3(q, x1, p);
+  MathExtra::invert3(m, invm);
+  MathExtra::matvec(invm, p, ans);
+
+  double t = ans[0];
+  q_proj[0] = q[0] + n[0] * t;
+  q_proj[1] = q[1] + n[1] * t;
+  q_proj[2] = q[2] + n[2] * t;
+
+  // check if the projection point is inside the triangle
+  // exclude the edges and vertices 
+  // edge-sphere and sphere-sphere interactions are handled separately
+
+  inside = 0;
+  if (ans[1] > 0 && ans[2] > 0 && ans[1] + ans[2] < 1) {
+    inside = 1;
+  }
+
+  // distance from q to q_proj
+
+  MathExtra::sub3(q, q_proj, ans);
+  d = MathExtra::len3(ans);
+}
+
+/* ---------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::project_pt_line(const double* q,
+     const double* xi1, const double* xi2, double* h, double& d, double& t)
+{
+  double u[3],v[3],r[3],s;
+
+  MathExtra::sub3(xi2, xi1, u);
+  MathExtra::norm3(u);
+  MathExtra::sub3(q, xi1, v);
+  
+  s = MathExtra::dot3(u, v);
+  h[0] = xi1[0] + s * u[0];
+  h[1] = xi1[1] + s * u[1];
+  h[2] = xi1[2] + s * u[2];
+
+  MathExtra::sub3(q, h, r);
+  d = MathExtra::len3(r);
+
+  if (fabs(xi2[0] - xi1[0]) > 0)
+    t = (h[0] - xi1[0])/(xi2[0] - xi1[0]);
+  else if (fabs(xi2[1] - xi1[1]) > 0)
+    t = (h[1] - xi1[1])/(xi2[1] - xi1[1]);
+  else if (fabs(xi2[2] - xi1[2]) > 0)
+    t = (h[2] - xi1[2])/(xi2[2] - xi1[2]);
+}
+
+/* ---------------------------------------------------------------------- 
+  compute the shortest distance between two edges (line segments)
+  x1, x2: two endpoints of the first edge
+  x3, x4: two endpoints of the second edge
+  h1: the end point of the shortest segment perpendicular to both edges 
+      on the line (x1;x2)
+  h2: the end point of the shortest segment perpendicular to both edges 
+      on the line (x3;x4)
+  t1: fraction of h1 in the segment (x1,x2)
+  t2: fraction of h2 in the segment (x3,x4)
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::distance_bt_edges(const double* x1,
+                  const double* x2, const double* x3, const double* x4,
+                  double* h1, double* h2, double& t1, double& t2, double& r)
+{
+  double u[3],v[3],n[3],dot;
+
+  // set the default returned values
+
+  t1 = -2;
+  t2 = 2;
+  r = 0;
+
+  // find the edge unit directors and their dot product
+
+  MathExtra::sub3(x2, x1, u);
+  MathExtra::norm3(u);
+  MathExtra::sub3(x4, x3, v);
+  MathExtra::norm3(v);
+  dot = MathExtra::dot3(u,v);
+  dot = fabs(dot);
+
+  // check if two edges are parallel
+  // find the two ends of the overlapping segment, if any
+
+  if (fabs(dot - 1.0) < EPSILON) {
+
+    double s1,s2,x13[3],x23[3],x13h[3];
+    double t13,t23,t31,t41,x31[3],x41[3];
+    
+    MathExtra::sub3(x1,x3,x13); // x13 = x1 - x3
+    MathExtra::sub3(x2,x3,x23); // x23 = x2 - x3
+
+    s1 = MathExtra::dot3(x13,v);
+    x13h[0] = x13[0] - s1*v[0];
+    x13h[1] = x13[1] - s1*v[1];
+    x13h[2] = x13[2] - s1*v[2];
+    r = MathExtra::len3(x13h);
+    
+    // x13 is the projection of x1 on x3-x4
+
+    x13[0] = x3[0] + s1*v[0];
+    x13[1] = x3[1] + s1*v[1];
+    x13[2] = x3[2] + s1*v[2];
+
+    // x23 is the projection of x2 on x3-x4
+
+    s2 = MathExtra::dot3(x23,v);
+    x23[0] = x3[0] + s2*v[0];
+    x23[1] = x3[1] + s2*v[1];
+    x23[2] = x3[2] + s2*v[2];
+    
+    // find the fraction of the projection points on the edges
+
+    if (fabs(x4[0] - x3[0]) > 0)
+      t13 = (x13[0] - x3[0])/(x4[0] - x3[0]);
+    else if (fabs(x4[1] - x3[1]) > 0)
+      t13 = (x13[1] - x3[1])/(x4[1] - x3[1]);
+    else if (fabs(x4[2] - x3[2]) > 0)
+      t13 = (x13[2] - x3[2])/(x4[2] - x3[2]);
+
+    if (fabs(x4[0] - x3[0]) > 0)
+      t23 = (x23[0] - x3[0])/(x4[0] - x3[0]);
+    else if (fabs(x4[1] - x3[1]) > 0)
+      t23 = (x23[1] - x3[1])/(x4[1] - x3[1]);
+    else if (fabs(x4[2] - x3[2]) > 0)
+      t23 = (x23[2] - x3[2])/(x4[2] - x3[2]);
+
+    if (fabs(x23[0] - x13[0]) > 0)
+      t31 = (x3[0] - x13[0])/(x23[0] - x13[0]);
+    else if (fabs(x23[1] - x13[1]) > 0)
+      t31 = (x3[1] - x13[1])/(x23[1] - x13[1]);
+    else if (fabs(x23[2] - x13[2]) > 0)
+      t31 = (x3[2] - x13[2])/(x23[2] - x13[2]);
+
+    // x31 is the projection of x3 on x1-x2
+
+    x31[0] = x1[0] + t31*(x2[0] - x1[0]);
+    x31[1] = x1[1] + t31*(x2[1] - x1[1]);
+    x31[2] = x1[2] + t31*(x2[2] - x1[2]);
+
+    if (fabs(x23[0] - x13[0]) > 0)
+      t41 = (x4[0] - x13[0])/(x23[0] - x13[0]);
+    else if (fabs(x23[1] - x13[1]) > 0)
+      t41 = (x4[1] - x13[1])/(x23[1] - x13[1]);
+    else if (fabs(x23[2] - x13[2]) > 0)
+      t41 = (x4[2] - x13[2])/(x23[2] - x13[2]);
+
+    // x41 is the projection of x4 on x1-x2
+
+    x41[0] = x1[0] + t41*(x2[0] - x1[0]);
+    x41[1] = x1[1] + t41*(x2[1] - x1[1]);
+    x41[2] = x1[2] + t41*(x2[2] - x1[2]);
+
+    // determine two ends from the overlapping segments
+
+    int n1 = 0;
+    int n2 = 0;
+    if (t13 >= 0 && t13 <= 1) {
+      h1[0] = x1[0];
+      h1[1] = x1[1];
+      h1[2] = x1[2];
+      h2[0] = x13[0];
+      h2[1] = x13[1];
+      h2[2] = x13[2];
+      t1 = 0;
+      t2 = t13;
+      n1++;
+      n2++;
+    }
+    if (t23 >= 0 && t23 <= 1) {
+      if (n1 == 0) {
+        h1[0] = x2[0];
+        h1[1] = x2[1];
+        h1[2] = x2[2];
+        h2[0] = x23[0];
+        h2[1] = x23[1];
+        h2[2] = x23[2];
+        t1 = 1;
+        t2 = t23;
+        n1++;
+        n2++;
+      } else {
+        h1[0] = (x1[0]+x2[0])/2;
+        h1[1] = (x1[1]+x2[1])/2;
+        h1[2] = (x1[2]+x2[2])/2;
+        h2[0] = (x13[0]+x23[0])/2; 
+        h2[1] = (x13[1]+x23[1])/2; 
+        h2[2] = (x13[2]+x23[2])/2;
+        t1 = 0.5;
+        t2 = (t13+t23)/2;
+        n1++;
+        n2++;
+      }
+    }
+
+    if (n1 == 0 && n2 == 0) {
+      if (t31 >= 0 && t31 <= 1) {
+        h1[0] = x31[0];
+        h1[1] = x31[1];
+        h1[2] = x31[2];
+        h2[0] = x3[0];
+        h2[1] = x3[1];
+        h2[2] = x3[2];
+        t1 = t31;
+        t2 = 0;
+        n1++;
+        n2++;
+      }
+      if (t41 >= 0 && t41 <= 1) {
+        if (n1 == 0) {
+          h1[0] = x41[0];
+          h1[1] = x41[1];
+          h1[2] = x41[2];
+          h2[0] = x4[0];
+          h2[1] = x4[1];
+          h2[2] = x4[2];
+          t1 = t41;
+          t2 = 1;
+          n1++;
+          n2++;
+        } else {
+          h1[0] = (x31[0]+x41[0])/2;
+          h1[1] = (x31[1]+x41[1])/2;
+          h1[2] = (x31[2]+x41[2])/2;
+          h2[0] = (x3[0]+x4[0])/2; 
+          h2[1] = (x3[1]+x4[1])/2; 
+          h2[2] = (x3[2]+x4[2])/2;
+          t1 = (t31+t41)/2;
+          t2 = 0.5;
+          n1++;
+          n2++;
+        }
+      }
+    }   
+
+    // if n1 == 0 and n2 == 0 at this point,
+    // which means no overlapping segments bt two parallel edges,
+    // return the default values of t1 and t2
+
+    return;
+
+  } 
+
+  // find the vector n perpendicular to both edges
+ 
+  MathExtra::cross3(u, v, n);
+  MathExtra::norm3(n);
+
+  // find the intersection of the line (x3,x4) and the plane (x1,x2,n)
+  // s = director of the line (x3,x4)
+  // n_p = plane normal vector of the plane (x1,x2,n)
+
+  double s[3], n_p[3];
+  MathExtra::sub3(x4, x3, s);
+  MathExtra::sub3(x2, x1, u);
+  MathExtra::cross3(u, n, n_p);
+  MathExtra::norm3(n_p);
+
+  // solve for the intersection between the line and the plane
+
+  double m[3][3], invm[3][3], p[3], ans[3];
+  m[0][0] = -s[0];
+  m[0][1] = u[0];
+  m[0][2] = n[0];
+
+  m[1][0] = -s[1];
+  m[1][1] = u[1];
+  m[1][2] = n[1];
+
+  m[2][0] = -s[2];
+  m[2][1] = u[2];
+  m[2][2] = n[2];
+
+  MathExtra::sub3(x3, x1, p);
+  MathExtra::invert3(m, invm);
+  MathExtra::matvec(invm, p, ans);
+
+  t2 = ans[0];
+  h2[0] = x3[0] + s[0] * t2;
+  h2[1] = x3[1] + s[1] * t2;
+  h2[2] = x3[2] + s[2] * t2;
+
+  project_pt_plane(h2, x1, n, h1, r);
+
+  if (fabs(x2[0] - x1[0]) > 0)
+    t1 = (h1[0] - x1[0])/(x2[0] - x1[0]);
+  else if (fabs(x2[1] - x1[1]) > 0)
+    t1 = (h1[1] - x1[1])/(x2[1] - x1[1]);
+  else if (fabs(x2[2] - x1[2]) > 0)
+    t1 = (h1[2] - x1[2])/(x2[2] - x1[2]);
+}
+
+/* ----------------------------------------------------------------------
+  Calculate the total velocity of a point (vertex, a point on an edge):
+    vi = vcm + omega ^ (p - xcm)
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::total_velocity(double* p, double *xcm,
+  double* vcm, double *angmom, double *inertia, double *quat, double* vi)
+{
+  double r[3],omega[3],ex_space[3],ey_space[3],ez_space[3];
+  r[0] = p[0] - xcm[0];
+  r[1] = p[1] - xcm[1];
+  r[2] = p[2] - xcm[2];
+  MathExtra::q_to_exyz(quat,ex_space,ey_space,ez_space);
+  MathExtra::angmom_to_omega(angmom,ex_space,ey_space,ez_space,
+                             inertia,omega);
+  vi[0] = omega[1]*r[2] - omega[2]*r[1] + vcm[0];
+  vi[1] = omega[2]*r[0] - omega[0]*r[2] + vcm[1];
+  vi[2] = omega[0]*r[1] - omega[1]*r[0] + vcm[2];
+}
+
+/* ---------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::sanity_check()
+{
+
+  double x1[3],x2[3],x3[3],x4[3],h_a[3],h_b[3],d_a,d_b,u[3],v[3],n[3];
+  double a[3],b[3],t_a,t_b;
+  int inside_a, inside_b;
+
+  x1[0] = 0; x1[1] = 3; x1[2] = 0;
+  x2[0] = 3; x2[1] = 0; x2[2] = 0;
+  x3[0] = 4; x3[1] = 3; x3[2] = 0;
+  x4[0] = 5; x4[1] = 3; x4[2] = 0;
+
+  a[0] = 0; a[1] = 0; a[2] = 0;
+  b[0] = 4; b[1] = 0; b[2] = 0;
+
+  project_pt_line(a, x1, x2, h_a, d_a, t_a);
+  project_pt_line(b, x1, x2, h_b, d_b, t_b);
+/*
+  printf("h_a: %f %f %f; h_b: %f %f %f; t_a = %f; t_b = %f; d = %f; d_b = %f\n",
+    h_a[0], h_a[1], h_a[2], h_b[0], h_b[1], h_b[2], t_a, t_b, d_a, d_b);
+*/
+/*
+  int mode = edge_face_intersect(x1, x2, x3, a, b, h_a, h_b, d_a, d_b,
+                                 inside_a, inside_b);
+
+  MathExtra::sub3(x2, x1, u);
+  MathExtra::sub3(x3, x1, v);
+  MathExtra::cross3(u, v, n);
+  MathExtra::norm3(n);
+*/
+/*
+  project_pt_plane(a, x1, x2, x3, h_a, d_a, inside_a);
+  printf("h_a: %f %f %f; d = %f: inside %d\n",
+    h_a[0], h_a[1], h_a[2], d_a, inside_a);
+  project_pt_plane(b, x1, x2, x3, h_b, d_b, inside_b);
+  printf("h_b: %f %f %f; d = %f: inside %d\n",
+    h_b[0], h_b[1], h_b[2], d_b, inside_b);
+*/
+/*
+  distance_bt_edges(x1, x2, x3, x4, h_a, h_b, t_a, t_b, d_a);
+  printf("h_a: %f %f %f; h_b: %f %f %f; t_a = %f; t_b = %f; d = %f\n",
+    h_a[0], h_a[1], h_a[2], h_b[0], h_b[1], h_b[2], t_a, t_b, d_a);
+*/
+}
+
diff --git a/src/BODY/pair_body_rounded_polyhedron.h b/src/BODY/pair_body_rounded_polyhedron.h
new file mode 100644
index 0000000000..d7ee1f013e
--- /dev/null
+++ b/src/BODY/pair_body_rounded_polyhedron.h
@@ -0,0 +1,176 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef PAIR_CLASS
+
+PairStyle(body/rounded/polyhedron,PairBodyRoundedPolyhedron)
+
+#else
+
+#ifndef LMP_PAIR_BODY_ROUNDED_POLYHEDRON_H
+#define LMP_PAIR_BODY_ROUNDED_POLYHEDRON_H
+
+#include "pair.h"
+
+namespace LAMMPS_NS {
+
+class PairBodyRoundedPolyhedron : public Pair {
+ public:
+  PairBodyRoundedPolyhedron(class LAMMPS *);
+  ~PairBodyRoundedPolyhedron();
+  void compute(int, int);
+  void settings(int, char **);
+  void coeff(int, char **);
+  void init_style();
+  double init_one(int, int);
+
+  struct Contact {
+    int ibody, jbody; // body (i.e. atom) indices (not tags)
+    int type;         // 0 = VERTEX-FACE; 1 = EDGE-EDGE
+    double fx,fy,fz;  // unscaled cohesive forces at contact
+    double xi[3];     // coordinates of the contact point on ibody
+    double xj[3];     // coordinates of the contact point on jbody
+    double separation; // contact surface separation
+  };
+
+ protected:
+  double **k_n;       // normal repulsion strength
+  double **k_na;      // normal attraction strength
+  double c_n;         // normal damping coefficient
+  double c_t;         // tangential damping coefficient
+  double mu;          // normal friction coefficient during gross sliding
+  double A_ua;        // characteristic contact area
+  double cut_inner;   // cutoff for interaction between vertex-edge surfaces
+
+  class AtomVecBody *avec;
+  class BodyRoundedPolyhedron *bptr;
+
+  double **discrete;  // list of all sub-particles for all bodies
+  int ndiscrete;      // number of discretes in list
+  int dmax;           // allocated size of discrete list
+  int *dnum;          // number of discretes per line, 0 if uninit
+  int *dfirst;        // index of first discrete per each line
+  int nmax;           // allocated size of dnum,dfirst vectors
+
+  double **edge;      // list of all edge for all bodies
+  int nedge;          // number of edge in list
+  int edmax;          // allocated size of edge list
+  int *ednum;         // number of edges per line, 0 if uninit
+  int *edfirst;       // index of first edge per each line
+  int ednummax;       // allocated size of ednum,edfirst vectors
+
+  double **face;      // list of all edge for all bodies
+  int nface;          // number of faces in list
+  int facmax;         // allocated size of face list
+  int *facnum;        // number of faces per line, 0 if uninit
+  int *facfirst;      // index of first face per each line
+  int facnummax;      // allocated size of facnum,facfirst vectors
+
+  double *enclosing_radius; // enclosing radii for all bodies
+  double *rounded_radius;   // rounded radii for all bodies
+  double *maxerad;          // per-type maximum enclosing radius
+
+  void allocate();
+  void body2space(int);
+
+  int edge_against_face(int ibody, int jbody, double k_n, double k_na,
+                        double** x, Contact* contact_list, int &num_contacts,
+                        double &evdwl, double* facc);
+  int edge_against_edge(int ibody, int jbody, double k_n, double k_na,
+                        double** x,Contact* contact_list, int &num_contacts,
+                        double &evdwl, double* facc);
+  void sphere_against_sphere(int ibody, int jbody, double delx, double dely, double delz,
+                             double rsq, double k_n, double k_na,
+                             double** v, double** f, int evflag);
+  void sphere_against_face(int ibody, int jbody,
+                       double k_n, double k_na, double** x, double** v,
+                       double** f, double** torque, double** angmom, int evflag);
+  void sphere_against_edge(int ibody, int jbody,
+                       double k_n, double k_na, double** x, double** v,
+                       double** f, double** torque, double** angmom, int evflag);
+
+  int interaction_face_to_edge(int ibody, int face_index, double* xmi,
+                               double rounded_radius_i, int jbody, int edge_index,
+                               double* xmj, double rounded_radius_j,
+                               double k_n, double k_na, double cut_inner,
+                               Contact* contact_list, int &num_contacts,
+                               double& energy, double* facc);
+  int interaction_edge_to_edge(int ibody, int edge_index_i, double* xmi,
+                               double rounded_radius_i, int jbody, int edge_index_j,
+                               double* xmj, double rounded_radius_j,
+                               double k_n, double k_na, double cut_inner,
+                               Contact* contact_list, int &num_contacts,
+                               double& energy, double* facc);
+
+  void contact_forces(int ibody, int jbody, double *xi, double *xj,
+    double delx, double dely, double delz, double fx, double fy, double fz,
+    double** x, double** v, double** angmom, double** f, double** torque,
+    double* facc);
+
+  void pair_force_and_torque(int ibody, int jbody, double* pi, double* pj,
+                             double r, double contact_dist, double k_n, 
+                             double k_na, double shift, double** x, double** v,
+                             double** f, double** torque, double** angmom,
+                             int jflag, double& energy, double* facc);
+  void rescale_cohesive_forces(double** x, double** f, double** torque,
+                               Contact* contact_list, int &num_contacts,
+                               double contact_area, double k_n, double k_na, double* facc);
+
+  void sum_torque(double* xm, double *x, double fx, double fy, double fz, double* torque);
+  int opposite_sides(double* n, double* x0, double* a, double* b);
+  int edge_face_intersect(double* x1, double* x2, double* x3, double* a, double* b,
+                          double* hi1, double* hi2, double& d1, double& d2,
+                          int& inside_a, int& inside_b);
+  void project_pt_plane(const double* q, const double* p, 
+                        const double* n, double* q_proj, double &d);
+  void project_pt_plane(const double* q, const double* x1, const double* x2, 
+                        const double* x3, double* q_proj, double &d, int& inside);
+  void project_pt_line(const double* q, const double* xi1, const double* xi2,
+                          double* h, double& d, double& t);
+  void inside_polygon(int ibody, int face_index, double* xmi, 
+                     const double* q1, const double* q2, int& inside1, int& inside2);
+
+  void distance_bt_edges(const double* x1, const double* x2,
+                      const double* x3, const double* x4,
+                      double* h1, double* h2, double& t1, double& t2, double& r);
+  void total_velocity(double* p, double *xcm, double* vcm, double *angmom,
+                      double *inertia, double *quat, double* vi);
+  void sanity_check();
+};
+
+}
+
+#endif
+#endif
+
+/* ERROR/WARNING messages:
+
+E: Illegal ... command
+
+Self-explanatory.  Check the input script syntax and compare to the
+documentation for the command.  You can use -echo screen as a
+command-line option when running LAMMPS to see the offending line.
+
+E: Incorrect args for pair coefficients
+
+Self-explanatory.  Check the input script or data file.
+
+E: Pair body/rounded/polyhedron requires atom style body rounded/polyhedron
+
+Self-explanatory.
+
+E: Pair body requires body style rounded/polyhedron
+
+This pair style is specific to the rounded/polyhedron body style.
+
+*/
-- 
GitLab


From 4308f005ab4b0ab2b943eb7c083f3a2f548efcb1 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Thu, 24 May 2018 23:12:01 -0500
Subject: [PATCH 004/243] Updated pair body rounded/polygon

---
 src/BODY/pair_body_rounded_polygon.cpp    | 6 ++++--
 src/BODY/pair_body_rounded_polyhedron.cpp | 3 +++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/BODY/pair_body_rounded_polygon.cpp b/src/BODY/pair_body_rounded_polygon.cpp
index 72591d2bd0..9f9cdea31b 100644
--- a/src/BODY/pair_body_rounded_polygon.cpp
+++ b/src/BODY/pair_body_rounded_polygon.cpp
@@ -374,6 +374,8 @@ void PairBodyRoundedPolygon::settings(int narg, char **arg)
   mu = force->numeric(FLERR,arg[2]);
   delta_ua = force->numeric(FLERR,arg[3]);
   cut_inner = force->numeric(FLERR,arg[4]);
+
+  if (delta_ua < 0) delta_ua = 1;
 }
 
 /* ----------------------------------------------------------------------
@@ -1078,12 +1080,12 @@ int PairBodyRoundedPolygon::compute_distance_to_vertex(int ibody,
     // check if x0 (the queried vertex) and xmi (the body's center of mass)
     // are on the different sides of the edge
 
-    int m = opposite_sides(xi1, xi2, x0, xmi);
+    int m = 1;//opposite_sides(xi1, xi2, x0, xmi);
 
     if (m == 0) {
 
       // x0 and xmi are on not the opposite sides of the edge
-      // leave xpi for another edge to detect
+      // leave xpi for another edge to detect --  for convex shapes only
 
       mode = NONE;
 
diff --git a/src/BODY/pair_body_rounded_polyhedron.cpp b/src/BODY/pair_body_rounded_polyhedron.cpp
index 8d5f9ec72c..bc94b9cc80 100644
--- a/src/BODY/pair_body_rounded_polyhedron.cpp
+++ b/src/BODY/pair_body_rounded_polyhedron.cpp
@@ -82,6 +82,9 @@ PairBodyRoundedPolyhedron::PairBodyRoundedPolyhedron(LAMMPS *lmp) : Pair(lmp)
   c_t = 0.2;
   mu = 0.0;
   A_ua = 1.0;
+
+  k_n = NULL;
+  k_na = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
-- 
GitLab


From 4bd4b2a1c75cfc6ea1f9ec90275cd4d947d76571 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Thu, 24 May 2018 23:35:49 -0500
Subject: [PATCH 005/243] Updated pair body rounded/polygon and
 rounded/polyhedron

---
 src/BODY/pair_body_rounded_polygon.cpp    |   6 +-
 src/BODY/pair_body_rounded_polyhedron.cpp | 124 ++++++++++++++++------
 src/BODY/pair_body_rounded_polyhedron.h   |  17 +--
 3 files changed, 105 insertions(+), 42 deletions(-)

diff --git a/src/BODY/pair_body_rounded_polygon.cpp b/src/BODY/pair_body_rounded_polygon.cpp
index 9f9cdea31b..62a6d77a01 100644
--- a/src/BODY/pair_body_rounded_polygon.cpp
+++ b/src/BODY/pair_body_rounded_polygon.cpp
@@ -848,6 +848,7 @@ int PairBodyRoundedPolygon::vertex_against_edge(int i, int j,
 
         // done with the edges from body j,
         // given that vertex ni interacts with only one vertex from one edge of body j
+        // comment out this break to take into account concave shapes
 
 //        break;
 
@@ -955,6 +956,7 @@ int PairBodyRoundedPolygon::vertex_against_edge(int i, int j,
 
         // done with the edges from body j,
         // given that vertex ni interacts with only one edge from body j
+        // comment out this break to take into account concave shapes
 
 //        break;
 
@@ -1080,12 +1082,12 @@ int PairBodyRoundedPolygon::compute_distance_to_vertex(int ibody,
     // check if x0 (the queried vertex) and xmi (the body's center of mass)
     // are on the different sides of the edge
 
-    int m = 1;//opposite_sides(xi1, xi2, x0, xmi);
+    int m = opposite_sides(xi1, xi2, x0, xmi);
 
     if (m == 0) {
 
       // x0 and xmi are on not the opposite sides of the edge
-      // leave xpi for another edge to detect --  for convex shapes only
+      // leave xpi for another edge to detect
 
       mode = NONE;
 
diff --git a/src/BODY/pair_body_rounded_polyhedron.cpp b/src/BODY/pair_body_rounded_polyhedron.cpp
index bc94b9cc80..02c2abe1e3 100644
--- a/src/BODY/pair_body_rounded_polyhedron.cpp
+++ b/src/BODY/pair_body_rounded_polyhedron.cpp
@@ -47,7 +47,7 @@ using namespace MathConst;
 #define DELTA 10000
 #define EPSILON 1e-3
 #define MAX_FACE_SIZE 4 // maximum number of vertices per face (same as BodyRoundedPolyhedron)
-#define MAX_CONTACTS 16  // for 3D models
+#define MAX_CONTACTS 32  // for 3D models
 
 //#define _POLYHEDRON_DEBUG
 
@@ -308,36 +308,8 @@ void PairBodyRoundedPolyhedron::compute(int eflag, int vflag)
       // also consider point contacts and line contacts
 
       if (num_contacts > 0) {
-        double contact_area;
-        if (num_contacts == 1) {
-          contact_area = 0;
-        } else if (num_contacts == 2) {
-          contact_area = num_contacts * A_ua;
-        } else {
-          int m;
-          double xc[3],dx,dy,dz;
-          xc[0] = xc[1] = xc[2] = 0;
-          for (m = 0; m < num_contacts; m++) {
-            xc[0] += contact_list[m].xi[0];
-            xc[1] += contact_list[m].xi[1];
-            xc[2] += contact_list[m].xi[2];
-          }
-
-          xc[0] /= (double)num_contacts;
-          xc[1] /= (double)num_contacts;
-          xc[2] /= (double)num_contacts;
-
-          contact_area = 0.0;
-          for (m = 0; m < num_contacts; m++) {
-            dx = contact_list[m].xi[0] - xc[0];
-            dy = contact_list[m].xi[1] - xc[1];
-            dz = contact_list[m].xi[2] - xc[2];
-            contact_area += (dx*dx + dy*dy + dz*dz);
-          }
-          contact_area *= (MY_PI/(double)num_contacts);
-        }
         rescale_cohesive_forces(x, f, torque, contact_list, num_contacts,
-                                contact_area, k_nij, k_naij, facc);
+                                k_nij, k_naij, facc);
       }
 
       if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair,evdwl,0.0,
@@ -383,6 +355,8 @@ void PairBodyRoundedPolyhedron::settings(int narg, char **arg)
   mu = force->numeric(FLERR,arg[2]);
   A_ua = force->numeric(FLERR,arg[3]);
   cut_inner = force->numeric(FLERR,arg[4]);
+
+  if (A_ua < 0) A_ua = 1;
 }
 
 /* ----------------------------------------------------------------------
@@ -1381,7 +1355,17 @@ int PairBodyRoundedPolyhedron::interaction_face_to_edge(int ibody,
 
     #endif
   } else if (interact == EF_INTERSECT_INSIDE) {
-
+    // need to do something here to resolve overlap!!
+    // p is the intersection between the edge and the face
+    int jflag = 1;
+    if (d1 < d2)
+      pair_force_and_torque(jbody, ibody, xpj1, hi1, d1, contact_dist,
+                            k_n, k_na, shift, x, v, f, torque, angmom,
+                            jflag, energy, facc);
+    else
+      pair_force_and_torque(jbody, ibody, xpj2, hi2, d2, contact_dist,
+                            k_n, k_na, shift, x, v, f, torque, angmom,
+                            jflag, energy, facc);
   }
 
   return interact;
@@ -1661,6 +1645,7 @@ void PairBodyRoundedPolyhedron::contact_forces(int ibody, int jbody,
   ft[1] = -c_t * vt2;
   ft[2] = -c_t * vt3;
 
+  // these are contact forces (F_n, F_t and F_ne) only
   // cohesive forces will be scaled by j_a after contact area is computed
   // mu * fne = tangential friction deformation during gross sliding
   // see Eq. 4, Fraige et al.
@@ -1697,13 +1682,49 @@ void PairBodyRoundedPolyhedron::contact_forces(int ibody, int jbody,
 
 void PairBodyRoundedPolyhedron::rescale_cohesive_forces(double** x,
      double** f, double** torque, Contact* contact_list, int &num_contacts,
-     double contact_area, double k_n, double k_na, double* facc)
+     double k_n, double k_na, double* facc)
 {
   int m,ibody,jbody;
-  double delx,dely,delz,fx,fy,fz,R,fpair,r,shift;
+  double delx,dely,delz,fx,fy,fz,R,fpair,r,shift,contact_area;
+
+  int num_unique_contacts = 0;
+  if (num_contacts == 1) {
+    num_unique_contacts = 1;
+    contact_area = 0;
+  } else if (num_contacts == 2) {
+    num_unique_contacts = 2;
+    contact_area = num_contacts * A_ua;
+  } else {
+    find_unique_contacts(contact_list, num_contacts);
+
+    double xc[3],dx,dy,dz;
+    xc[0] = xc[1] = xc[2] = 0;
+    num_unique_contacts = 0;
+    for (int m = 0; m < num_contacts; m++) {
+      if (contact_list[m].unique == 0) continue;
+      xc[0] += contact_list[m].xi[0];
+      xc[1] += contact_list[m].xi[1];
+      xc[2] += contact_list[m].xi[2];
+      num_unique_contacts++;
+    }
+
+    xc[0] /= (double)num_unique_contacts;
+    xc[1] /= (double)num_unique_contacts;
+    xc[2] /= (double)num_unique_contacts;
+    
+    contact_area = 0.0;
+    for (int m = 0; m < num_contacts; m++) {
+      if (contact_list[m].unique == 0) continue;
+      dx = contact_list[m].xi[0] - xc[0];
+      dy = contact_list[m].xi[1] - xc[1];
+      dz = contact_list[m].xi[2] - xc[2];
+      contact_area += (dx*dx + dy*dy + dz*dz);
+    }
+    contact_area *= (MY_PI/(double)num_unique_contacts);
+  }
+
   double j_a = contact_area / (num_contacts * A_ua);
   if (j_a < 1.0) j_a = 1.0;
-
   shift = k_na * cut_inner;
 
   for (m = 0; m < num_contacts; m++) {
@@ -2302,6 +2323,41 @@ void PairBodyRoundedPolyhedron::total_velocity(double* p, double *xcm,
   vi[2] = omega[0]*r[1] - omega[1]*r[0] + vcm[2];
 }
 
+/* ----------------------------------------------------------------------
+  Determine the length of the contact segment, i.e. the separation between
+  2 contacts, should be extended for 3D models.
+------------------------------------------------------------------------- */
+
+double PairBodyRoundedPolyhedron::contact_separation(const Contact& c1,
+                                                     const Contact& c2)
+{
+  double x1 = 0.5*(c1.xi[0] + c1.xj[0]);
+  double y1 = 0.5*(c1.xi[1] + c1.xj[1]);
+  double z1 = 0.5*(c1.xi[2] + c1.xj[2]);
+  double x2 = 0.5*(c2.xi[0] + c2.xj[0]);
+  double y2 = 0.5*(c2.xi[1] + c2.xj[1]);
+  double z2 = 0.5*(c2.xi[2] + c2.xj[2]);
+  double rsq = (x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1) + (z2 - z1)*(z2 - z1);
+  return rsq;
+}
+
+/* ----------------------------------------------------------------------
+   find the number of unique contacts
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::find_unique_contacts(Contact* contact_list, int& num_contacts)
+{
+  int n = num_contacts;
+  for (int i = 0; i < n - 1; i++) {
+
+    for (int j = i + 1; j < n; j++) {
+      if (contact_list[i].unique == 0) continue;
+      double d = contact_separation(contact_list[i], contact_list[j]);
+      if (d < EPSILON) contact_list[j].unique = 0;
+    }
+  }
+}
+
 /* ---------------------------------------------------------------------- */
 
 void PairBodyRoundedPolyhedron::sanity_check()
diff --git a/src/BODY/pair_body_rounded_polyhedron.h b/src/BODY/pair_body_rounded_polyhedron.h
index d7ee1f013e..05985ef813 100644
--- a/src/BODY/pair_body_rounded_polyhedron.h
+++ b/src/BODY/pair_body_rounded_polyhedron.h
@@ -35,12 +35,13 @@ class PairBodyRoundedPolyhedron : public Pair {
   double init_one(int, int);
 
   struct Contact {
-    int ibody, jbody; // body (i.e. atom) indices (not tags)
-    int type;         // 0 = VERTEX-FACE; 1 = EDGE-EDGE
-    double fx,fy,fz;  // unscaled cohesive forces at contact
-    double xi[3];     // coordinates of the contact point on ibody
-    double xj[3];     // coordinates of the contact point on jbody
+    int ibody, jbody;  // body (i.e. atom) indices (not tags)
+    int type;          // 0 = VERTEX-FACE; 1 = EDGE-EDGE
+    double fx,fy,fz;   // unscaled cohesive forces at contact
+    double xi[3];      // coordinates of the contact point on ibody
+    double xj[3];      // coordinates of the contact point on jbody
     double separation; // contact surface separation
+    int unique;
   };
 
  protected:
@@ -124,7 +125,11 @@ class PairBodyRoundedPolyhedron : public Pair {
                              int jflag, double& energy, double* facc);
   void rescale_cohesive_forces(double** x, double** f, double** torque,
                                Contact* contact_list, int &num_contacts,
-                               double contact_area, double k_n, double k_na, double* facc);
+                               double k_n, double k_na, double* facc);
+
+  double contact_separation(const Contact& c1, const Contact& c2);
+
+  void find_unique_contacts(Contact* contact_list, int& num_contacts);
 
   void sum_torque(double* xm, double *x, double fx, double fy, double fz, double* torque);
   int opposite_sides(double* n, double* x0, double* a, double* b);
-- 
GitLab


From dd3278ea07597016886198f9bbeaf3b12ba1017b Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Thu, 24 May 2018 23:54:50 -0500
Subject: [PATCH 006/243] Added examples for body rounded/polygon and
 rounded/polyhedron

---
 examples/body/data.cubes       | 76 ++++++++++++++++++++++++++++++++++
 examples/body/in.cubes         | 53 ++++++++++++++++++++++++
 examples/body/in.pour3d        | 57 +++++++++++++++++++++++++
 examples/body/molecule.cube    | 52 +++++++++++++++++++++++
 examples/body/molecule.point3d | 26 ++++++++++++
 examples/body/molecule.rod3d   | 27 ++++++++++++
 examples/body/molecule.tetra   | 39 +++++++++++++++++
 7 files changed, 330 insertions(+)
 create mode 100644 examples/body/data.cubes
 create mode 100644 examples/body/in.cubes
 create mode 100644 examples/body/in.pour3d
 create mode 100644 examples/body/molecule.cube
 create mode 100644 examples/body/molecule.point3d
 create mode 100644 examples/body/molecule.rod3d
 create mode 100644 examples/body/molecule.tetra

diff --git a/examples/body/data.cubes b/examples/body/data.cubes
new file mode 100644
index 0000000000..c1323ca350
--- /dev/null
+++ b/examples/body/data.cubes
@@ -0,0 +1,76 @@
+LAMMPS data file for polygons: cubes, moment of inertia I = m edge^2/ 6
+2 atoms
+2 bodies
+1 atom types
+0 6 xlo xhi
+0 6 ylo yhi
+0 6 zlo zhi
+
+Atoms
+
+1 1 1 1 1.5 1.5 1.5
+2 1 1 1 4.0 4.0 4.0
+
+Bodies
+
+1 3 79
+8 12 6
+0.667 0.667 0.667 0 0 0
+1 1 1
+1 -1 1
+-1 -1 1
+-1 1 1
+1 1 -1
+1 -1 -1
+-1 -1 -1
+-1 1 -1
+0 1
+1 2
+2 3
+3 0
+4 5
+5 6
+6 7
+7 4
+0 4
+1 5
+2 6
+3 7
+0 1 2 3
+4 5 6 7
+0 1 5 4
+1 2 6 5
+2 3 7 6
+3 0 4 7
+0.5
+2 3 79
+8 12 6
+0.667 0.667 0.667 0 0 0
+1 1 1
+1 -1 1
+-1 -1 1
+-1 1 1
+1 1 -1
+1 -1 -1
+-1 -1 -1
+-1 1 -1
+0 1
+1 2
+2 3
+3 0
+4 5
+5 6
+6 7
+7 4
+0 4
+1 5
+2 6
+3 7
+0 1 2 3
+4 5 6 7
+0 1 5 4
+1 2 6 5
+2 3 7 6
+3 0 4 7
+0.5
+
diff --git a/examples/body/in.cubes b/examples/body/in.cubes
new file mode 100644
index 0000000000..3aeaa70af9
--- /dev/null
+++ b/examples/body/in.cubes
@@ -0,0 +1,53 @@
+# 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
+
+replicate   $r $r $r
+
+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_coeff * * ${k_n} ${k_na}
+
+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 yes 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}
+
diff --git a/examples/body/in.pour3d b/examples/body/in.pour3d
new file mode 100644
index 0000000000..290f2052c8
--- /dev/null
+++ b/examples/body/in.pour3d
@@ -0,0 +1,57 @@
+# 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
+
+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_coeff * * ${k_n} ${k_na}
+
+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
+
+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
+
+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 yes 0 0 view 75 15
+#dump_modify  2 pad 6
+
+run	     ${steps}
+
+
diff --git a/examples/body/molecule.cube b/examples/body/molecule.cube
new file mode 100644
index 0000000000..2a8a7bca50
--- /dev/null
+++ b/examples/body/molecule.cube
@@ -0,0 +1,52 @@
+# 3d polygon body: cubes, moment of inertia I = m edge^2/ 6
+
+1 atoms
+3 79 body
+
+Coords
+
+1 0 0 0
+
+Types
+
+1 1
+
+Masses
+
+1 1.0
+
+Body Integers
+
+8 12 6
+
+Body Doubles
+
+0.667 0.667 0.667 0 0 0
+1 1 1
+1 -1 1
+-1 -1 1
+-1 1 1
+1 1 -1
+1 -1 -1
+-1 -1 -1
+-1 1 -1
+0 1
+1 2
+2 3
+3 0
+4 5
+5 6
+6 7
+7 4
+0 4
+1 5
+2 6
+3 7
+0 1 2 3
+4 5 6 7
+0 1 5 4
+1 2 6 5
+2 3 7 6
+3 0 4 7
+0.5
+
diff --git a/examples/body/molecule.point3d b/examples/body/molecule.point3d
new file mode 100644
index 0000000000..d22bfbe6fa
--- /dev/null
+++ b/examples/body/molecule.point3d
@@ -0,0 +1,26 @@
+# 2d polygon body: disks Izz = 1/2 m radius^2
+
+1 atoms
+3 10 body
+
+Coords
+
+1 0 0 0
+
+Types
+
+1 1
+
+Masses
+
+1 1.0
+
+Body Integers
+
+1 0 0
+
+Body Doubles
+
+1 1 1.125 0 0 0
+0 0 0 
+3.0
diff --git a/examples/body/molecule.rod3d b/examples/body/molecule.rod3d
new file mode 100644
index 0000000000..1c8a0a8cd3
--- /dev/null
+++ b/examples/body/molecule.rod3d
@@ -0,0 +1,27 @@
+# 2d polygon body: rods Izz = 1/12 m length^2
+
+1 atoms
+3 13 body
+
+Coords
+
+1 0 0 0
+
+Types
+
+1 1
+
+Masses
+
+1 1.0
+
+Body Integers
+
+2 1 0
+
+Body Doubles
+
+1 1 1.333 0 0 0
+-2 0 0
+2 0 0
+0.5
diff --git a/examples/body/molecule.tetra b/examples/body/molecule.tetra
new file mode 100644
index 0000000000..d67ec906c6
--- /dev/null
+++ b/examples/body/molecule.tetra
@@ -0,0 +1,39 @@
+# 3d polygon body: regular tetrahedra, moment of inertia I = m edge^2/ 20
+
+1 atoms
+3 47 body
+
+Coords
+
+1 0 0 0
+
+Types
+
+1 1
+
+Masses
+
+1 1.0
+
+Body Integers
+
+4 6 4
+
+Body Doubles
+
+0.4 0.4 0.4 0 0 0
+1 1 1
+1 -1 -1
+-1 1 -1
+-1 -1 1
+0 1
+0 2
+0 3
+1 2
+2 3
+3 1
+0 1 2 -1
+0 1 3 -1
+0 2 3 -1
+1 2 3 -1
+0.5
-- 
GitLab


From 5a23342934b350bd88de7d335b40c1bb3c7427d2 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Sat, 26 May 2018 00:39:55 -0500
Subject: [PATCH 007/243] Refactored pair body rounded/polyhedron so that other
 kernel force models can be implemented in the future

---
 src/BODY/pair_body_rounded_polyhedron.cpp | 545 ++++++++++++----------
 src/BODY/pair_body_rounded_polyhedron.h   |  39 +-
 2 files changed, 318 insertions(+), 266 deletions(-)

diff --git a/src/BODY/pair_body_rounded_polyhedron.cpp b/src/BODY/pair_body_rounded_polyhedron.cpp
index 02c2abe1e3..42c107d68e 100644
--- a/src/BODY/pair_body_rounded_polyhedron.cpp
+++ b/src/BODY/pair_body_rounded_polyhedron.cpp
@@ -610,10 +610,10 @@ void PairBodyRoundedPolyhedron::sphere_against_sphere(int ibody, int jbody,
 
   rij = sqrt(rsq);
   R = rij - contact_dist;
-  shift = k_na * cut_inner;
 
   energy = 0;
-
+  kernel_force(R, k_n, k_na, energy, fpair);
+/*
   if (R <= 0) {           // deformation occurs
     fpair = -k_n * R - shift;
     energy = (0.5 * k_n * R + shift) * R;
@@ -621,6 +621,7 @@ void PairBodyRoundedPolyhedron::sphere_against_sphere(int ibody, int jbody,
     fpair = k_na * R - shift;
     energy = (-0.5 * k_na * R + shift) * R;
   } else fpair = 0.0;
+*/
 
   fx = delx*fpair/rij;
   fy = dely*fpair/rij;
@@ -681,17 +682,17 @@ void PairBodyRoundedPolyhedron::sphere_against_sphere(int ibody, int jbody,
 }
 
 /* ----------------------------------------------------------------------
-   Interaction bt the faces of a polyhedron (ibody) and a sphere (jbody)
+   Interaction bt the edges of a polyhedron (ibody) and a sphere (jbody)
 ---------------------------------------------------------------------- */
 
-void PairBodyRoundedPolyhedron::sphere_against_face(int ibody, int jbody,
+void PairBodyRoundedPolyhedron::sphere_against_edge(int ibody, int jbody,
                        double k_n, double k_na, double** x, double** v,
                        double** f, double** torque, double** angmom,
                        int evflag)
 {
-  int ni,nfi,inside,ifirst,iffirst,npi1,npi2,npi3,ibonus,tmp;
-  double xi1[3],xi2[3],xi3[3],ui[3],vi[3],vti[3],n[3],h[3],fn[3],ft[3],d;
-  double delx,dely,delz,rsq,rij,rsqinv,R,fx,fy,fz,fpair,shift,energy;
+  int ni,nei,ifirst,iefirst,npi1,npi2,ibonus;
+  double xi1[3],xi2[3],vti[3],h[3],fn[3],ft[3],d,t;
+  double delx,dely,delz,rij,rsqinv,R,fx,fy,fz,fpair,shift,energy;
   double rradi,rradj,contact_dist;
   double vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3;
   double *quat, *inertia;
@@ -701,18 +702,17 @@ void PairBodyRoundedPolyhedron::sphere_against_face(int ibody, int jbody,
   int newton_pair = force->newton_pair;
 
   ifirst = dfirst[ibody];
-  iffirst = facfirst[ibody];
-  nfi = facnum[ibody];
+  iefirst = edfirst[ibody];
+  nei = ednum[ibody];
 
   rradi = rounded_radius[ibody];
   rradj = rounded_radius[jbody];
   contact_dist = rradi + rradj;
 
-  for (ni = 0; ni < nfi; ni++) {
+  for (ni = 0; ni < nei; ni++) {
 
-    npi1 = static_cast<int>(face[iffirst+ni][0]);
-    npi2 = static_cast<int>(face[iffirst+ni][1]);
-    npi3 = static_cast<int>(face[iffirst+ni][2]);
+    npi1 = static_cast<int>(edge[iefirst+ni][0]);
+    npi2 = static_cast<int>(edge[iefirst+ni][1]);
 
     // compute the space-fixed coordinates for the vertices of the face
 
@@ -724,45 +724,53 @@ void PairBodyRoundedPolyhedron::sphere_against_face(int ibody, int jbody,
     xi2[1] = x[ibody][1] + discrete[ifirst+npi2][1];
     xi2[2] = x[ibody][2] + discrete[ifirst+npi2][2];
 
-    xi3[0] = x[ibody][0] + discrete[ifirst+npi3][0];
-    xi3[1] = x[ibody][1] + discrete[ifirst+npi3][1];
-    xi3[2] = x[ibody][2] + discrete[ifirst+npi3][2];
-
-    // find the normal unit vector of the face
-  
-    MathExtra::sub3(xi2, xi1, ui);
-    MathExtra::sub3(xi3, xi1, vi);
-    MathExtra::cross3(ui, vi, n);
-    MathExtra::norm3(n);
-
-    // skip if the COM of the two bodies are in the same side of the face
+    // find the projection of the jbody's COM on the edge
 
-    if (opposite_sides(n, xi1, x[ibody], x[jbody]) == 0) continue;
+    project_pt_line(x[jbody], xi1, xi2, h, d, t);
 
-    // find the projection of the sphere on the face
+    if (d > contact_dist + cut_inner) continue;
+    if (t < 0 || t > 1) continue;
 
-    project_pt_plane(x[jbody], xi1, xi2, xi3, h, d, inside);
+    if (fabs(t) < EPSILON) {
+      if (static_cast<int>(discrete[ifirst+npi1][6]) == 1)
+        continue;
+      else {
+        h[0] = xi1[0];
+        h[1] = xi1[1];
+        h[2] = xi1[2];
+        discrete[ifirst+npi1][6] = 1;
+      }
+    }
 
-    inside_polygon(ibody, ni, x[ibody], h, NULL, inside, tmp);
-    if (inside == 0) continue;
+    if (fabs(t-1) < EPSILON) {
+      if (static_cast<int>(discrete[ifirst+npi2][6]) == 1)
+        continue;
+      else {
+        h[0] = xi2[0];
+        h[1] = xi2[1];
+        h[2] = xi2[2];
+        discrete[ifirst+npi2][6] = 1;
+      }
+    }
 
     delx = h[0] - x[jbody][0];
     dely = h[1] - x[jbody][1];
     delz = h[2] - x[jbody][2];
-    rsq = delx*delx + dely*dely + delz*delz;
-    rij = sqrt(rsq);
+    rij = sqrt(delx*delx + dely*dely + delz*delz);
     R = rij - contact_dist;
-    shift = k_na * cut_inner;
 
     energy = 0;
-
-    if (R <= 0) { // deformation occurs
+    kernel_force(R, k_n, k_na, energy, fpair);
+/*
+    if (R <= 0) {           // deformation occurs
       fpair = -k_n * R - shift;
       energy = (0.5 * k_n * R + shift) * R;
-    } else if (R <= cut_inner) { // not deforming but cohesive ranges overlap
+    } else if (R <= cut_inner) {   // not deforming but cohesive ranges overlap
       fpair = k_na * R - shift;
       energy = (-0.5 * k_na * R + shift) * R;
     } else fpair = 0.0;
+*/
+
 
     fx = delx*fpair/rij;
     fy = dely*fpair/rij;
@@ -787,7 +795,6 @@ void PairBodyRoundedPolyhedron::sphere_against_face(int ibody, int jbody,
 
       // normal component
 
-      rsqinv = 1.0/rsq;
       vnnr = vr1*delx + vr2*dely + vr3*delz;
       vn1 = delx*vnnr * rsqinv;
       vn2 = dely*vnnr * rsqinv;
@@ -805,8 +812,7 @@ void PairBodyRoundedPolyhedron::sphere_against_face(int ibody, int jbody,
       fn[1] = -c_n * vn2;
       fn[2] = -c_n * vn3;
 
-      // tangential friction term at contact,
-      // excluding the tangential deformation term for now
+      // tangential friction term at contact, excluding the tangential deformation term
 
       ft[0] = -c_t * vt1;
       ft[1] = -c_t * vt2;
@@ -834,17 +840,17 @@ void PairBodyRoundedPolyhedron::sphere_against_face(int ibody, int jbody,
 }
 
 /* ----------------------------------------------------------------------
-   Interaction bt the edges of a polyhedron (ibody) and a sphere (jbody)
+   Interaction bt the faces of a polyhedron (ibody) and a sphere (jbody)
 ---------------------------------------------------------------------- */
 
-void PairBodyRoundedPolyhedron::sphere_against_edge(int ibody, int jbody,
+void PairBodyRoundedPolyhedron::sphere_against_face(int ibody, int jbody,
                        double k_n, double k_na, double** x, double** v,
                        double** f, double** torque, double** angmom,
                        int evflag)
 {
-  int ni,nei,ifirst,iefirst,npi1,npi2,ibonus;
-  double xi1[3],xi2[3],vti[3],h[3],fn[3],ft[3],d,t;
-  double delx,dely,delz,rij,rsqinv,R,fx,fy,fz,fpair,shift,energy;
+  int ni,nfi,inside,ifirst,iffirst,npi1,npi2,npi3,ibonus,tmp;
+  double xi1[3],xi2[3],xi3[3],ui[3],vi[3],vti[3],n[3],h[3],fn[3],ft[3],d;
+  double delx,dely,delz,rsq,rij,rsqinv,R,fx,fy,fz,fpair,shift,energy;
   double rradi,rradj,contact_dist;
   double vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3;
   double *quat, *inertia;
@@ -854,17 +860,18 @@ void PairBodyRoundedPolyhedron::sphere_against_edge(int ibody, int jbody,
   int newton_pair = force->newton_pair;
 
   ifirst = dfirst[ibody];
-  iefirst = edfirst[ibody];
-  nei = ednum[ibody];
+  iffirst = facfirst[ibody];
+  nfi = facnum[ibody];
 
   rradi = rounded_radius[ibody];
   rradj = rounded_radius[jbody];
   contact_dist = rradi + rradj;
 
-  for (ni = 0; ni < nei; ni++) {
+  for (ni = 0; ni < nfi; ni++) {
 
-    npi1 = static_cast<int>(edge[iefirst+ni][0]);
-    npi2 = static_cast<int>(edge[iefirst+ni][1]);
+    npi1 = static_cast<int>(face[iffirst+ni][0]);
+    npi2 = static_cast<int>(face[iffirst+ni][1]);
+    npi3 = static_cast<int>(face[iffirst+ni][2]);
 
     // compute the space-fixed coordinates for the vertices of the face
 
@@ -876,51 +883,46 @@ void PairBodyRoundedPolyhedron::sphere_against_edge(int ibody, int jbody,
     xi2[1] = x[ibody][1] + discrete[ifirst+npi2][1];
     xi2[2] = x[ibody][2] + discrete[ifirst+npi2][2];
 
-    // find the projection of the jbody's COM on the edge
+    xi3[0] = x[ibody][0] + discrete[ifirst+npi3][0];
+    xi3[1] = x[ibody][1] + discrete[ifirst+npi3][1];
+    xi3[2] = x[ibody][2] + discrete[ifirst+npi3][2];
 
-    project_pt_line(x[jbody], xi1, xi2, h, d, t);
+    // find the normal unit vector of the face
+  
+    MathExtra::sub3(xi2, xi1, ui);
+    MathExtra::sub3(xi3, xi1, vi);
+    MathExtra::cross3(ui, vi, n);
+    MathExtra::norm3(n);
 
-    if (d > contact_dist + cut_inner) continue;
-    if (t < 0 || t > 1) continue;
+    // skip if the COM of the two bodies are in the same side of the face
 
-    if (fabs(t) < EPSILON) {
-      if (static_cast<int>(discrete[ifirst+npi1][6]) == 1)
-        continue;
-      else {
-        h[0] = xi1[0];
-        h[1] = xi1[1];
-        h[2] = xi1[2];
-        discrete[ifirst+npi1][6] = 1;
-      }
-    }
+    if (opposite_sides(n, xi1, x[ibody], x[jbody]) == 0) continue;
 
-    if (fabs(t-1) < EPSILON) {
-      if (static_cast<int>(discrete[ifirst+npi2][6]) == 1)
-        continue;
-      else {
-        h[0] = xi2[0];
-        h[1] = xi2[1];
-        h[2] = xi2[2];
-        discrete[ifirst+npi2][6] = 1;
-      }
-    }
+    // find the projection of the sphere on the face
+
+    project_pt_plane(x[jbody], xi1, xi2, xi3, h, d, inside);
+
+    inside_polygon(ibody, ni, x[ibody], h, NULL, inside, tmp);
+    if (inside == 0) continue;
 
     delx = h[0] - x[jbody][0];
     dely = h[1] - x[jbody][1];
     delz = h[2] - x[jbody][2];
-    rij = sqrt(delx*delx + dely*dely + delz*delz);
+    rsq = delx*delx + dely*dely + delz*delz;
+    rij = sqrt(rsq);
     R = rij - contact_dist;
-    shift = k_na * cut_inner;
 
     energy = 0;
-
-    if (R <= 0) {           // deformation occurs
+    kernel_force(R, k_n, k_na, energy, fpair);
+/*
+    if (R <= 0) { // deformation occurs
       fpair = -k_n * R - shift;
       energy = (0.5 * k_n * R + shift) * R;
-    } else if (R <= cut_inner) {   // not deforming but cohesive ranges overlap
+    } else if (R <= cut_inner) { // not deforming but cohesive ranges overlap
       fpair = k_na * R - shift;
       energy = (-0.5 * k_na * R + shift) * R;
     } else fpair = 0.0;
+*/
 
     fx = delx*fpair/rij;
     fy = dely*fpair/rij;
@@ -945,6 +947,7 @@ void PairBodyRoundedPolyhedron::sphere_against_edge(int ibody, int jbody,
 
       // normal component
 
+      rsqinv = 1.0/rsq;
       vnnr = vr1*delx + vr2*dely + vr3*delz;
       vn1 = delx*vnnr * rsqinv;
       vn2 = dely*vnnr * rsqinv;
@@ -962,7 +965,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 for now
 
       ft[0] = -c_t * vt1;
       ft[1] = -c_t * vt2;
@@ -987,11 +991,10 @@ void PairBodyRoundedPolyhedron::sphere_against_edge(int ibody, int jbody,
     if (evflag) ev_tally_xyz(ibody,jbody,nlocal,newton_pair,
                            energy,0.0,fx,fy,fz,delx,dely,delz);
   }
-
 }
 
 /* ----------------------------------------------------------------------
-   Determine the interaction mode between i's edges against j's faces
+   Determine the interaction mode between i's edges against j's edges
 
    i = atom i (body i)
    j = atom j (body j)
@@ -1000,46 +1003,44 @@ void PairBodyRoundedPolyhedron::sphere_against_edge(int ibody, int jbody,
    torque = atoms' torques
    tag    = atoms' tags
    contact_list = list of contacts
-   num_contacts = number of contacts between i's edges and j's faces
+   num_contacts = number of contacts between i's edges and j's edges
    Return:
 
 ---------------------------------------------------------------------- */
 
-int PairBodyRoundedPolyhedron::edge_against_face(int ibody, int jbody,
+int PairBodyRoundedPolyhedron::edge_against_edge(int ibody, int jbody,
              double k_n, double k_na, double** x, Contact* contact_list,
              int &num_contacts, double &evdwl, double* facc)
 {
-  int ni,nei,nj,nfj,contact,interact;
+  int ni,nei,nj,nej,contact,interact;
   double rradi,rradj,energy;
 
   nei = ednum[ibody];
   rradi = rounded_radius[ibody];
-  nfj = facnum[jbody];
+  nej = ednum[jbody];
   rradj = rounded_radius[jbody];
 
   energy = 0;
-  interact = EF_NONE;
+  interact = EE_NONE;
 
   // loop through body i's edges
 
   for (ni = 0; ni < nei; ni++) {
 
-    // loop through body j's faces
-
-    for (nj = 0; nj < nfj; nj++) {
+    for (nj = 0; nj < nej; nj++) {
 
-      // compute the distance between the face nj to the edge ni
+      // compute the distance between the edge 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 edge %d of body %d with edge %d of body %d:\n",
              nj, jbody, ni, ibody);
       #endif
 
-      interact = interaction_face_to_edge(jbody, nj, x[jbody], rradj,
-                                          ibody, ni, x[ibody], rradi,
+      interact = interaction_edge_to_edge(ibody, ni, x[ibody], rradi,
+                                          jbody, nj, x[jbody], rradj,
                                           k_n, k_na, cut_inner,
                                           contact_list, num_contacts,
                                           energy, facc);
-    } 
+    }
 
   } // end for looping through the edges of body i
 
@@ -1049,7 +1050,7 @@ int PairBodyRoundedPolyhedron::edge_against_face(int ibody, int jbody,
 }
 
 /* ----------------------------------------------------------------------
-   Determine the interaction mode between i's edges against j's edges
+   Determine the interaction mode between i's edges against j's faces
 
    i = atom i (body i)
    j = atom j (body j)
@@ -1058,44 +1059,46 @@ int PairBodyRoundedPolyhedron::edge_against_face(int ibody, int jbody,
    torque = atoms' torques
    tag    = atoms' tags
    contact_list = list of contacts
-   num_contacts = number of contacts between i's edges and j's edges
+   num_contacts = number of contacts between i's edges and j's faces
    Return:
 
 ---------------------------------------------------------------------- */
 
-int PairBodyRoundedPolyhedron::edge_against_edge(int ibody, int jbody,
+int PairBodyRoundedPolyhedron::edge_against_face(int ibody, int jbody,
              double k_n, double k_na, double** x, Contact* contact_list,
              int &num_contacts, double &evdwl, double* facc)
 {
-  int ni,nei,nj,nej,contact,interact;
+  int ni,nei,nj,nfj,contact,interact;
   double rradi,rradj,energy;
 
   nei = ednum[ibody];
   rradi = rounded_radius[ibody];
-  nej = ednum[jbody];
+  nfj = facnum[jbody];
   rradj = rounded_radius[jbody];
 
   energy = 0;
-  interact = EE_NONE;
+  interact = EF_NONE;
 
   // loop through body i's edges
 
   for (ni = 0; ni < nei; ni++) {
 
-    for (nj = 0; nj < nej; nj++) {
+    // loop through body j's faces
 
-      // compute the distance between the edge nj to the edge ni
+    for (nj = 0; nj < nfj; nj++) {
+
+      // compute the distance between the face 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 face %d of body %d with edge %d of body %d:\n",
              nj, jbody, ni, ibody);
       #endif
 
-      interact = interaction_edge_to_edge(ibody, ni, x[ibody], rradi,
-                                          jbody, nj, x[jbody], rradj,
+      interact = interaction_face_to_edge(jbody, nj, x[jbody], rradj,
+                                          ibody, ni, x[ibody], rradi,
                                           k_n, k_na, cut_inner,
                                           contact_list, num_contacts,
                                           energy, facc);
-    }
+    } 
 
   } // end for looping through the edges of body i
 
@@ -1104,6 +1107,144 @@ int PairBodyRoundedPolyhedron::edge_against_edge(int ibody, int jbody,
   return interact;
 }
 
+/* -------------------------------------------------------------------------
+  Compute the distance between an edge of body i and an edge from
+  another body
+  Input:
+    ibody      = body i (i.e. atom i)
+    face_index = face index of body i
+    xmi        = atom i's coordinates (body i's center of mass)
+    rounded_radius_i = rounded radius of the body i
+    jbody      = body i (i.e. atom j)
+    edge_index = coordinate of the tested edge from another body
+    xmj        = atom j's coordinates (body j's center of mass)
+    rounded_radius_j = rounded radius of the body j
+    cut_inner  = cutoff for vertex-vertex and vertex-edge interaction
+  Output:
+    d          = Distance from a point x0 to an edge
+    hi         = coordinates of the projection of x0 on the edge
+
+  contact      = 0 no contact between the queried edge and the face
+                 1 contact detected
+  return
+    INVALID if the face index is invalid
+    NONE    if there is no interaction
+------------------------------------------------------------------------- */
+
+int PairBodyRoundedPolyhedron::interaction_edge_to_edge(int ibody,
+                                                int edge_index_i,
+                                                double *xmi,
+                                                double rounded_radius_i,
+                                                int jbody,
+                                                int edge_index_j,
+                                                double *xmj,
+                                                double rounded_radius_j,
+                                                double k_n,
+                                                double k_na,
+                                                double cut_inner,
+                                                Contact* contact_list,
+                                                int &num_contacts,
+                                                double &energy,
+                                                double* facc)
+{
+  int ifirst,iefirst,jfirst,jefirst,npi1,npi2,npj1,npj2,interact;
+  double xi1[3],xi2[3],xpj1[3],xpj2[3];
+  double r,t1,t2,h1[3],h2[3];
+  double contact_dist, shift;
+
+  double** x = atom->x;
+  double** v = atom->v;
+  double** f = atom->f;
+  double** torque = atom->torque;
+  double** angmom = atom->angmom;
+
+  ifirst = dfirst[ibody];
+  iefirst = edfirst[ibody];
+  npi1 = static_cast<int>(edge[iefirst+edge_index_i][0]);
+  npi2 = static_cast<int>(edge[iefirst+edge_index_i][1]);
+
+  // compute the space-fixed coordinates for the edge ends
+
+  xi1[0] = xmi[0] + discrete[ifirst+npi1][0];
+  xi1[1] = xmi[1] + discrete[ifirst+npi1][1];
+  xi1[2] = xmi[2] + discrete[ifirst+npi1][2];
+
+  xi2[0] = xmi[0] + discrete[ifirst+npi2][0];
+  xi2[1] = xmi[1] + discrete[ifirst+npi2][1];
+  xi2[2] = xmi[2] + discrete[ifirst+npi2][2];
+
+  // two ends of the edge from body j
+
+  jfirst = dfirst[jbody];
+  jefirst = edfirst[jbody];
+  npj1 = static_cast<int>(edge[jefirst+edge_index_j][0]);
+  npj2 = static_cast<int>(edge[jefirst+edge_index_j][1]);
+
+  xpj1[0] = xmj[0] + discrete[jfirst+npj1][0];
+  xpj1[1] = xmj[1] + discrete[jfirst+npj1][1];
+  xpj1[2] = xmj[2] + discrete[jfirst+npj1][2];
+
+  xpj2[0] = xmj[0] + discrete[jfirst+npj2][0];
+  xpj2[1] = xmj[1] + discrete[jfirst+npj2][1];
+  xpj2[2] = xmj[2] + discrete[jfirst+npj2][2];
+
+  contact_dist = rounded_radius_i + rounded_radius_j;
+
+  int jflag = 1;
+  distance_bt_edges(xpj1, xpj2, xi1, xi2, h1, h2, t1, t2, r);
+
+  #ifdef _POLYHEDRON_DEBUG
+  double ui[3],uj[3];
+  MathExtra::sub3(xi1,xi2,ui);
+  MathExtra::norm3(ui);
+  MathExtra::sub3(xpj1,xpj2,uj);
+  MathExtra::norm3(uj);
+  double dot = MathExtra::dot3(ui, uj);
+  printf("  edge npi1 = %d (%f %f %f); npi2 = %d (%f %f %f) vs."
+         "  edge npj1 = %d (%f %f %f); npj2 = %d (%f %f %f): "
+         "t1 = %f; t2 = %f; r = %f; dot = %f\n",
+    npi1, xi1[0], xi1[1], xi1[2], npi2, xi2[0], xi2[1], xi2[2], 
+    npj1, xpj1[0], xpj1[1], xpj1[2], npj2, xpj2[0], xpj2[1], xpj2[2],
+    t1, t2, r, dot);
+  #endif
+
+  interact = EE_NONE;
+
+  // singularity case, ignore interactions
+
+  if (r < EPSILON) return interact;
+
+  // include the vertices for interactions
+
+  if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1 &&
+      r < contact_dist + cut_inner) {
+    pair_force_and_torque(jbody, ibody, h1, h2, r, contact_dist,
+                          k_n, k_na, x, v, f, torque, angmom,
+                          jflag, energy, facc);
+
+    interact = EE_INTERACT;
+    if (r <= contact_dist) {
+      // store the contact info
+      contact_list[num_contacts].ibody = ibody;
+      contact_list[num_contacts].jbody = jbody;
+      contact_list[num_contacts].xi[0] = h2[0];
+      contact_list[num_contacts].xi[1] = h2[1];
+      contact_list[num_contacts].xi[2] = h2[2];
+      contact_list[num_contacts].xj[0] = h1[0];
+      contact_list[num_contacts].xj[1] = h1[1];
+      contact_list[num_contacts].xj[2] = h1[2];
+      contact_list[num_contacts].type = 1;
+      contact_list[num_contacts].separation = r - contact_dist;
+      contact_list[num_contacts].unique = 1;
+      num_contacts++;
+    }
+  } else {
+
+  }
+
+  return interact;
+}
+
 /* -------------------------------------------------------------------------
   Compute the interaction between a face of body i and an edge from
   another body
@@ -1225,7 +1366,6 @@ int PairBodyRoundedPolyhedron::interaction_face_to_edge(int ibody,
   inside_polygon(ibody, face_index, xmi, hi1, hi2, inside1, inside2);
 
   contact_dist = rounded_radius_i + rounded_radius_j;
-  shift = k_na * cut_inner;
 
   // both endpoints are on the same side of, or parallel to, the face
   // and both are out of the interaction zone
@@ -1257,7 +1397,7 @@ int PairBodyRoundedPolyhedron::interaction_face_to_edge(int ibody,
       if (inside1) {
         if (static_cast<int>(discrete[jfirst+npj1][6]) == 0) {
           pair_force_and_torque(jbody, ibody, xpj1, hi1, d1, contact_dist,
-                                k_n, k_na, shift, x, v, f, torque, angmom,
+                                k_n, k_na, x, v, f, torque, angmom,
                                 jflag, energy, facc);
           #ifdef _POLYHEDRON_DEBUG
           printf(" - compute pair force between vertex %d from edge %d of body %d "
@@ -1277,6 +1417,7 @@ int PairBodyRoundedPolyhedron::interaction_face_to_edge(int ibody,
             contact_list[num_contacts].xj[2] = xpj1[2];
             contact_list[num_contacts].type = 0;
             contact_list[num_contacts].separation = d1 - contact_dist;
+            contact_list[num_contacts].unique = 1;
             num_contacts++;
           }
 
@@ -1295,7 +1436,7 @@ int PairBodyRoundedPolyhedron::interaction_face_to_edge(int ibody,
       if (inside2) {
         if (static_cast<int>(discrete[jfirst+npj2][6]) == 0) {
           pair_force_and_torque(jbody, ibody, xpj2, hi2, d2, contact_dist,
-                                k_n, k_na, shift, x, v, f, torque, angmom,
+                                k_n, k_na, x, v, f, torque, angmom,
                                 jflag, energy, facc);
           #ifdef _POLYHEDRON_DEBUG
           printf(" - compute pair force between vertex %d from edge %d of body %d "
@@ -1315,6 +1456,7 @@ int PairBodyRoundedPolyhedron::interaction_face_to_edge(int ibody,
             contact_list[num_contacts].xj[2] = xpj2[2];
             contact_list[num_contacts].type = 0;
             contact_list[num_contacts].separation = d2 - contact_dist;
+            contact_list[num_contacts].unique = 1;
             num_contacts++;
           }
           discrete[jfirst+npj2][6] = 1;
@@ -1360,155 +1502,17 @@ int PairBodyRoundedPolyhedron::interaction_face_to_edge(int ibody,
     int jflag = 1;
     if (d1 < d2)
       pair_force_and_torque(jbody, ibody, xpj1, hi1, d1, contact_dist,
-                            k_n, k_na, shift, x, v, f, torque, angmom,
+                            k_n, k_na, x, v, f, torque, angmom,
                             jflag, energy, facc);
     else
       pair_force_and_torque(jbody, ibody, xpj2, hi2, d2, contact_dist,
-                            k_n, k_na, shift, x, v, f, torque, angmom,
+                            k_n, k_na, x, v, f, torque, angmom,
                             jflag, energy, facc);
   }
 
   return interact;
 }
 
-/* -------------------------------------------------------------------------
-  Compute the distance between an edge of body i and an edge from
-  another body
-  Input:
-    ibody      = body i (i.e. atom i)
-    face_index = face index of body i
-    xmi        = atom i's coordinates (body i's center of mass)
-    rounded_radius_i = rounded radius of the body i
-    jbody      = body i (i.e. atom j)
-    edge_index = coordinate of the tested edge from another body
-    xmj        = atom j's coordinates (body j's center of mass)
-    rounded_radius_j = rounded radius of the body j
-    cut_inner  = cutoff for vertex-vertex and vertex-edge interaction
-  Output:
-    d          = Distance from a point x0 to an edge
-    hi         = coordinates of the projection of x0 on the edge
-
-  contact      = 0 no contact between the queried edge and the face
-                 1 contact detected
-  return
-    INVALID if the face index is invalid
-    NONE    if there is no interaction
-------------------------------------------------------------------------- */
-
-int PairBodyRoundedPolyhedron::interaction_edge_to_edge(int ibody,
-                                                int edge_index_i,
-                                                double *xmi,
-                                                double rounded_radius_i,
-                                                int jbody,
-                                                int edge_index_j,
-                                                double *xmj,
-                                                double rounded_radius_j,
-                                                double k_n,
-                                                double k_na,
-                                                double cut_inner,
-                                                Contact* contact_list,
-                                                int &num_contacts,
-                                                double &energy,
-                                                double* facc)
-{
-  int ifirst,iefirst,jfirst,jefirst,npi1,npi2,npj1,npj2,interact;
-  double xi1[3],xi2[3],xpj1[3],xpj2[3];
-  double r,t1,t2,h1[3],h2[3];
-  double contact_dist, shift;
-
-  double** x = atom->x;
-  double** v = atom->v;
-  double** f = atom->f;
-  double** torque = atom->torque;
-  double** angmom = atom->angmom;
-
-  ifirst = dfirst[ibody];
-  iefirst = edfirst[ibody];
-  npi1 = static_cast<int>(edge[iefirst+edge_index_i][0]);
-  npi2 = static_cast<int>(edge[iefirst+edge_index_i][1]);
-
-  // compute the space-fixed coordinates for the edge ends
-
-  xi1[0] = xmi[0] + discrete[ifirst+npi1][0];
-  xi1[1] = xmi[1] + discrete[ifirst+npi1][1];
-  xi1[2] = xmi[2] + discrete[ifirst+npi1][2];
-
-  xi2[0] = xmi[0] + discrete[ifirst+npi2][0];
-  xi2[1] = xmi[1] + discrete[ifirst+npi2][1];
-  xi2[2] = xmi[2] + discrete[ifirst+npi2][2];
-
-  // two ends of the edge from body j
-
-  jfirst = dfirst[jbody];
-  jefirst = edfirst[jbody];
-  npj1 = static_cast<int>(edge[jefirst+edge_index_j][0]);
-  npj2 = static_cast<int>(edge[jefirst+edge_index_j][1]);
-
-  xpj1[0] = xmj[0] + discrete[jfirst+npj1][0];
-  xpj1[1] = xmj[1] + discrete[jfirst+npj1][1];
-  xpj1[2] = xmj[2] + discrete[jfirst+npj1][2];
-
-  xpj2[0] = xmj[0] + discrete[jfirst+npj2][0];
-  xpj2[1] = xmj[1] + discrete[jfirst+npj2][1];
-  xpj2[2] = xmj[2] + discrete[jfirst+npj2][2];
-
-  contact_dist = rounded_radius_i + rounded_radius_j;
-  shift = k_na * cut_inner;
-
-  int jflag = 1;
-  distance_bt_edges(xpj1, xpj2, xi1, xi2, h1, h2, t1, t2, r);
-
-  #ifdef _POLYHEDRON_DEBUG
-  double ui[3],uj[3];
-  MathExtra::sub3(xi1,xi2,ui);
-  MathExtra::norm3(ui);
-  MathExtra::sub3(xpj1,xpj2,uj);
-  MathExtra::norm3(uj);
-  double dot = MathExtra::dot3(ui, uj);
-  printf("  edge npi1 = %d (%f %f %f); npi2 = %d (%f %f %f) vs."
-         "  edge npj1 = %d (%f %f %f); npj2 = %d (%f %f %f): "
-         "t1 = %f; t2 = %f; r = %f; dot = %f\n",
-    npi1, xi1[0], xi1[1], xi1[2], npi2, xi2[0], xi2[1], xi2[2], 
-    npj1, xpj1[0], xpj1[1], xpj1[2], npj2, xpj2[0], xpj2[1], xpj2[2],
-    t1, t2, r, dot);
-  #endif
-
-  interact = EE_NONE;
-
-  // singularity case, ignore interactions
-
-  if (r < EPSILON) return interact;
-
-  // include the vertices for interactions
-
-  if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1 &&
-      r < contact_dist + cut_inner) {
-    pair_force_and_torque(jbody, ibody, h1, h2, r, contact_dist,
-                          k_n, k_na, shift, x, v, f, torque, angmom,
-                          jflag, energy, facc);
-
-    interact = EE_INTERACT;
-    if (r <= contact_dist) {
-      // store the contact info
-      contact_list[num_contacts].ibody = ibody;
-      contact_list[num_contacts].jbody = jbody;
-      contact_list[num_contacts].xi[0] = h2[0];
-      contact_list[num_contacts].xi[1] = h2[1];
-      contact_list[num_contacts].xi[2] = h2[2];
-      contact_list[num_contacts].xj[0] = h1[0];
-      contact_list[num_contacts].xj[1] = h1[1];
-      contact_list[num_contacts].xj[2] = h1[2];
-      contact_list[num_contacts].type = 1;
-      contact_list[num_contacts].separation = r - contact_dist;
-      num_contacts++;
-    }
-  } else {
-
-  }
-
-  return interact;
-}
-
 /* ----------------------------------------------------------------------
   Compute forces and torques between two bodies caused by the interaction
   between a pair of points on either bodies (similar to sphere-sphere)
@@ -1516,7 +1520,7 @@ int PairBodyRoundedPolyhedron::interaction_edge_to_edge(int ibody,
 
 void PairBodyRoundedPolyhedron::pair_force_and_torque(int ibody, int jbody,
                  double* pi, double* pj, double r, double contact_dist,
-                 double k_n, double k_na, double shift, double** x,
+                 double k_n, double k_na, double** x,
                  double** v, double** f, double** torque, double** angmom,
                  int jflag, double& energy, double* facc)
 {
@@ -1525,7 +1529,10 @@ void PairBodyRoundedPolyhedron::pair_force_and_torque(int ibody, int jbody,
   delx = pi[0] - pj[0];
   dely = pi[1] - pj[1];
   delz = pi[2] - pj[2];
-  R = r - contact_dist; 
+  R = r - contact_dist;
+
+  kernel_force(R, k_n, k_na, energy, fpair);
+/*
   if (R <= 0) {                // deformation occurs
     fpair = -k_n * R - shift;
     energy += (0.5 * k_n * R + shift) * R;
@@ -1533,6 +1540,7 @@ void PairBodyRoundedPolyhedron::pair_force_and_torque(int ibody, int jbody,
     fpair = k_na * R - shift;
     energy += (-0.5 * k_na * R + shift) * R;
   } else fpair = 0.0;
+*/
 
   fx = delx*fpair/r;
   fy = dely*fpair/r;
@@ -1570,6 +1578,26 @@ void PairBodyRoundedPolyhedron::pair_force_and_torque(int ibody, int jbody,
   }
 }
 
+/* ----------------------------------------------------------------------
+  Kernel force is model-dependent and can be derived for other styles
+    here is the harmonic potential (linear piece-wise forces) in Wang et al.
+------------------------------------------------------------------------- */
+
+void PairBodyRoundedPolyhedron::kernel_force(double R, double k_n, double k_na,
+  double& energy, double& fpair)
+{
+  double shift = k_na * cut_inner;
+  double e = 0;
+  if (R <= 0) {           // deformation occurs
+    fpair = -k_n * R - shift;
+    e = (0.5 * k_n * R + shift) * R;
+  } else if (R <= cut_inner) {   // not deforming but cohesive ranges overlap
+    fpair = k_na * R - shift;
+    e = (-0.5 * k_na * R + shift) * R;
+  } else fpair = 0.0;
+  energy += e;
+}
+
 /* ----------------------------------------------------------------------
   Compute contact forces between two bodies
   modify the force stored at the vertex and edge in contact by j_a
@@ -1685,7 +1713,7 @@ void PairBodyRoundedPolyhedron::rescale_cohesive_forces(double** x,
      double k_n, double k_na, double* facc)
 {
   int m,ibody,jbody;
-  double delx,dely,delz,fx,fy,fz,R,fpair,r,shift,contact_area;
+  double delx,dely,delz,fx,fy,fz,R,fpair,r,contact_area;
 
   int num_unique_contacts = 0;
   if (num_contacts == 1) {
@@ -1723,11 +1751,11 @@ void PairBodyRoundedPolyhedron::rescale_cohesive_forces(double** x,
     contact_area *= (MY_PI/(double)num_unique_contacts);
   }
 
-  double j_a = contact_area / (num_contacts * A_ua);
+  double j_a = contact_area / (num_unique_contacts * A_ua);
   if (j_a < 1.0) j_a = 1.0;
-  shift = k_na * cut_inner;
-
   for (m = 0; m < num_contacts; m++) {
+    if (contact_list[m].unique == 0) continue;
+
     ibody = contact_list[m].ibody;
     jbody = contact_list[m].jbody;
 
@@ -1735,12 +1763,17 @@ void PairBodyRoundedPolyhedron::rescale_cohesive_forces(double** x,
     dely = contact_list[m].xi[1] - contact_list[m].xj[1];
     delz = contact_list[m].xi[2] - contact_list[m].xj[2];
     r = sqrt(delx*delx + dely*dely + delz*delz);
-    R = contact_list[m].separation; 
+    R = contact_list[m].separation;
+
+    double energy = 0;
+    kernel_force(R, k_n, k_na, energy, fpair);
+/*
     if (R <= 0) {                // deformation occurs
       fpair = -k_n * R - shift;
     } else if (R <= cut_inner) { // not deforming but cohesive ranges overlap
       fpair = k_na * R - shift;
     } else fpair = 0.0;
+*/
 
     fpair *= j_a;
     fx = delx*fpair/r;
diff --git a/src/BODY/pair_body_rounded_polyhedron.h b/src/BODY/pair_body_rounded_polyhedron.h
index 05985ef813..f59faf9ba6 100644
--- a/src/BODY/pair_body_rounded_polyhedron.h
+++ b/src/BODY/pair_body_rounded_polyhedron.h
@@ -34,6 +34,9 @@ class PairBodyRoundedPolyhedron : public Pair {
   void init_style();
   double init_one(int, int);
 
+  virtual void kernel_force(double R, double k_n, double k_na,
+    double& energy, double& fpair);
+
   struct Contact {
     int ibody, jbody;  // body (i.e. atom) indices (not tags)
     int type;          // 0 = VERTEX-FACE; 1 = EDGE-EDGE
@@ -84,28 +87,35 @@ class PairBodyRoundedPolyhedron : public Pair {
   void allocate();
   void body2space(int);
 
-  int edge_against_face(int ibody, int jbody, double k_n, double k_na,
-                        double** x, Contact* contact_list, int &num_contacts,
-                        double &evdwl, double* facc);
-  int edge_against_edge(int ibody, int jbody, double k_n, double k_na,
-                        double** x,Contact* contact_list, int &num_contacts,
-                        double &evdwl, double* facc);
+  // sphere-sphere interaction
   void sphere_against_sphere(int ibody, int jbody, double delx, double dely, double delz,
                              double rsq, double k_n, double k_na,
                              double** v, double** f, int evflag);
-  void sphere_against_face(int ibody, int jbody,
+  // sphere-edge interaction
+  void sphere_against_edge(int ibody, int jbody,
                        double k_n, double k_na, double** x, double** v,
                        double** f, double** torque, double** angmom, int evflag);
-  void sphere_against_edge(int ibody, int jbody,
+  // sphere-face interaction
+  void sphere_against_face(int ibody, int jbody,
                        double k_n, double k_na, double** x, double** v,
                        double** f, double** torque, double** angmom, int evflag);
+  // edge-edge interactions
+  int edge_against_edge(int ibody, int jbody, double k_n, double k_na,
+                        double** x,Contact* contact_list, int &num_contacts,
+                        double &evdwl, double* facc);
+  // edge-face interactions
+  int edge_against_face(int ibody, int jbody, double k_n, double k_na,
+                        double** x, Contact* contact_list, int &num_contacts,
+                        double &evdwl, double* facc);
 
+  // a face vs. a single edge
   int interaction_face_to_edge(int ibody, int face_index, double* xmi,
                                double rounded_radius_i, int jbody, int edge_index,
                                double* xmj, double rounded_radius_j,
                                double k_n, double k_na, double cut_inner,
                                Contact* contact_list, int &num_contacts,
                                double& energy, double* facc);
+  // an edge vs. an edge from another body
   int interaction_edge_to_edge(int ibody, int edge_index_i, double* xmi,
                                double rounded_radius_i, int jbody, int edge_index_j,
                                double* xmj, double rounded_radius_j,
@@ -113,29 +123,38 @@ class PairBodyRoundedPolyhedron : public Pair {
                                Contact* contact_list, int &num_contacts,
                                double& energy, double* facc);
 
+  // compute contact forces if contact points are detected
   void contact_forces(int ibody, int jbody, double *xi, double *xj,
     double delx, double dely, double delz, double fx, double fy, double fz,
     double** x, double** v, double** angmom, double** f, double** torque,
     double* facc);
 
+  // compute force and torque between two bodies given a pair of interacting points
   void pair_force_and_torque(int ibody, int jbody, double* pi, double* pj,
                              double r, double contact_dist, double k_n, 
-                             double k_na, double shift, double** x, double** v,
+                             double k_na, double** x, double** v,
                              double** f, double** torque, double** angmom,
                              int jflag, double& energy, double* facc);
+  // rescale the cohesive forces if a contact area is detected
   void rescale_cohesive_forces(double** x, double** f, double** torque,
                                Contact* contact_list, int &num_contacts,
                                double k_n, double k_na, double* facc);
 
+  // compute the separation between two contacts
   double contact_separation(const Contact& c1, const Contact& c2);
 
+  // detect the unique contact points (as there may be double counts)
   void find_unique_contacts(Contact* contact_list, int& num_contacts);
 
+  // accumulate torque to a body given a force at a given point
   void sum_torque(double* xm, double *x, double fx, double fy, double fz, double* torque);
-  int opposite_sides(double* n, double* x0, double* a, double* b);
+
+  // find the intersection point (if any) between an edge and a face
   int edge_face_intersect(double* x1, double* x2, double* x3, double* a, double* b,
                           double* hi1, double* hi2, double& d1, double& d2,
                           int& inside_a, int& inside_b);
+  // helper functions
+  int opposite_sides(double* n, double* x0, double* a, double* b);
   void project_pt_plane(const double* q, const double* p, 
                         const double* n, double* q_proj, double &d);
   void project_pt_plane(const double* q, const double* x1, const double* x2, 
-- 
GitLab


From 179dcd68953adb0b45b6b91a990c0c222689a8f0 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Sat, 26 May 2018 10:02:53 -0500
Subject: [PATCH 008/243] Updated pair body rounded/polygon and
 rounded/polyhedron

---
 src/BODY/pair_body_rounded_polygon.cpp    | 21 +++++++++++++--------
 src/BODY/pair_body_rounded_polyhedron.cpp |  4 ++--
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/src/BODY/pair_body_rounded_polygon.cpp b/src/BODY/pair_body_rounded_polygon.cpp
index 62a6d77a01..22300091ae 100644
--- a/src/BODY/pair_body_rounded_polygon.cpp
+++ b/src/BODY/pair_body_rounded_polygon.cpp
@@ -38,12 +38,14 @@
 
 using namespace LAMMPS_NS;
 
-//#define _POLYGON_DEBUG
 #define DELTA 10000
 #define EPSILON 1e-3
 #define MAX_CONTACTS 4  // maximum number of contacts for 2D models
 #define EFF_CONTACTS 2  // effective contacts for 2D models
 
+//#define _CONVEX_POLYGON
+//#define _POLYGON_DEBUG
+
 enum {INVALID=0,NONE=1,VERTEXI=2,VERTEXJ=3,EDGE=4};
 
 /* ---------------------------------------------------------------------- */
@@ -846,11 +848,11 @@ int PairBodyRoundedPolygon::vertex_against_edge(int i, int j,
         #endif
         }
 
+        #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
-        // comment out this break to take into account concave shapes
-
-//        break;
+        break;
+        #endif
 
       } else if (mode == EDGE) {
 
@@ -954,12 +956,11 @@ int PairBodyRoundedPolygon::vertex_against_edge(int i, int j,
           #endif
         } // end if contact
 
+        #ifdef _CONVEX_POLYGON
         // done with the edges from body j,
         // given that vertex ni interacts with only one edge from body j
-        // comment out this break to take into account concave shapes
-
-//        break;
-
+        break;
+        #endif
       } // end if mode
 
     } // end for looping through the edges of body j
@@ -1082,7 +1083,11 @@ int PairBodyRoundedPolygon::compute_distance_to_vertex(int ibody,
     // check if x0 (the queried vertex) and xmi (the body's center of mass)
     // are on the different sides of the edge
 
+    #ifdef _CONVEX_POLYGON
     int m = opposite_sides(xi1, xi2, x0, xmi);
+    #else
+    int m = 1;
+    #endif
 
     if (m == 0) {
 
diff --git a/src/BODY/pair_body_rounded_polyhedron.cpp b/src/BODY/pair_body_rounded_polyhedron.cpp
index 42c107d68e..d0690335df 100644
--- a/src/BODY/pair_body_rounded_polyhedron.cpp
+++ b/src/BODY/pair_body_rounded_polyhedron.cpp
@@ -46,8 +46,8 @@ using namespace MathConst;
 
 #define DELTA 10000
 #define EPSILON 1e-3
-#define MAX_FACE_SIZE 4 // maximum number of vertices per face (same as BodyRoundedPolyhedron)
-#define MAX_CONTACTS 32  // for 3D models
+#define MAX_FACE_SIZE 4  // maximum number of vertices per face (same as BodyRoundedPolyhedron)
+#define MAX_CONTACTS 32  // for 3D models (including duplicated counts)
 
 //#define _POLYHEDRON_DEBUG
 
-- 
GitLab


From 4ca870b2a9f3107e7bf26e75f542c3ce893313de Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Sat, 26 May 2018 11:41:15 -0500
Subject: [PATCH 009/243] Updated doc page for pair body rounded/polygon

---
 doc/src/body.txt                      | 78 +++++++++++++++++++++------
 doc/src/pair_body_rounded_polygon.txt | 48 ++++++++++++++++-
 src/BODY/pair_body_rounded_polygon.h  | 17 ++++--
 3 files changed, 120 insertions(+), 23 deletions(-)

diff --git a/doc/src/body.txt b/doc/src/body.txt
index 8d49efdae4..b76ca1090c 100644
--- a/doc/src/body.txt
+++ b/doc/src/body.txt
@@ -28,16 +28,14 @@ column is used as the {bstyle} argument for the "atom_style
 body"_atom_style.html command.
 
 {nparticle} | rigid body with N sub-particles |
-{rounded/polygon} | 2d convex polygon with N vertices :tb(c=2,s=|)
+{rounded/polygon} | 2d polygons with N vertices :tb(c=2,s=|)
+{rounded/polyhedron} | 3d polyhedra with N vertices, E edges and F faces  :tb(c=2,s=|)
 
 The body style determines what attributes are stored for each body and
 thus how they can be used to compute pairwise body/body or
 bond/non-body (point particle) interactions.  More details of each
 style are described below.
 
-NOTE: The rounded/polygon style listed in the table above and
-described below has not yet been relesed in LAMMPS.  It will be soon.
-
 We hope to add more styles in the future.  See "Section
 10.12"_Section_modify.html#mod_12 for details on how to add a new body
 style to the code.
@@ -175,13 +173,11 @@ The {bflag2} argument is ignored.
 
 [Specifics of body style rounded/polygon:]
 
-NOTE: Aug 2016 - This body style has not yet been added to LAMMPS.
-The info below is a placeholder.
-
-The {rounded/polygon} body style represents body particles as a convex
-polygon with a variable number N > 2 of vertices, which can only be
-used for 2d models.  One example use of this body style is for 2d
-discrete element models, as described in "Fraige"_#Fraige.  Similar to
+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:
 
@@ -203,15 +199,14 @@ x1 y1 z1
 ...
 xN yN zN
 i j j k k ...
-radius :pre
+diameter :pre
 
 N is the number of vertices in the body particle.  M = 6 + 3*N + 2*N +
 1.  The integer line has a single value N.  The floating point line(s)
 list 6 moments of inertia followed by the coordinates of the N
 vertices (x1 to zN) as 3N values, followed by 2N vertex indices
 corresponding to the end points of the N edges, followed by a single
-radius value = the smallest circle encompassing the polygon.  That
-last value is used to facilitate the body/body contact detection.
+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.
 
@@ -235,7 +230,10 @@ particles whose edge length is sqrt(2):
 -0.7071 0.7071 0
 0.7071 0.7071 0
 0.7071 -0.7071 0
-0 1 1 2 2 3 3 0
+0 1
+1 2
+2 3
+3 0
 1.0 :pre
 
 The "pair_style body/rounded/polygon"_pair_body_rounded_polygon.html
@@ -257,8 +255,8 @@ the body particle itself.  These values are calculated using the
 current COM and orientation of the body particle.
 
 For images created by the "dump image"_dump_image.html command, if the
-{body} keyword is set, then each body particle is drawn as a convex
-polygon consisting of N line segments.  Note that the line segments
+{body} keyword is set, then each body particle is drawn as a polygon
+consisting of N line segments.  Note that the line segments
 are drawn between the N vertices, which does not correspond exactly to
 the physical extent of the body (because the "pair_style
 rounded/polygon"_pair_body_rounded_polygon.html defines finite-size
@@ -267,6 +265,52 @@ tangent to the spheres).  The drawn diameter of each line segment is
 determined by the {bflag1} parameter for the {body} keyword.  The
 {bflag2} argument is ignored.
 
+The {rounded/polyhedon} body style represents body particles as
+a polyhedron with N vertices, E edges and F faces.
+Special cases for N = 1 (spheres) and N = 2 (rods) are also valid.
+Similar to body style {rounded/polygon}, the atom_style body command for this body
+style takes two additional arguments:
+
+atom_style body rounded/polyhedron Nmin Nmax
+Nmin = minimum # of vertices in any body in the system
+Nmax = maximum # of vertices in any body in the system :pre
+
+The Nmin and Nmax arguments are used to bound the size of data
+structures used internally by each particle.
+
+When the "read_data"_read_data.html command reads a data file for this
+body style, the following information must be provided for each entry
+in the {Bodies} section of the data file:
+
+atom-ID 3 M
+N E F
+ixx iyy izz ixy ixz iyz
+x1 y1 z1
+...
+xN yN zN
+0 1
+1 2 
+2 3
+...
+0 1 2 -1
+0 2 3 -1
+...
+1 2 3 4
+diameter :pre
+
+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.
+
 :line
 
 :link(Fraige)
diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt
index b6dc2e37b5..32f698d9f7 100644
--- a/doc/src/pair_body_rounded_polygon.txt
+++ b/doc/src/pair_body_rounded_polygon.txt
@@ -8,12 +8,58 @@
 
 pair_style body/rounded/polygon command :h3
 
+[Syntax:]
+
+pair_style body/rounded/polygon c_n c_t mu delta_ua cutoff :pre
+c_n = normal damping coefficient
+c_t = tangential damping coefficient
+mu = normal friction coefficient during gross sliding
+delta_ua = multiple contact scaling factor
+cutoff = global sepration cutoff for interactions (distance units), see below for definition
+
+[Examples:]
+
+pair_style body/rounded/polygon ${c_n} ${c_t} ${mu} ${delta_ua} ${cutoff}
+pair_coeff * * 100.0 1.0
+pair_coeff 1 1 100.0 1.0 :pre
+
 [Description:]
 
-Note: This feature is not yet implemented.
+Style {body/rounded/polygon} is for use with 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.
+
+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.
+
+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 i + rounded diameter of j)/2.
+The interaction forces and energies are also defined with respect to the rounded surface separation,
+instead of center-center distance.
+
+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:
+
+k_n (energy/distance^2)
+k_na (energy/distance^2) :ul
 
 [Related commands:]
 
 "pair_style body"_pair_body.html
 
 [Default:] none
+
+:link(Fraige)
+[(Fraige)] F. Y. Fraige, P. A. Langston, A. J. Matchett, J. Dodds,
+Particuology, 6, 455 (2008).
diff --git a/src/BODY/pair_body_rounded_polygon.h b/src/BODY/pair_body_rounded_polygon.h
index 09c93b832e..919552305a 100644
--- a/src/BODY/pair_body_rounded_polygon.h
+++ b/src/BODY/pair_body_rounded_polygon.h
@@ -76,24 +76,31 @@ class PairBodyRoundedPolygon : public Pair {
   void allocate();
   void body2space(int);
 
+  // sphere-sphere interaction
+  void sphere_against_sphere(int i, int j, double delx, double dely, double delz,
+                             double rsq, double k_n, double k_na,
+                             double** x, double** v, double** f, int evflag);
+  // vertex-edge interaction
   int vertex_against_edge(int i, int j, double k_n, double k_na,
                           double** x, double** f, double** torque,
                           tagint* tag, Contact* contact_list,
                           int &num_contacts, double &evdwl, double* facc);
-  void sphere_against_sphere(int i, int j, double delx, double dely, double delz,
-                             double rsq, double k_n, double k_na,
-                             double** x, double** v, double** f, int evflag);
+  // compute distance between a point and an edge from another body
   int compute_distance_to_vertex(int ibody, int edge_index, double* xmi,
                                  double rounded_radius, double* x0,
                                  double x0_rounded_radius, double cut_inner,
                                  double &d, double hi[3], double &t,
                                  int &contact);
-  double contact_separation(const Contact& c1, const Contact& c2);
+  // compute contact forces if contact points are detected
   void contact_forces(Contact& contact, double j_a, double** x, 
-                      double** v, double** f, double** angmom, 
+                      double** v, double** f, double** angmom,
+  // compute the separation between two contacts
+  double contact_separation(const Contact& c1, const Contact& c2);
                       double** torque, double &evdwl, double* facc);
+  // accumulate torque to a body given a force at a given point
   void sum_torque(double* xm, double *x, double fx,
                   double fy, double fz, double* torque);
+  // helper functions
   int opposite_sides(double* x1, double* x2, double* a, double* b);
   void total_velocity(double* p, double *xcm, double* vcm, double *angmom,
                       double *inertia, double *quat, double* vi);
-- 
GitLab


From 6b9637eaa3277e134f3d717990966fe03395dfb4 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Sat, 26 May 2018 12:34:07 -0500
Subject: [PATCH 010/243] Added doc page for pair body rounded/polyhedron and
 updated related pages

---
 doc/src/body.txt                         | 58 +++++++++++---------
 doc/src/pair_body_rounded_polygon.txt    | 14 +++--
 doc/src/pair_body_rounded_polyhedron.txt | 67 ++++++++++++++++++++++++
 3 files changed, 110 insertions(+), 29 deletions(-)
 create mode 100644 doc/src/pair_body_rounded_polyhedron.txt

diff --git a/doc/src/body.txt b/doc/src/body.txt
index b76ca1090c..e936f5409c 100644
--- a/doc/src/body.txt
+++ b/doc/src/body.txt
@@ -240,34 +240,14 @@ The "pair_style body/rounded/polygon"_pair_body_rounded_polygon.html
 command can be used with this body style to compute body/body
 interactions.
 
-For output purposes via the "compute
-body/local"_compute_body_local.html and "dump local"_dump.html
-commands, this body style produces one datum for each of the N
-sub-particles in a body particle.  The datum has 3 values:
-
-1 = x position of vertex
-2 = y position of vertex
-3 = z position of vertex :pre
-
-These values are the current position of the vertex within the
-simulation domain, not a displacement from the center-of-mass (COM) of
-the body particle itself.  These values are calculated using the
-current COM and orientation of the body particle.
+:line
 
-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
-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
-determined by the {bflag1} parameter for the {body} keyword.  The
-{bflag2} argument is ignored.
+[Specifics of body style rounded/polyhedron:]
 
-The {rounded/polyhedon} body style represents body particles as
+The {rounded/polyhedron} body style represents body particles as
 a polyhedron with N vertices, E edges and F faces.
 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:
 
@@ -313,6 +293,36 @@ For triangular faces, the last index should be set to -1.
 
 :line
 
+For output purposes via the "compute
+body/local"_compute_body_local.html and "dump local"_dump.html
+commands, this body style produces one datum for each of the N
+sub-particles in a body particle.  The datum has 3 values:
+
+1 = x position of vertex
+2 = y position of vertex
+3 = z position of vertex :pre
+
+These values are the current position of the vertex within the
+simulation domain, not a displacement from the center-of-mass (COM) of
+the body particle itself.  These values are calculated using the
+current COM and orientation of the body particle.
+
+For images created by the "dump image"_dump_image.html command, if the
+{body} keyword is set, then each body particle is drawn as a polygon
+consisting of N line segments.  Note that the line segments
+are drawn between the N vertices, which does not correspond exactly to
+the physical extent of the body (because the "pair_style
+rounded/polygon"_pair_body_rounded_polygon.html defines finite-size
+spheres at those point and the line segments between the spheres are
+tangent to the spheres).  The drawn diameter of each line segment is
+determined by the {bflag1} parameter for the {body} keyword.  The
+{bflag2} argument is ignored.
+
+:line
+
 :link(Fraige)
 [(Fraige)] F. Y. Fraige, P. A. Langston, A. J. Matchett, J. Dodds,
 Particuology, 6, 455 (2008).
+
+:link(Wang)
+[(Wang)] J. Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular Matter, 13, 1 (2011).
diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt
index 32f698d9f7..5352f695b0 100644
--- a/doc/src/pair_body_rounded_polygon.txt
+++ b/doc/src/pair_body_rounded_polygon.txt
@@ -11,15 +11,16 @@ pair_style body/rounded/polygon command :h3
 [Syntax:]
 
 pair_style body/rounded/polygon c_n c_t mu delta_ua cutoff :pre
+
 c_n = normal damping coefficient
 c_t = tangential damping coefficient
 mu = normal friction coefficient during gross sliding
 delta_ua = multiple contact scaling factor
-cutoff = global sepration cutoff for interactions (distance units), see below for definition
+cutoff = global sepration cutoff for interactions (distance units), see below for definition :pre
 
 [Examples:]
 
-pair_style body/rounded/polygon ${c_n} ${c_t} ${mu} ${delta_ua} ${cutoff}
+pair_style body/rounded/polygon 20.0 5.0 0.0 1.0 0.5
 pair_coeff * * 100.0 1.0
 pair_coeff 1 1 100.0 1.0 :pre
 
@@ -36,12 +37,13 @@ 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.
+by circles of diameter a. This is a version of discrete element models (DEM)
+with 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 i + rounded diameter of j)/2.
+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.
 
@@ -56,10 +58,12 @@ k_na (energy/distance^2) :ul
 
 [Related commands:]
 
-"pair_style body"_pair_body.html
+"pair_coeff"_pair_coeff.html
 
 [Default:] none
 
 :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
new file mode 100644
index 0000000000..cfab0e6d15
--- /dev/null
+++ b/doc/src/pair_body_rounded_polyhedron.txt
@@ -0,0 +1,67 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+pair_style body/rounded/polyhedron command :h3
+
+[Syntax:]
+
+pair_style body/rounded/polyhedron c_n c_t mu delta_ua cutoff :pre
+
+c_n = normal damping coefficient
+c_t = tangential damping coefficient
+mu = normal friction coefficient during gross sliding
+delta_ua = multiple contact scaling factor
+cutoff = global sepration cutoff for interactions (distance units), see below for definition :pre
+
+[Examples:]
+
+pair_style body/rounded/polyhedron 20.0 5.0 0.0 1.0 0.5
+pair_coeff * * 100.0 1.0
+pair_coeff 1 1 100.0 1.0 :pre
+
+[Description:]
+
+Style {body/rounded/polyhedron} 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.
+
+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.
+
+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.
+
+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:
+
+k_n (energy/distance^2)
+k_na (energy/distance^2) :ul
+
+[Related commands:]
+
+"pair_coeff"_pair_coeff.html
+
+[Default:] none
+
+:link(Wang)
+[(Wang)] J. Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular Matter, 13, 1 (2011).
+
-- 
GitLab


From 6438cffa5748b27347ca3e748235885e18cf91ec Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Sat, 26 May 2018 13:39:43 -0500
Subject: [PATCH 011/243] Added examples for body rounded/polygon

---
 examples/body/data.squares | 32 ++++++++++++++++++++++
 examples/body/in.squares   | 56 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 88 insertions(+)
 create mode 100755 examples/body/data.squares
 create mode 100755 examples/body/in.squares

diff --git a/examples/body/data.squares b/examples/body/data.squares
new file mode 100755
index 0000000000..55a3dd09a0
--- /dev/null
+++ b/examples/body/data.squares
@@ -0,0 +1,32 @@
+LAMMPS data file for polygons: squares of edge length L: Izz = 1/6mL^2
+2 atoms
+2 bodies
+1 atom types
+-6 6 xlo xhi
+-6 6 ylo yhi
+-0.5 0.5 zlo zhi
+
+Atoms
+
+1 1 1 1 0 0 0
+2 1 1 1 5 1 0
+
+Bodies
+
+1 1 19
+4
+1 1 2.67 0 0 0
+-2 -2 0
+-2 2 0
+2 2 0
+2 -2 0
+0.5
+2 1 19
+4
+1 1 2.67 0 0 0
+-2 -2 0
+-2 2 0
+2 2 0
+2 -2 0
+0.5
+
diff --git a/examples/body/in.squares b/examples/body/in.squares
new file mode 100755
index 0000000000..146ba497e6
--- /dev/null
+++ b/examples/body/in.squares
@@ -0,0 +1,56 @@
+# 2d rounded polygon bodies
+
+variable    r     index 3
+variable    steps index 100000
+variable    T     index 0.5
+variable    P     index 0.2
+variable    seed  index 980411
+
+units       lj
+dimension   2
+
+atom_style  body rounded/polygon 1 6
+atom_modify map array
+read_data   data.squares
+
+replicate   $r $r 1
+
+velocity    all create $T ${seed} 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 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_coeff * * ${k_n} ${k_na}
+
+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
+
+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
+
+restart      100000 restart1.bin restart2.bin
+
+#dump	     2 all image 10000 image.*.jpg type type zoom 2.0 adiam 1.5 body yes 0 0
+#dump_modify  2 pad 6
+
+run   	     ${steps}
-- 
GitLab


From f2c302c2c4b7516660eab58d2f022fca9220b8b5 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Sat, 26 May 2018 14:59:40 -0500
Subject: [PATCH 012/243] Added fix wall/body/polygon and related doc pages

---
 doc/src/fix_wall_body_polygon.txt        | 100 +++++++++++++++++++++++
 doc/src/fix_wall_body_polyhedron.txt     | 100 +++++++++++++++++++++++
 doc/src/pair_body_rounded_polygon.txt    |   4 +-
 doc/src/pair_body_rounded_polyhedron.txt |   4 +-
 src/BODY/fix_wall_body_polygon.h         |   4 +-
 5 files changed, 207 insertions(+), 5 deletions(-)
 create mode 100644 doc/src/fix_wall_body_polygon.txt
 create mode 100644 doc/src/fix_wall_body_polyhedron.txt

diff --git a/doc/src/fix_wall_body_polygon.txt b/doc/src/fix_wall_body_polygon.txt
new file mode 100644
index 0000000000..00d23c207c
--- /dev/null
+++ b/doc/src/fix_wall_body_polygon.txt
@@ -0,0 +1,100 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+fix wall/body/polygon command :h3
+
+[Syntax:]
+
+fix ID group-ID wall/body/polygon k_n c_n c_t wallstyle args keyword values ... :pre
+
+ID, group-ID are documented in "fix"_fix.html command :ulb,l
+wall/body/polygon = style name of this fix command :l
+k_n = normal repulsion strength (force/distance units or pressure units - see discussion below) :l
+c_n = normal damping coefficient (force/distance units or pressure units - see discussion below) :l
+c_t = tangential damping coefficient (force/distance units or pressure units - see discussion below) :l
+wallstyle = {xplane} or {yplane} or {zplane} or {zcylinder} :l
+args = list of arguments for a particular style :l
+  {xplane} or {yplane} args = lo hi
+    lo,hi = position of lower and upper plane (distance units), either can be NULL)
+  {zcylinder} args = radius
+    radius = cylinder radius (distance units) :pre
+zero or more keyword/value pairs may be appended to args :l
+keyword = {wiggle} :l
+  {wiggle} values = dim amplitude period
+    dim = {x} or {y} or {z}
+    amplitude = size of oscillation (distance units)
+    period = time of oscillation (time units) :pre
+:ule
+
+[Examples:]
+
+fix 1 all wall/body/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 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 {wallstyle} can be planar or cylindrical.  The 3 planar options
+specify a pair of walls in a dimension.  Wall positions are given by
+{lo} and {hi}.  Either of the values can be specified as NULL if a
+single wall is desired.  For a {zcylinder} wallstyle, the cylinder's
+axis is at x = y = 0.0, and the radius of the cylinder is specified.
+
+Optionally, the wall can be moving, if the {wiggle} keyword is appended.
+
+For the {wiggle} keyword, the wall oscillates sinusoidally, similar to
+the oscillations of particles which can be specified by the
+"fix move"_fix_move.html command.  This is useful in packing
+simulations of particles.  The arguments to the {wiggle}
+keyword specify a dimension for the motion, as well as it's
+{amplitude} and {period}.  Note that if the dimension is in the plane
+of the wall, this is effectively a shearing motion.  If the dimension
+is perpendicular to the wall, it is more of a shaking motion.  A
+{zcylinder} wall can only be wiggled in the z dimension.
+
+Each timestep, the position of a wiggled wall in the appropriate {dim}
+is set according to this equation:
+
+position = coord + A - A cos (omega * delta) :pre
+
+where {coord} is the specified initial position of the wall, {A} is
+the {amplitude}, {omega} is 2 PI / {period}, and {delta} is the time
+elapsed since the fix was specified.  The velocity of the wall is set
+to the derivative of this expression.
+
+[Restart, fix_modify, output, run start/stop, minimize info:]
+
+None of the "fix_modify"_fix_modify.html options are relevant to this
+fix.  No global or per-atom quantities are stored by this fix for
+access by various "output commands"_Section_howto.html#howto_15.  No
+parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
+
+[Restrictions:]
+
+This fix is part of the BODY package.  It is only enabled if
+LAMMPS was built with that package.  See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info.
+
+Any dimension (xyz) that has a wall must be non-periodic.
+
+[Related commands:]
+
+"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
new file mode 100644
index 0000000000..a1eef4df07
--- /dev/null
+++ b/doc/src/fix_wall_body_polyhedron.txt
@@ -0,0 +1,100 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+fix wall/body/polyhedron command :h3
+
+[Syntax:]
+
+fix ID group-ID wall/body/polyhedron k_n c_n c_t wallstyle args keyword values ... :pre
+
+ID, group-ID are documented in "fix"_fix.html command :ulb,l
+wall/body/polyhedron = style name of this fix command :l
+k_n = normal repulsion strength (force/distance units or pressure units - see discussion below) :l
+c_n = normal damping coefficient (force/distance units or pressure units - see discussion below) :l
+c_t = tangential damping coefficient (force/distance units or pressure units - see discussion below) :l
+wallstyle = {xplane} or {yplane} or {zplane} or {zcylinder} :l
+args = list of arguments for a particular style :l
+  {xplane} or {yplane} args = lo hi
+    lo,hi = position of lower and upper plane (distance units), either can be NULL)
+  {zcylinder} args = radius
+    radius = cylinder radius (distance units) :pre
+zero or more keyword/value pairs may be appended to args :l
+keyword = {wiggle} :l
+  {wiggle} values = dim amplitude period
+    dim = {x} or {y} or {z}
+    amplitude = size of oscillation (distance units)
+    period = time of oscillation (time units) :pre
+:ule
+
+[Examples:]
+
+fix 1 all wall/body/polyhedron 1000.0 20.0 5.0 xplane -10.0 10.0
+
+[Description:]
+
+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 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 {wallstyle} can be planar or cylindrical.  The 3 planar options
+specify a pair of walls in a dimension.  Wall positions are given by
+{lo} and {hi}.  Either of the values can be specified as NULL if a
+single wall is desired.  For a {zcylinder} wallstyle, the cylinder's
+axis is at x = y = 0.0, and the radius of the cylinder is specified.
+
+Optionally, the wall can be moving, if the {wiggle} keyword is appended.
+
+For the {wiggle} keyword, the wall oscillates sinusoidally, similar to
+the oscillations of particles which can be specified by the
+"fix move"_fix_move.html command.  This is useful in packing
+simulations of particles.  The arguments to the {wiggle}
+keyword specify a dimension for the motion, as well as it's
+{amplitude} and {period}.  Note that if the dimension is in the plane
+of the wall, this is effectively a shearing motion.  If the dimension
+is perpendicular to the wall, it is more of a shaking motion.  A
+{zcylinder} wall can only be wiggled in the z dimension.
+
+Each timestep, the position of a wiggled wall in the appropriate {dim}
+is set according to this equation:
+
+position = coord + A - A cos (omega * delta) :pre
+
+where {coord} is the specified initial position of the wall, {A} is
+the {amplitude}, {omega} is 2 PI / {period}, and {delta} is the time
+elapsed since the fix was specified.  The velocity of the wall is set
+to the derivative of this expression.
+
+[Restart, fix_modify, output, run start/stop, minimize info:]
+
+None of the "fix_modify"_fix_modify.html options are relevant to this
+fix.  No global or per-atom quantities are stored by this fix for
+access by various "output commands"_Section_howto.html#howto_15.  No
+parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
+
+[Restrictions:]
+
+This fix is part of the BODY package.  It is only enabled if
+LAMMPS was built with that package.  See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info.
+
+Any dimension (xyz) that has a wall must be non-periodic.
+
+[Related commands:]
+
+"pair_style body/rounded/polyhedron"_pair_body_rounded_polygon.html
+
+[Default:] none
diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt
index 5352f695b0..00896b4c7b 100644
--- a/doc/src/pair_body_rounded_polygon.txt
+++ b/doc/src/pair_body_rounded_polygon.txt
@@ -53,8 +53,8 @@ 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:
 
-k_n (energy/distance^2)
-k_na (energy/distance^2) :ul
+k_n (energy/distance^2 units)
+k_na (energy/distance^2 units) :ul
 
 [Related commands:]
 
diff --git a/doc/src/pair_body_rounded_polyhedron.txt b/doc/src/pair_body_rounded_polyhedron.txt
index cfab0e6d15..9a5c20ddb6 100644
--- a/doc/src/pair_body_rounded_polyhedron.txt
+++ b/doc/src/pair_body_rounded_polyhedron.txt
@@ -53,8 +53,8 @@ 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:
 
-k_n (energy/distance^2)
-k_na (energy/distance^2) :ul
+k_n (energy/distance^2 units)
+k_na (energy/distance^2 units) :ul
 
 [Related commands:]
 
diff --git a/src/BODY/fix_wall_body_polygon.h b/src/BODY/fix_wall_body_polygon.h
index 3521c6c797..b71dcb0683 100644
--- a/src/BODY/fix_wall_body_polygon.h
+++ b/src/BODY/fix_wall_body_polygon.h
@@ -45,7 +45,9 @@ class FixWallBodyPolygon : public Fix {
 
  protected:
   int wallstyle,pairstyle,wiggle,axis;
-  double kn,c_n,c_t;
+  double kn;          // normal repulsion strength
+  double c_n;         // normal damping coefficient
+  double c_t;         // tangential damping coefficient
   double lo,hi,cylradius;
   double amplitude,period,omega;
   double dt;
-- 
GitLab


From 7aab9327318b3fb61b058b8c1a840791c5a3628f Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Tue, 29 May 2018 15:49:15 -0500
Subject: [PATCH 013/243] Fixed typos in pair body rounded/polygon header file

---
 src/BODY/pair_body_rounded_polygon.h | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/BODY/pair_body_rounded_polygon.h b/src/BODY/pair_body_rounded_polygon.h
index 919552305a..aabe86270c 100644
--- a/src/BODY/pair_body_rounded_polygon.h
+++ b/src/BODY/pair_body_rounded_polygon.h
@@ -92,11 +92,13 @@ class PairBodyRoundedPolygon : public Pair {
                                  double &d, double hi[3], double &t,
                                  int &contact);
   // compute contact forces if contact points are detected
-  void contact_forces(Contact& contact, double j_a, double** x, 
-                      double** v, double** f, double** angmom,
+  void contact_forces(Contact& contact, double j_a,
+                      double** x, double** v, double** angmom, double** f,
+                      double** torque, double &evdwl, double* facc);
+
   // compute the separation between two contacts
   double contact_separation(const Contact& c1, const Contact& c2);
-                      double** torque, double &evdwl, double* facc);
+
   // accumulate torque to a body given a force at a given point
   void sum_torque(double* xm, double *x, double fx,
                   double fy, double fz, double* torque);
-- 
GitLab


From d4cca615fb558d84411232f45d6de4758bc3f73e Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Tue, 29 May 2018 23:42:03 -0500
Subject: [PATCH 014/243] Refactored pair body rounded/polyhedron so that
 kernel_force() can be derived for other styles

---
 examples/body/in.squares                  |   8 +-
 src/BODY/pair_body_rounded_polyhedron.cpp | 126 +++++++++-------------
 src/BODY/pair_body_rounded_polyhedron.h   |  36 +++----
 3 files changed, 72 insertions(+), 98 deletions(-)

diff --git a/examples/body/in.squares b/examples/body/in.squares
index 146ba497e6..c812b4e0be 100755
--- a/examples/body/in.squares
+++ b/examples/body/in.squares
@@ -1,9 +1,9 @@
 # 2d rounded polygon bodies
 
-variable    r     index 3
+variable    r     index 4
 variable    steps index 100000
 variable    T     index 0.5
-variable    P     index 0.2
+variable    P     index 0.1
 variable    seed  index 980411
 
 units       lj
@@ -48,9 +48,7 @@ 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
 
-restart      100000 restart1.bin restart2.bin
-
 #dump	     2 all image 10000 image.*.jpg type type zoom 2.0 adiam 1.5 body yes 0 0
 #dump_modify  2 pad 6
 
-run   	     ${steps}
+run          ${steps}
diff --git a/src/BODY/pair_body_rounded_polyhedron.cpp b/src/BODY/pair_body_rounded_polyhedron.cpp
index d0690335df..4c65f69530 100644
--- a/src/BODY/pair_body_rounded_polyhedron.cpp
+++ b/src/BODY/pair_body_rounded_polyhedron.cpp
@@ -123,7 +123,7 @@ void PairBodyRoundedPolyhedron::compute(int eflag, int vflag)
   int i,j,ii,jj,inum,jnum,itype,jtype;
   int ni,nj,npi,npj,ifirst,jfirst,nei,nej,iefirst,jefirst;
   double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,facc[3];
-  double rsq,eradi,eradj,k_nij,k_naij;
+  double rsq,eradi,eradj;
   int *ilist,*jlist,*numneigh,**firstneigh;
 
   evdwl = 0.0;
@@ -215,9 +215,6 @@ void PairBodyRoundedPolyhedron::compute(int eflag, int vflag)
       nej = ednum[j];
       jefirst = edfirst[j];
       eradj = enclosing_radius[j];
-      
-      k_nij = k_n[itype][jtype];
-      k_naij = k_na[itype][jtype];
 
       // no interaction
 
@@ -227,8 +224,8 @@ void PairBodyRoundedPolyhedron::compute(int eflag, int vflag)
       // sphere-sphere interaction
 
       if (npi == 1 && npj == 1) {
-        sphere_against_sphere(i, j, delx, dely, delz, rsq,
-                              k_nij, k_naij, v, f, evflag);
+        sphere_against_sphere(i, j, itype, jtype, delx, dely, delz,
+                              rsq, v, f, evflag);
         continue;
       }
 
@@ -265,15 +262,15 @@ void PairBodyRoundedPolyhedron::compute(int eflag, int vflag)
       // one of the two bodies is a sphere
 
       if (npj == 1) {
-        sphere_against_face(i, j, k_nij, k_naij, x, v, f, torque,
+        sphere_against_face(i, j, itype, jtype, x, v, f, torque,
                             angmom, evflag);
-        sphere_against_edge(i, j, k_nij, k_naij, x, v, f, torque,
+        sphere_against_edge(i, j, itype, jtype, x, v, f, torque,
                             angmom, evflag);
         continue;
       } else if (npi == 1) {
-        sphere_against_face(j, i, k_nij, k_naij, x, v, f, torque,
+        sphere_against_face(j, i, jtype, itype, x, v, f, torque,
                             angmom, evflag);
-        sphere_against_edge(j, i, k_nij, k_naij, x, v, f, torque,
+        sphere_against_edge(j, i, jtype, itype, x, v, f, torque,
                             angmom, evflag);
         continue;
       }
@@ -287,21 +284,21 @@ void PairBodyRoundedPolyhedron::compute(int eflag, int vflag)
       #ifdef _POLYHEDRON_DEBUG
       printf("INTERACTION between edges of %d vs. faces of %d:\n", i, j);
       #endif 
-      interact = edge_against_face(i, j, k_nij, k_naij, x, contact_list,
+      interact = edge_against_face(i, j, itype, jtype, x, contact_list,
                                    num_contacts, evdwl, facc);
 
       // check interaction between j's edges and i' faces
       #ifdef _POLYHEDRON_DEBUG
       printf("\nINTERACTION between edges of %d vs. faces of %d:\n", j, i);
       #endif
-      interact = edge_against_face(j, i, k_nij, k_naij, x, contact_list,
+      interact = edge_against_face(j, i, jtype, itype, x, contact_list,
                                    num_contacts, evdwl, facc);
 
       // check interaction between i's edges and j' edges
       #ifdef _POLYHEDRON_DEBUG
       printf("INTERACTION between edges of %d vs. edges of %d:\n", i, j);
       #endif 
-      interact = edge_against_edge(i, j, k_nij, k_naij, x, contact_list,
+      interact = edge_against_edge(i, j, itype, jtype, x, contact_list,
                                    num_contacts, evdwl, facc);
 
       // estimate the contact area
@@ -309,7 +306,7 @@ void PairBodyRoundedPolyhedron::compute(int eflag, int vflag)
 
       if (num_contacts > 0) {
         rescale_cohesive_forces(x, f, torque, contact_list, num_contacts,
-                                k_nij, k_naij, facc);
+                                itype, jtype, facc);
       }
 
       if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair,evdwl,0.0,
@@ -594,9 +591,8 @@ void PairBodyRoundedPolyhedron::body2space(int i)
 ---------------------------------------------------------------------- */
 
 void PairBodyRoundedPolyhedron::sphere_against_sphere(int ibody, int jbody,
-                       double delx, double dely, double delz, double rsq,
-                       double k_n, double k_na, double** v, double** f,
-                       int evflag)
+  int itype, int jtype, double delx, double dely, double delz, double rsq,
+  double** v, double** f, int evflag)
 {
   double rradi,rradj,contact_dist;
   double vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3;
@@ -612,7 +608,7 @@ void PairBodyRoundedPolyhedron::sphere_against_sphere(int ibody, int jbody,
   R = rij - contact_dist;
 
   energy = 0;
-  kernel_force(R, k_n, k_na, energy, fpair);
+  kernel_force(R, itype, jtype, energy, fpair);
 /*
   if (R <= 0) {           // deformation occurs
     fpair = -k_n * R - shift;
@@ -686,9 +682,8 @@ void PairBodyRoundedPolyhedron::sphere_against_sphere(int ibody, int jbody,
 ---------------------------------------------------------------------- */
 
 void PairBodyRoundedPolyhedron::sphere_against_edge(int ibody, int jbody,
-                       double k_n, double k_na, double** x, double** v,
-                       double** f, double** torque, double** angmom,
-                       int evflag)
+  int itype, int jtype, double** x, double** v, double** f, double** torque,
+  double** angmom, int evflag)
 {
   int ni,nei,ifirst,iefirst,npi1,npi2,ibonus;
   double xi1[3],xi2[3],vti[3],h[3],fn[3],ft[3],d,t;
@@ -760,7 +755,7 @@ void PairBodyRoundedPolyhedron::sphere_against_edge(int ibody, int jbody,
     R = rij - contact_dist;
 
     energy = 0;
-    kernel_force(R, k_n, k_na, energy, fpair);
+    kernel_force(R, itype, jtype, energy, fpair);
 /*
     if (R <= 0) {           // deformation occurs
       fpair = -k_n * R - shift;
@@ -844,9 +839,8 @@ void PairBodyRoundedPolyhedron::sphere_against_edge(int ibody, int jbody,
 ---------------------------------------------------------------------- */
 
 void PairBodyRoundedPolyhedron::sphere_against_face(int ibody, int jbody,
-                       double k_n, double k_na, double** x, double** v,
-                       double** f, double** torque, double** angmom,
-                       int evflag)
+ int itype, int jtype, double** x, double** v, double** f, double** torque,
+ double** angmom, int evflag)
 {
   int ni,nfi,inside,ifirst,iffirst,npi1,npi2,npi3,ibonus,tmp;
   double xi1[3],xi2[3],xi3[3],ui[3],vi[3],vti[3],n[3],h[3],fn[3],ft[3],d;
@@ -913,7 +907,7 @@ void PairBodyRoundedPolyhedron::sphere_against_face(int ibody, int jbody,
     R = rij - contact_dist;
 
     energy = 0;
-    kernel_force(R, k_n, k_na, energy, fpair);
+    kernel_force(R, itype, jtype, energy, fpair);
 /*
     if (R <= 0) { // deformation occurs
       fpair = -k_n * R - shift;
@@ -1009,8 +1003,8 @@ void PairBodyRoundedPolyhedron::sphere_against_face(int ibody, int jbody,
 ---------------------------------------------------------------------- */
 
 int PairBodyRoundedPolyhedron::edge_against_edge(int ibody, int jbody,
-             double k_n, double k_na, double** x, Contact* contact_list,
-             int &num_contacts, double &evdwl, double* facc)
+  int itype, int jtype, double** x, Contact* contact_list, int &num_contacts,
+  double &evdwl, double* facc)
 {
   int ni,nei,nj,nej,contact,interact;
   double rradi,rradj,energy;
@@ -1037,7 +1031,7 @@ int PairBodyRoundedPolyhedron::edge_against_edge(int ibody, int jbody,
 
       interact = interaction_edge_to_edge(ibody, ni, x[ibody], rradi,
                                           jbody, nj, x[jbody], rradj,
-                                          k_n, k_na, cut_inner,
+                                          itype, jtype, cut_inner,
                                           contact_list, num_contacts,
                                           energy, facc);
     }
@@ -1065,8 +1059,8 @@ int PairBodyRoundedPolyhedron::edge_against_edge(int ibody, int jbody,
 ---------------------------------------------------------------------- */
 
 int PairBodyRoundedPolyhedron::edge_against_face(int ibody, int jbody,
-             double k_n, double k_na, double** x, Contact* contact_list,
-             int &num_contacts, double &evdwl, double* facc)
+  int itype, int jtype, double** x, Contact* contact_list, int &num_contacts,
+  double &evdwl, double* facc)
 {
   int ni,nei,nj,nfj,contact,interact;
   double rradi,rradj,energy;
@@ -1095,7 +1089,7 @@ int PairBodyRoundedPolyhedron::edge_against_face(int ibody, int jbody,
 
       interact = interaction_face_to_edge(jbody, nj, x[jbody], rradj,
                                           ibody, ni, x[ibody], rradi,
-                                          k_n, k_na, cut_inner,
+                                          itype, jtype, cut_inner,
                                           contact_list, num_contacts,
                                           energy, facc);
     } 
@@ -1132,20 +1126,10 @@ int PairBodyRoundedPolyhedron::edge_against_face(int ibody, int jbody,
 ------------------------------------------------------------------------- */
 
 int PairBodyRoundedPolyhedron::interaction_edge_to_edge(int ibody,
-                                                int edge_index_i,
-                                                double *xmi,
-                                                double rounded_radius_i,
-                                                int jbody,
-                                                int edge_index_j,
-                                                double *xmj,
-                                                double rounded_radius_j,
-                                                double k_n,
-                                                double k_na,
-                                                double cut_inner,
-                                                Contact* contact_list,
-                                                int &num_contacts,
-                                                double &energy,
-                                                double* facc)
+  int edge_index_i,  double *xmi, double rounded_radius_i,
+  int jbody, int edge_index_j, double *xmj, double rounded_radius_j,
+  int itype, int jtype, double cut_inner,
+  Contact* contact_list, int &num_contacts, double &energy, double* facc)
 {
   int ifirst,iefirst,jfirst,jefirst,npi1,npi2,npj1,npj2,interact;
   double xi1[3],xi2[3],xpj1[3],xpj2[3];
@@ -1219,7 +1203,7 @@ int PairBodyRoundedPolyhedron::interaction_edge_to_edge(int ibody,
   if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1 &&
       r < contact_dist + cut_inner) {
     pair_force_and_torque(jbody, ibody, h1, h2, r, contact_dist,
-                          k_n, k_na, x, v, f, torque, angmom,
+                          jtype, itype, x, v, f, torque, angmom,
                           jflag, energy, facc);
 
     interact = EE_INTERACT;
@@ -1270,20 +1254,10 @@ int PairBodyRoundedPolyhedron::interaction_edge_to_edge(int ibody,
 ------------------------------------------------------------------------- */
 
 int PairBodyRoundedPolyhedron::interaction_face_to_edge(int ibody,
-                                                int face_index,
-                                                double *xmi,
-                                                double rounded_radius_i,
-                                                int jbody,
-                                                int edge_index,
-                                                double *xmj,
-                                                double rounded_radius_j,
-                                                double k_n,
-                                                double k_na,
-                                                double cut_inner,
-                                                Contact* contact_list,
-                                                int &num_contacts,
-                                                double &energy,
-                                                double* facc)
+  int face_index, double *xmi, double rounded_radius_i,
+  int jbody, int edge_index, double *xmj, double rounded_radius_j,
+  int itype, int jtype, double cut_inner,
+  Contact* contact_list, int &num_contacts, double &energy, double* facc)
 {
   if (face_index >= facnum[ibody]) return EF_INVALID;
 
@@ -1397,7 +1371,7 @@ int PairBodyRoundedPolyhedron::interaction_face_to_edge(int ibody,
       if (inside1) {
         if (static_cast<int>(discrete[jfirst+npj1][6]) == 0) {
           pair_force_and_torque(jbody, ibody, xpj1, hi1, d1, contact_dist,
-                                k_n, k_na, x, v, f, torque, angmom,
+                                jtype, itype, x, v, f, torque, angmom,
                                 jflag, energy, facc);
           #ifdef _POLYHEDRON_DEBUG
           printf(" - compute pair force between vertex %d from edge %d of body %d "
@@ -1436,7 +1410,7 @@ int PairBodyRoundedPolyhedron::interaction_face_to_edge(int ibody,
       if (inside2) {
         if (static_cast<int>(discrete[jfirst+npj2][6]) == 0) {
           pair_force_and_torque(jbody, ibody, xpj2, hi2, d2, contact_dist,
-                                k_n, k_na, x, v, f, torque, angmom,
+                                jtype, itype, x, v, f, torque, angmom,
                                 jflag, energy, facc);
           #ifdef _POLYHEDRON_DEBUG
           printf(" - compute pair force between vertex %d from edge %d of body %d "
@@ -1502,11 +1476,11 @@ int PairBodyRoundedPolyhedron::interaction_face_to_edge(int ibody,
     int jflag = 1;
     if (d1 < d2)
       pair_force_and_torque(jbody, ibody, xpj1, hi1, d1, contact_dist,
-                            k_n, k_na, x, v, f, torque, angmom,
+                            jtype, itype, x, v, f, torque, angmom,
                             jflag, energy, facc);
     else
       pair_force_and_torque(jbody, ibody, xpj2, hi2, d2, contact_dist,
-                            k_n, k_na, x, v, f, torque, angmom,
+                            jtype, itype, x, v, f, torque, angmom,
                             jflag, energy, facc);
   }
 
@@ -1520,7 +1494,7 @@ int PairBodyRoundedPolyhedron::interaction_face_to_edge(int ibody,
 
 void PairBodyRoundedPolyhedron::pair_force_and_torque(int ibody, int jbody,
                  double* pi, double* pj, double r, double contact_dist,
-                 double k_n, double k_na, double** x,
+                 int itype, int jtype, double** x,
                  double** v, double** f, double** torque, double** angmom,
                  int jflag, double& energy, double* facc)
 {
@@ -1531,7 +1505,7 @@ void PairBodyRoundedPolyhedron::pair_force_and_torque(int ibody, int jbody,
   delz = pi[2] - pj[2];
   R = r - contact_dist;
 
-  kernel_force(R, k_n, k_na, energy, fpair);
+  kernel_force(R, itype, jtype, energy, fpair);
 /*
   if (R <= 0) {                // deformation occurs
     fpair = -k_n * R - shift;
@@ -1583,17 +1557,19 @@ void PairBodyRoundedPolyhedron::pair_force_and_torque(int ibody, int jbody,
     here is the harmonic potential (linear piece-wise forces) in Wang et al.
 ------------------------------------------------------------------------- */
 
-void PairBodyRoundedPolyhedron::kernel_force(double R, double k_n, double k_na,
+void PairBodyRoundedPolyhedron::kernel_force(double R, int itype, int jtype,
   double& energy, double& fpair)
 {
-  double shift = k_na * cut_inner;
+  double kn = k_n[itype][jtype];
+  double kna = k_na[itype][jtype];
+  double shift = kna * cut_inner;
   double e = 0;
   if (R <= 0) {           // deformation occurs
-    fpair = -k_n * R - shift;
-    e = (0.5 * k_n * R + shift) * R;
+    fpair = -kn * R - shift;
+    e = (0.5 * kn * R + shift) * R;
   } else if (R <= cut_inner) {   // not deforming but cohesive ranges overlap
-    fpair = k_na * R - shift;
-    e = (-0.5 * k_na * R + shift) * R;
+    fpair = kna * R - shift;
+    e = (-0.5 * kna * R + shift) * R;
   } else fpair = 0.0;
   energy += e;
 }
@@ -1710,7 +1686,7 @@ void PairBodyRoundedPolyhedron::contact_forces(int ibody, int jbody,
 
 void PairBodyRoundedPolyhedron::rescale_cohesive_forces(double** x,
      double** f, double** torque, Contact* contact_list, int &num_contacts,
-     double k_n, double k_na, double* facc)
+     int itype, int jtype, double* facc)
 {
   int m,ibody,jbody;
   double delx,dely,delz,fx,fy,fz,R,fpair,r,contact_area;
@@ -1766,7 +1742,7 @@ void PairBodyRoundedPolyhedron::rescale_cohesive_forces(double** x,
     R = contact_list[m].separation;
 
     double energy = 0;
-    kernel_force(R, k_n, k_na, energy, fpair);
+    kernel_force(R, itype, jtype, energy, fpair);
 /*
     if (R <= 0) {                // deformation occurs
       fpair = -k_n * R - shift;
diff --git a/src/BODY/pair_body_rounded_polyhedron.h b/src/BODY/pair_body_rounded_polyhedron.h
index f59faf9ba6..71c04ff966 100644
--- a/src/BODY/pair_body_rounded_polyhedron.h
+++ b/src/BODY/pair_body_rounded_polyhedron.h
@@ -34,7 +34,7 @@ class PairBodyRoundedPolyhedron : public Pair {
   void init_style();
   double init_one(int, int);
 
-  virtual void kernel_force(double R, double k_n, double k_na,
+  virtual void kernel_force(double R, int itype, int jtype,
     double& energy, double& fpair);
 
   struct Contact {
@@ -88,23 +88,23 @@ class PairBodyRoundedPolyhedron : public Pair {
   void body2space(int);
 
   // sphere-sphere interaction
-  void sphere_against_sphere(int ibody, int jbody, double delx, double dely, double delz,
-                             double rsq, double k_n, double k_na,
+  void sphere_against_sphere(int ibody, int jbody, int itype, int jtype,
+                             double delx, double dely, double delz, double rsq,
                              double** v, double** f, int evflag);
   // sphere-edge interaction
-  void sphere_against_edge(int ibody, int jbody,
-                       double k_n, double k_na, double** x, double** v,
-                       double** f, double** torque, double** angmom, int evflag);
+  void sphere_against_edge(int ibody, int jbody, int itype, int jtype,
+                           double** x, double** v, double** f, double** torque,
+                           double** angmom, int evflag);
   // sphere-face interaction
-  void sphere_against_face(int ibody, int jbody,
-                       double k_n, double k_na, double** x, double** v,
-                       double** f, double** torque, double** angmom, int evflag);
+  void sphere_against_face(int ibody, int jbody, int itype, int jtype,
+                           double** x, double** v, double** f, double** torque,
+                           double** angmom, int evflag);
   // edge-edge interactions
-  int edge_against_edge(int ibody, int jbody, double k_n, double k_na,
+  int edge_against_edge(int ibody, int jbody, int itype, int jtype,
                         double** x,Contact* contact_list, int &num_contacts,
                         double &evdwl, double* facc);
   // edge-face interactions
-  int edge_against_face(int ibody, int jbody, double k_n, double k_na,
+  int edge_against_face(int ibody, int jbody, int itype, int jtype,
                         double** x, Contact* contact_list, int &num_contacts,
                         double &evdwl, double* facc);
 
@@ -112,14 +112,14 @@ class PairBodyRoundedPolyhedron : public Pair {
   int interaction_face_to_edge(int ibody, int face_index, double* xmi,
                                double rounded_radius_i, int jbody, int edge_index,
                                double* xmj, double rounded_radius_j,
-                               double k_n, double k_na, double cut_inner,
+                               int itype, int jtype, double cut_inner,
                                Contact* contact_list, int &num_contacts,
                                double& energy, double* facc);
   // an edge vs. an edge from another body
   int interaction_edge_to_edge(int ibody, int edge_index_i, double* xmi,
                                double rounded_radius_i, int jbody, int edge_index_j,
                                double* xmj, double rounded_radius_j,
-                               double k_n, double k_na, double cut_inner,
+                               int itype, int jtype, double cut_inner,
                                Contact* contact_list, int &num_contacts,
                                double& energy, double* facc);
 
@@ -131,14 +131,14 @@ class PairBodyRoundedPolyhedron : public Pair {
 
   // compute force and torque between two bodies given a pair of interacting points
   void pair_force_and_torque(int ibody, int jbody, double* pi, double* pj,
-                             double r, double contact_dist, double k_n, 
-                             double k_na, double** x, double** v,
-                             double** f, double** torque, double** angmom,
-                             int jflag, double& energy, double* facc);
+                             double r, double contact_dist, int itype, int jtype,
+                             double** x, double** v, double** f, double** torque,
+                             double** angmom, int jflag, double& energy, double* facc);
+
   // rescale the cohesive forces if a contact area is detected
   void rescale_cohesive_forces(double** x, double** f, double** torque,
                                Contact* contact_list, int &num_contacts,
-                               double k_n, double k_na, double* facc);
+                               int itype, int jtype, double* facc);
 
   // compute the separation between two contacts
   double contact_separation(const Contact& c1, const Contact& c2);
-- 
GitLab


From 1fbd4fffd41e5e997fff63deb969eb89e1ed4fe1 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Tue, 29 May 2018 23:50:43 -0500
Subject: [PATCH 015/243] Updated rounded/polygon example

---
 examples/body/data.squares | 8 ++++----
 examples/body/in.squares   | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/examples/body/data.squares b/examples/body/data.squares
index 55a3dd09a0..6b198fd422 100755
--- a/examples/body/data.squares
+++ b/examples/body/data.squares
@@ -2,14 +2,14 @@ LAMMPS data file for polygons: squares of edge length L: Izz = 1/6mL^2
 2 atoms
 2 bodies
 1 atom types
--6 6 xlo xhi
--6 6 ylo yhi
+0 12 xlo xhi
+0 12 ylo yhi
 -0.5 0.5 zlo zhi
 
 Atoms
 
-1 1 1 1 0 0 0
-2 1 1 1 5 1 0
+1 1 1 1 4 5 0
+2 1 1 1 9 6 0
 
 Bodies
 
diff --git a/examples/body/in.squares b/examples/body/in.squares
index c812b4e0be..8f949f2cdf 100755
--- a/examples/body/in.squares
+++ b/examples/body/in.squares
@@ -38,7 +38,7 @@ 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
+             y 0.001 $P 1.0 couple xy fixedpoint 0 0 0
 
 fix          2 all enforce2d
 
-- 
GitLab


From f5e9b1e021e57b0bc7c81a68964915aee623c9ca Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Tue, 29 May 2018 23:59:58 -0500
Subject: [PATCH 016/243] Added example input for fix wall rounded/polygon

---
 examples/body/in.squares |  4 +--
 examples/body/in.wall2d  | 56 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 58 insertions(+), 2 deletions(-)
 create mode 100755 examples/body/in.wall2d

diff --git a/examples/body/in.squares b/examples/body/in.squares
index 8f949f2cdf..f771c15381 100755
--- a/examples/body/in.squares
+++ b/examples/body/in.squares
@@ -20,8 +20,8 @@ velocity    all create $T ${seed} 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 0.1
-variable c_t        equal 0.1
+variable c_n        equal 1
+variable c_t        equal 1
 variable mu         equal 0.1
 variable delta_ua   equal 0.5
 
diff --git a/examples/body/in.wall2d b/examples/body/in.wall2d
new file mode 100755
index 0000000000..19788a9dcd
--- /dev/null
+++ b/examples/body/in.wall2d
@@ -0,0 +1,56 @@
+# 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
+
+replicate   $r $r 1
+
+velocity    all create $T ${seed} 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_coeff * * ${k_n} ${k_na}
+
+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          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 yes 0 0
+#dump_modify  2 pad 6
+
+run          ${steps}
-- 
GitLab


From 82b1ab2ac4b522d4b04db558b8959428873d01f0 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Wed, 30 May 2018 00:04:48 -0500
Subject: [PATCH 017/243] Cleaned up pair body rounded/polyhedron

---
 src/BODY/fix_wall_body_polygon.cpp        |  2 +-
 src/BODY/fix_wall_body_polyhedron.cpp     |  2 +-
 src/BODY/pair_body_rounded_polyhedron.cpp | 44 -----------------------
 3 files changed, 2 insertions(+), 46 deletions(-)

diff --git a/src/BODY/fix_wall_body_polygon.cpp b/src/BODY/fix_wall_body_polygon.cpp
index ea81ae26df..72a60b22d0 100644
--- a/src/BODY/fix_wall_body_polygon.cpp
+++ b/src/BODY/fix_wall_body_polygon.cpp
@@ -12,7 +12,7 @@
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
-   Contributing authors: Trung Dac Nguyen (ndactrung@gmail.com)
+   Contributing author: Trung Dac Nguyen (ndactrung@gmail.com)
 ------------------------------------------------------------------------- */
 
 #include <cmath>
diff --git a/src/BODY/fix_wall_body_polyhedron.cpp b/src/BODY/fix_wall_body_polyhedron.cpp
index 4806da9673..879289ea42 100644
--- a/src/BODY/fix_wall_body_polyhedron.cpp
+++ b/src/BODY/fix_wall_body_polyhedron.cpp
@@ -12,7 +12,7 @@
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
-   Contributing authors: Trung Dac Nguyen (ndactrung@gmail.com)
+   Contributing author: Trung Dac Nguyen (ndactrung@gmail.com)
 ------------------------------------------------------------------------- */
 
 #include <cmath>
diff --git a/src/BODY/pair_body_rounded_polyhedron.cpp b/src/BODY/pair_body_rounded_polyhedron.cpp
index 4c65f69530..96307a0ab1 100644
--- a/src/BODY/pair_body_rounded_polyhedron.cpp
+++ b/src/BODY/pair_body_rounded_polyhedron.cpp
@@ -609,15 +609,6 @@ void PairBodyRoundedPolyhedron::sphere_against_sphere(int ibody, int jbody,
 
   energy = 0;
   kernel_force(R, itype, jtype, energy, fpair);
-/*
-  if (R <= 0) {           // deformation occurs
-    fpair = -k_n * R - shift;
-    energy = (0.5 * k_n * R + shift) * R;
-  } else if (R <= cut_inner) {   // not deforming but cohesive ranges overlap
-    fpair = k_na * R - shift;
-    energy = (-0.5 * k_na * R + shift) * R;
-  } else fpair = 0.0;
-*/
 
   fx = delx*fpair/rij;
   fy = dely*fpair/rij;
@@ -756,16 +747,6 @@ void PairBodyRoundedPolyhedron::sphere_against_edge(int ibody, int jbody,
 
     energy = 0;
     kernel_force(R, itype, jtype, energy, fpair);
-/*
-    if (R <= 0) {           // deformation occurs
-      fpair = -k_n * R - shift;
-      energy = (0.5 * k_n * R + shift) * R;
-    } else if (R <= cut_inner) {   // not deforming but cohesive ranges overlap
-      fpair = k_na * R - shift;
-      energy = (-0.5 * k_na * R + shift) * R;
-    } else fpair = 0.0;
-*/
-
 
     fx = delx*fpair/rij;
     fy = dely*fpair/rij;
@@ -908,15 +889,6 @@ void PairBodyRoundedPolyhedron::sphere_against_face(int ibody, int jbody,
 
     energy = 0;
     kernel_force(R, itype, jtype, energy, fpair);
-/*
-    if (R <= 0) { // deformation occurs
-      fpair = -k_n * R - shift;
-      energy = (0.5 * k_n * R + shift) * R;
-    } else if (R <= cut_inner) { // not deforming but cohesive ranges overlap
-      fpair = k_na * R - shift;
-      energy = (-0.5 * k_na * R + shift) * R;
-    } else fpair = 0.0;
-*/
 
     fx = delx*fpair/rij;
     fy = dely*fpair/rij;
@@ -1506,15 +1478,6 @@ void PairBodyRoundedPolyhedron::pair_force_and_torque(int ibody, int jbody,
   R = r - contact_dist;
 
   kernel_force(R, itype, jtype, energy, fpair);
-/*
-  if (R <= 0) {                // deformation occurs
-    fpair = -k_n * R - shift;
-    energy += (0.5 * k_n * R + shift) * R;
-  } else if (R <= cut_inner) { // not deforming but cohesive ranges overlap
-    fpair = k_na * R - shift;
-    energy += (-0.5 * k_na * R + shift) * R;
-  } else fpair = 0.0;
-*/
 
   fx = delx*fpair/r;
   fy = dely*fpair/r;
@@ -1743,13 +1706,6 @@ void PairBodyRoundedPolyhedron::rescale_cohesive_forces(double** x,
 
     double energy = 0;
     kernel_force(R, itype, jtype, energy, fpair);
-/*
-    if (R <= 0) {                // deformation occurs
-      fpair = -k_n * R - shift;
-    } else if (R <= cut_inner) { // not deforming but cohesive ranges overlap
-      fpair = k_na * R - shift;
-    } else fpair = 0.0;
-*/
 
     fpair *= j_a;
     fx = delx*fpair/r;
-- 
GitLab


From 1ee85e59c3f25bb9fb70c8c703417cbac6b818bc Mon Sep 17 00:00:00 2001
From: Stefan Paquay <stefanpaquay@gmail.com>
Date: Fri, 1 Jun 2018 14:50:41 -0400
Subject: [PATCH 018/243] Removed obsolete changes to fix_nve-manifold_rattle

---
 src/USER-MANIFOLD/fix_nve_manifold_rattle.cpp | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/USER-MANIFOLD/fix_nve_manifold_rattle.cpp b/src/USER-MANIFOLD/fix_nve_manifold_rattle.cpp
index 543d49278d..4dcc3f9704 100644
--- a/src/USER-MANIFOLD/fix_nve_manifold_rattle.cpp
+++ b/src/USER-MANIFOLD/fix_nve_manifold_rattle.cpp
@@ -513,6 +513,7 @@ void FixNVEManifoldRattle::rattle_manifold_x(double *x, double *v,
 
   const double c_inv = 1.0 / c;
 
+
   while ( 1 ) {
     v[0] = vt[0] - l*no_dt[0];
     v[1] = vt[1] - l*no_dt[1];
@@ -650,10 +651,10 @@ void FixNVEManifoldRattle::rattle_manifold_v(double *v, double *f,
   }while( (res > tolerance) && (iters < max_iter) );
 
   if( iters >= max_iter && res >= tolerance ){
-    char msg[2048];
-    sprintf(msg,"Failed to constrain atom %d (x = (%f, %f, %f)! res = %e, iters = %d\n",
-            tagi, x[0], x[1], x[2], res, iters);
-    error->all(FLERR,msg);
+          char msg[2048];
+          sprintf(msg,"Failed to constrain atom %d (x = (%f, %f, %f)! res = %e, iters = %d\n",
+                  tagi, x[0], x[1], x[2], res, iters);
+          error->all(FLERR,msg);
   }
 
   stats.v_iters += iters;
-- 
GitLab


From 962946ee45df30722b1288afde0f7be334049842 Mon Sep 17 00:00:00 2001
From: Stefan Paquay <stefanpaquay@gmail.com>
Date: Fri, 1 Jun 2018 14:52:34 -0400
Subject: [PATCH 019/243] Ported fix enforce2d to Kokkos.

---
 doc/src/fix_enforce2d.txt           |   1 +
 src/KOKKOS/fix_enforce2d_kokkos.cpp | 102 ++++++++++++++++++++++++++++
 src/KOKKOS/fix_enforce2d_kokkos.h   |  92 +++++++++++++++++++++++++
 3 files changed, 195 insertions(+)
 create mode 100644 src/KOKKOS/fix_enforce2d_kokkos.cpp
 create mode 100644 src/KOKKOS/fix_enforce2d_kokkos.h

diff --git a/doc/src/fix_enforce2d.txt b/doc/src/fix_enforce2d.txt
index 5d04e96677..01840254b6 100644
--- a/doc/src/fix_enforce2d.txt
+++ b/doc/src/fix_enforce2d.txt
@@ -7,6 +7,7 @@
 :line
 
 fix enforce2d command :h3
+fix enforce2d/kk command :h3
 
 [Syntax:]
 
diff --git a/src/KOKKOS/fix_enforce2d_kokkos.cpp b/src/KOKKOS/fix_enforce2d_kokkos.cpp
new file mode 100644
index 0000000000..b5fb964ea8
--- /dev/null
+++ b/src/KOKKOS/fix_enforce2d_kokkos.cpp
@@ -0,0 +1,102 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+   Contributing authors: Stefan Paquay (Brandeis University)
+------------------------------------------------------------------------- */
+
+#include "atom_masks.h"
+#include "atom_kokkos.h"
+#include "fix_enforce2d_kokkos.h"
+
+using namespace LAMMPS_NS;
+
+
+template <class DeviceType>
+FixEnforce2DKokkos<DeviceType>::FixEnforce2DKokkos(LAMMPS *lmp, int narg, char **arg) :
+  FixEnforce2D(lmp, narg, arg)
+{
+  kokkosable = 1;
+  atomKK = (AtomKokkos *) atom;
+  execution_space = ExecutionSpaceFromDevice<DeviceType>::space;
+
+  datamask_read   = X_MASK | V_MASK | F_MASK | MASK_MASK;
+  datamask_modify = X_MASK | V_MASK | F_MASK;
+}
+
+
+template <class DeviceType>
+void FixEnforce2DKokkos<DeviceType>::setup(int vflag)
+{
+  post_force(vflag);
+}
+
+
+template <class DeviceType>
+void FixEnforce2DKokkos<DeviceType>::post_force(int vflag)
+{
+  atomKK->sync(execution_space,datamask_read);
+  atomKK->modified(execution_space,datamask_modify);
+
+  x = atomKK->k_x.view<DeviceType>();
+  v = atomKK->k_v.view<DeviceType>();
+  f = atomKK->k_f.view<DeviceType>();
+
+  mask = atomKK->k_mask.view<DeviceType>();
+
+  int nlocal = atomKK->nlocal;
+  if (igroup == atomKK->firstgroup) nlocal = atomKK->nfirst;
+
+  FixEnforce2DKokkosPostForceFunctor<DeviceType> functor(this);
+  Kokkos::parallel_for(nlocal,functor);
+
+  // Probably sync here again?
+  atomKK->sync(execution_space,datamask_read);
+  atomKK->modified(execution_space,datamask_modify);
+
+  for (int m = 0; m < nfixlist; m++)
+    flist[m]->enforce2d();
+
+
+}
+
+
+template <class DeviceType>
+void FixEnforce2DKokkos<DeviceType>::post_force_item( int i ) const
+{
+
+  if (mask[i] & groupbit){
+    v(i,2) = 0;
+    x(i,2) = 0;
+    f(i,2) = 0;
+
+    // Add for omega, angmom, torque...
+  }
+
+}
+
+
+template<class DeviceType>
+void FixEnforce2DKokkos<DeviceType>::cleanup_copy()
+{
+  id = style = NULL;
+  vatom = NULL;
+}
+
+
+namespace LAMMPS_NS {
+template class FixEnforce2DKokkos<LMPDeviceType>;
+#ifdef KOKKOS_HAVE_CUDA
+template class FixEnforce2DKokkos<LMPHostType>;
+#endif
+}
diff --git a/src/KOKKOS/fix_enforce2d_kokkos.h b/src/KOKKOS/fix_enforce2d_kokkos.h
new file mode 100644
index 0000000000..11cb213210
--- /dev/null
+++ b/src/KOKKOS/fix_enforce2d_kokkos.h
@@ -0,0 +1,92 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef FIX_CLASS
+
+FixStyle(enforce2d/kk,FixEnforce2DKokkos<LMPDeviceType>)
+FixStyle(enforce2d/kk/device,FixEnforce2DKokkos<LMPDeviceType>)
+FixStyle(enforce2d/kk/host,FixEnforce2DKokkos<LMPHostType>)
+
+#else
+
+#ifndef LMP_FIX_ENFORCE2D_KOKKOS_H
+#define LMP_FIX_ENFORCE2D_KOKKOS_H
+
+#include "fix_enforce2d.h"
+#include "kokkos_type.h"
+
+namespace LAMMPS_NS {
+
+template<class DeviceType>
+class FixEnforce2DKokkos : public FixEnforce2D {
+ public:
+  FixEnforce2DKokkos(class LAMMPS *, int, char **);
+  // ~FixEnforce2DKokkos() {}
+  // void init();
+  void cleanup_copy();
+  void setup(int);
+  void post_force(int);
+
+  KOKKOS_INLINE_FUNCTION
+  void post_force_item(int) const;
+
+  // void min_setup(int);       Kokkos does not support minimization (yet)
+  // void min_post_force(int);  Kokkos does not support minimization (yet)
+  // void post_force_respa(int, int, int);  No RRESPA support yet.
+
+ private:
+
+  typename ArrayTypes<DeviceType>::t_x_array x;
+  typename ArrayTypes<DeviceType>::t_v_array v;
+  typename ArrayTypes<DeviceType>::t_f_array f;
+
+  typename ArrayTypes<DeviceType>::t_int_1d mask;
+};
+
+
+template <class DeviceType>
+struct FixEnforce2DKokkosPostForceFunctor  {
+  typedef DeviceType device_type;
+  FixEnforce2DKokkos<DeviceType> c;
+
+  FixEnforce2DKokkosPostForceFunctor(FixEnforce2DKokkos<DeviceType>* c_ptr):
+    c(*c_ptr) {c.cleanup_copy();};
+  KOKKOS_INLINE_FUNCTION
+  void operator()(const int i) const {
+    c.post_force_item(i);
+  }
+};
+
+
+}
+
+#endif
+#endif
+
+/* ERROR/WARNING messages:
+
+E: Illegal ... command
+
+Self-explanatory.  Check the input script syntax and compare to the
+documentation for the command.  You can use -echo screen as a
+command-line option when running LAMMPS to see the offending line.
+
+E: Cannot use fix enforce2d with 3d simulation
+
+Self-explanatory.
+
+E: Fix enforce2d must be defined after fix %s
+
+UNDOCUMENTED
+
+*/
-- 
GitLab


From 031077b4fa2c62d59da6720b68c7dd633eb87377 Mon Sep 17 00:00:00 2001
From: Stefan Paquay <stefanpaquay@gmail.com>
Date: Fri, 1 Jun 2018 17:19:53 -0400
Subject: [PATCH 020/243] Made enforce2d also set rotations to in-plane.

---
 src/KOKKOS/fix_enforce2d_kokkos.cpp | 106 ++++++++++++++++++++++++----
 src/KOKKOS/fix_enforce2d_kokkos.h   |  15 ++--
 2 files changed, 103 insertions(+), 18 deletions(-)

diff --git a/src/KOKKOS/fix_enforce2d_kokkos.cpp b/src/KOKKOS/fix_enforce2d_kokkos.cpp
index b5fb964ea8..88291ead6e 100644
--- a/src/KOKKOS/fix_enforce2d_kokkos.cpp
+++ b/src/KOKKOS/fix_enforce2d_kokkos.cpp
@@ -12,13 +12,16 @@
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
-   Contributing authors: Stefan Paquay (Brandeis University)
+   Contributing authors: Stefan Paquay & Matthew Peterson (Brandeis University)
 ------------------------------------------------------------------------- */
 
 #include "atom_masks.h"
 #include "atom_kokkos.h"
+#include "comm.h"
+#include "error.h"
 #include "fix_enforce2d_kokkos.h"
 
+
 using namespace LAMMPS_NS;
 
 
@@ -30,14 +33,21 @@ FixEnforce2DKokkos<DeviceType>::FixEnforce2DKokkos(LAMMPS *lmp, int narg, char *
   atomKK = (AtomKokkos *) atom;
   execution_space = ExecutionSpaceFromDevice<DeviceType>::space;
 
-  datamask_read   = X_MASK | V_MASK | F_MASK | MASK_MASK;
-  datamask_modify = X_MASK | V_MASK | F_MASK;
+  datamask_read   = X_MASK | V_MASK | F_MASK | OMEGA_MASK | MASK_MASK;
+  /* TORQUE_MASK | ANGMOM_MASK | */ // MASK_MASK;
+
+  datamask_modify = X_MASK | V_MASK | F_MASK | OMEGA_MASK; // |
+	  /* TORQUE_MASK | ANGMOM_MASK */ ;
 }
 
 
 template <class DeviceType>
 void FixEnforce2DKokkos<DeviceType>::setup(int vflag)
 {
+  if( comm->me == 0 ){
+    fprintf(screen, "omega, angmom and torque flags are %d, %d, %d\n",
+            atomKK->omega_flag, atomKK->angmom_flag, atomKK->torque_flag );
+  }
   post_force(vflag);
 }
 
@@ -52,13 +62,71 @@ void FixEnforce2DKokkos<DeviceType>::post_force(int vflag)
   v = atomKK->k_v.view<DeviceType>();
   f = atomKK->k_f.view<DeviceType>();
 
+  if( atomKK->omega_flag )
+    omega  = atomKK->k_omega.view<DeviceType>();
+
+  if( atomKK->angmom_flag )
+    angmom = atomKK->k_angmom.view<DeviceType>();
+
+  if( atomKK->torque_flag )
+    torque = atomKK->k_torque.view<DeviceType>();
+
+
   mask = atomKK->k_mask.view<DeviceType>();
 
   int nlocal = atomKK->nlocal;
   if (igroup == atomKK->firstgroup) nlocal = atomKK->nfirst;
 
-  FixEnforce2DKokkosPostForceFunctor<DeviceType> functor(this);
-  Kokkos::parallel_for(nlocal,functor);
+  int flag_mask = 0;
+  if( atomKK->omega_flag ) flag_mask  |= 1;
+  if( atomKK->angmom_flag ) flag_mask |= 2;
+  if( atomKK->torque_flag ) flag_mask |= 4;
+
+  switch( flag_mask ){
+    case 0:{
+      FixEnforce2DKokkosPostForceFunctor<DeviceType,0,0,0> functor(this);
+      Kokkos::parallel_for(nlocal,functor);
+      break;
+    }
+    case 1:{
+      FixEnforce2DKokkosPostForceFunctor<DeviceType,1,0,0> functor(this);
+      Kokkos::parallel_for(nlocal,functor);
+      break;
+    }
+    case 2:{
+      FixEnforce2DKokkosPostForceFunctor<DeviceType,0,1,0> functor(this);
+      Kokkos::parallel_for(nlocal,functor);
+      break;
+    }
+    case 3:{
+      FixEnforce2DKokkosPostForceFunctor<DeviceType,1,1,0> functor(this);
+      Kokkos::parallel_for(nlocal,functor);
+      break;
+    }
+    case 4:{
+      FixEnforce2DKokkosPostForceFunctor<DeviceType,0,0,1> functor(this);
+      Kokkos::parallel_for(nlocal,functor);
+      break;
+    }
+    case 5:{
+      FixEnforce2DKokkosPostForceFunctor<DeviceType,1,0,1> functor(this);
+      Kokkos::parallel_for(nlocal,functor);
+      break;
+    }
+    case 6:{
+      FixEnforce2DKokkosPostForceFunctor<DeviceType,0,1,1> functor(this);
+      Kokkos::parallel_for(nlocal,functor);
+      break;
+    }
+    case 7:{
+      FixEnforce2DKokkosPostForceFunctor<DeviceType,1,1,1> functor(this);
+      Kokkos::parallel_for(nlocal,functor);
+      break;
+    }
+    default:
+      error->all(FLERR, "flag_mask outside of what it should be");
+  }
+
 
   // Probably sync here again?
   atomKK->sync(execution_space,datamask_read);
@@ -66,23 +134,33 @@ void FixEnforce2DKokkos<DeviceType>::post_force(int vflag)
 
   for (int m = 0; m < nfixlist; m++)
     flist[m]->enforce2d();
-
-
 }
 
 
 template <class DeviceType>
+template <int omega_flag, int angmom_flag, int torque_flag>
 void FixEnforce2DKokkos<DeviceType>::post_force_item( int i ) const
 {
-
   if (mask[i] & groupbit){
-    v(i,2) = 0;
-    x(i,2) = 0;
-    f(i,2) = 0;
-
-    // Add for omega, angmom, torque...
+    // x(i,2) = 0; // Enforce2d does not set x[2] to zero either... :/
+    v(i,2) = 0.0;
+    f(i,2) = 0.0;
+
+    if(omega_flag){
+      omega(i,0) = 0.0;
+      omega(i,1) = 0.0;
+    }
+
+    if(angmom_flag){
+      angmom(i,0) = 0.0;
+      angmom(i,1) = 0.0;
+    }
+
+    if(torque_flag){
+      torque(i,0) = 0.0;
+      torque(i,1) = 0.0;
+    }
   }
-
 }
 
 
diff --git a/src/KOKKOS/fix_enforce2d_kokkos.h b/src/KOKKOS/fix_enforce2d_kokkos.h
index 11cb213210..4130797f2c 100644
--- a/src/KOKKOS/fix_enforce2d_kokkos.h
+++ b/src/KOKKOS/fix_enforce2d_kokkos.h
@@ -37,8 +37,9 @@ class FixEnforce2DKokkos : public FixEnforce2D {
   void setup(int);
   void post_force(int);
 
+  template <int omega_flag, int angmom_flag, int torque_flag>
   KOKKOS_INLINE_FUNCTION
-  void post_force_item(int) const;
+  void post_force_item(const int i) const;
 
   // void min_setup(int);       Kokkos does not support minimization (yet)
   // void min_post_force(int);  Kokkos does not support minimization (yet)
@@ -50,20 +51,26 @@ class FixEnforce2DKokkos : public FixEnforce2D {
   typename ArrayTypes<DeviceType>::t_v_array v;
   typename ArrayTypes<DeviceType>::t_f_array f;
 
+  typename ArrayTypes<DeviceType>::t_v_array omega;
+  typename ArrayTypes<DeviceType>::t_v_array angmom;
+  typename ArrayTypes<DeviceType>::t_f_array torque;
+
   typename ArrayTypes<DeviceType>::t_int_1d mask;
 };
 
 
-template <class DeviceType>
-struct FixEnforce2DKokkosPostForceFunctor  {
+template <class DeviceType, int omega_flag, int angmom_flag, int torque_flag>
+struct FixEnforce2DKokkosPostForceFunctor {
   typedef DeviceType device_type;
   FixEnforce2DKokkos<DeviceType> c;
 
   FixEnforce2DKokkosPostForceFunctor(FixEnforce2DKokkos<DeviceType>* c_ptr):
     c(*c_ptr) {c.cleanup_copy();};
+
   KOKKOS_INLINE_FUNCTION
   void operator()(const int i) const {
-    c.post_force_item(i);
+    // c.template? Really C++?
+    c.template post_force_item <omega_flag, angmom_flag, torque_flag>(i);
   }
 };
 
-- 
GitLab


From 0e9691831321c8d2c4f03614b3076eaa34f48f2f Mon Sep 17 00:00:00 2001
From: Stefan Paquay <stefanpaquay@gmail.com>
Date: Fri, 1 Jun 2018 17:22:25 -0400
Subject: [PATCH 021/243] Made enforce2d_kokkos actually set data masks.

---
 src/KOKKOS/fix_enforce2d_kokkos.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/KOKKOS/fix_enforce2d_kokkos.cpp b/src/KOKKOS/fix_enforce2d_kokkos.cpp
index 88291ead6e..e9a42e5c31 100644
--- a/src/KOKKOS/fix_enforce2d_kokkos.cpp
+++ b/src/KOKKOS/fix_enforce2d_kokkos.cpp
@@ -33,11 +33,11 @@ FixEnforce2DKokkos<DeviceType>::FixEnforce2DKokkos(LAMMPS *lmp, int narg, char *
   atomKK = (AtomKokkos *) atom;
   execution_space = ExecutionSpaceFromDevice<DeviceType>::space;
 
-  datamask_read   = X_MASK | V_MASK | F_MASK | OMEGA_MASK | MASK_MASK;
-  /* TORQUE_MASK | ANGMOM_MASK | */ // MASK_MASK;
+  datamask_read   = X_MASK | V_MASK | F_MASK | OMEGA_MASK | MASK_MASK
+	  | TORQUE_MASK | ANGMOM_MASK; // | */ // MASK_MASK;
 
-  datamask_modify = X_MASK | V_MASK | F_MASK | OMEGA_MASK; // |
-	  /* TORQUE_MASK | ANGMOM_MASK */ ;
+  datamask_modify = X_MASK | V_MASK | F_MASK | OMEGA_MASK
+	  | TORQUE_MASK | ANGMOM_MASK;
 }
 
 
-- 
GitLab


From 824a21a661fe679fadaf3ef7f43e954a9e35e7a6 Mon Sep 17 00:00:00 2001
From: Stefan Paquay <stefanpaquay@gmail.com>
Date: Mon, 4 Jun 2018 12:28:06 -0400
Subject: [PATCH 022/243] Removed debug printing from setup.

---
 src/KOKKOS/fix_enforce2d_kokkos.cpp | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/src/KOKKOS/fix_enforce2d_kokkos.cpp b/src/KOKKOS/fix_enforce2d_kokkos.cpp
index e9a42e5c31..8ba68a0c0c 100644
--- a/src/KOKKOS/fix_enforce2d_kokkos.cpp
+++ b/src/KOKKOS/fix_enforce2d_kokkos.cpp
@@ -44,10 +44,6 @@ FixEnforce2DKokkos<DeviceType>::FixEnforce2DKokkos(LAMMPS *lmp, int narg, char *
 template <class DeviceType>
 void FixEnforce2DKokkos<DeviceType>::setup(int vflag)
 {
-  if( comm->me == 0 ){
-    fprintf(screen, "omega, angmom and torque flags are %d, %d, %d\n",
-            atomKK->omega_flag, atomKK->angmom_flag, atomKK->torque_flag );
-  }
   post_force(vflag);
 }
 
-- 
GitLab


From 4bf9a93c11c9f2baf4290dea63b6db6e7ad199cb Mon Sep 17 00:00:00 2001
From: Stefan Paquay <stefanpaquay@gmail.com>
Date: Wed, 6 Jun 2018 10:47:07 -0400
Subject: [PATCH 023/243] Removed x dependency from enforce2d_kokkos.

---
 src/KOKKOS/fix_enforce2d_kokkos.cpp | 9 ++++++---
 src/KOKKOS/fix_enforce2d_kokkos.h   | 2 --
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/KOKKOS/fix_enforce2d_kokkos.cpp b/src/KOKKOS/fix_enforce2d_kokkos.cpp
index 8ba68a0c0c..da33455978 100644
--- a/src/KOKKOS/fix_enforce2d_kokkos.cpp
+++ b/src/KOKKOS/fix_enforce2d_kokkos.cpp
@@ -33,10 +33,10 @@ FixEnforce2DKokkos<DeviceType>::FixEnforce2DKokkos(LAMMPS *lmp, int narg, char *
   atomKK = (AtomKokkos *) atom;
   execution_space = ExecutionSpaceFromDevice<DeviceType>::space;
 
-  datamask_read   = X_MASK | V_MASK | F_MASK | OMEGA_MASK | MASK_MASK
+  datamask_read   = V_MASK | F_MASK | OMEGA_MASK | MASK_MASK
 	  | TORQUE_MASK | ANGMOM_MASK; // | */ // MASK_MASK;
 
-  datamask_modify = X_MASK | V_MASK | F_MASK | OMEGA_MASK
+  datamask_modify = V_MASK | F_MASK | OMEGA_MASK
 	  | TORQUE_MASK | ANGMOM_MASK;
 }
 
@@ -44,6 +44,10 @@ FixEnforce2DKokkos<DeviceType>::FixEnforce2DKokkos(LAMMPS *lmp, int narg, char *
 template <class DeviceType>
 void FixEnforce2DKokkos<DeviceType>::setup(int vflag)
 {
+  if( comm->me == 0 ){
+    fprintf(screen, "omega, angmom and torque flags are %d, %d, %d\n",
+            atomKK->omega_flag, atomKK->angmom_flag, atomKK->torque_flag );
+  }
   post_force(vflag);
 }
 
@@ -54,7 +58,6 @@ void FixEnforce2DKokkos<DeviceType>::post_force(int vflag)
   atomKK->sync(execution_space,datamask_read);
   atomKK->modified(execution_space,datamask_modify);
 
-  x = atomKK->k_x.view<DeviceType>();
   v = atomKK->k_v.view<DeviceType>();
   f = atomKK->k_f.view<DeviceType>();
 
diff --git a/src/KOKKOS/fix_enforce2d_kokkos.h b/src/KOKKOS/fix_enforce2d_kokkos.h
index 4130797f2c..d8a13d281f 100644
--- a/src/KOKKOS/fix_enforce2d_kokkos.h
+++ b/src/KOKKOS/fix_enforce2d_kokkos.h
@@ -46,8 +46,6 @@ class FixEnforce2DKokkos : public FixEnforce2D {
   // void post_force_respa(int, int, int);  No RRESPA support yet.
 
  private:
-
-  typename ArrayTypes<DeviceType>::t_x_array x;
   typename ArrayTypes<DeviceType>::t_v_array v;
   typename ArrayTypes<DeviceType>::t_f_array f;
 
-- 
GitLab


From d0ba8e1dcbe7527914a6f5bb1dc74bf4fda8c5f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Trnka?= <trnka@scm.com>
Date: Wed, 6 Jun 2018 17:24:26 +0200
Subject: [PATCH 024/243] Make omega_mass proportional to (N+1)kT

According to papers like Martyna, Tobias, Klein (JCP 1994,
doi:10.1063/1.467468 section II.F) and Martyna, Tuckerman, Tobias,
Klein (Mol. Phys. 1996, doi:10.1080/00268979600100761 section 2.5), the
mass of the cell parameters should be proportional to (Ndof + dim) / dim, or
in other words, Natoms + 1.
---
 src/fix_nh.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/fix_nh.cpp b/src/fix_nh.cpp
index 186376d952..170fd9db16 100644
--- a/src/fix_nh.cpp
+++ b/src/fix_nh.cpp
@@ -798,7 +798,7 @@ void FixNH::setup(int vflag)
 
   if (pstat_flag) {
     double kt = boltz * t_target;
-    double nkt = atom->natoms * kt;
+    double nkt = (atom->natoms + 1) * kt;
 
     for (int i = 0; i < 3; i++)
       if (p_flag[i])
@@ -1826,7 +1826,7 @@ void FixNH::nhc_press_integrate()
   // Update masses, to preserve initial freq, if flag set
 
   if (omega_mass_flag) {
-    double nkt = atom->natoms * kt;
+    double nkt = (atom->natoms + 1) * kt;
     for (int i = 0; i < 3; i++)
       if (p_flag[i])
         omega_mass[i] = nkt/(p_freq[i]*p_freq[i]);
-- 
GitLab


From 3495141dbe6b4728ab2ad9bcd2f2ecd43994c2da Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Trnka?= <trnka@scm.com>
Date: Wed, 6 Jun 2018 17:35:19 +0200
Subject: [PATCH 025/243] Fix the target kinetic energy of the NH barostat

The cell momenta should be thermostatted to kT per barostat degree
of freedom (d^2 in general, d*(d-1) without rotations), according to
Shinoda et al. 2004 (doi:10.1103/PhysRevB.69.134103) Eqn. 1 and Martyna,
Tobias, Klein (JCP 1994, doi:10.1063/1.467468 section II.D).
---
 src/fix_nh.cpp | 32 +++++++++++++++++++++++---------
 1 file changed, 23 insertions(+), 9 deletions(-)

diff --git a/src/fix_nh.cpp b/src/fix_nh.cpp
index 170fd9db16..73c70420c5 100644
--- a/src/fix_nh.cpp
+++ b/src/fix_nh.cpp
@@ -1446,7 +1446,7 @@ double FixNH::compute_scalar()
   double volume;
   double energy;
   double kt = boltz * t_target;
-  double lkt_press = kt;
+  double lkt_press = 0.0;
   int ich;
   if (dimension == 3) volume = domain->xprd * domain->yprd * domain->zprd;
   else volume = domain->xprd * domain->yprd;
@@ -1477,15 +1477,21 @@ double FixNH::compute_scalar()
   //       sum is over barostatted dimensions
 
   if (pstat_flag) {
-    for (i = 0; i < 3; i++)
-      if (p_flag[i])
+    for (i = 0; i < 3; i++) {
+      if (p_flag[i]) {
         energy += 0.5*omega_dot[i]*omega_dot[i]*omega_mass[i] +
           p_hydro*(volume-vol0) / (pdim*nktv2p);
+        lkt_press += kt;
+      }
+    }
 
     if (pstyle == TRICLINIC) {
-      for (i = 3; i < 6; i++)
-        if (p_flag[i])
+      for (i = 3; i < 6; i++) {
+        if (p_flag[i]) {
           energy += 0.5*omega_dot[i]*omega_dot[i]*omega_mass[i];
+          lkt_press += kt;
+        }
+      }
     }
 
     // extra contributions from thermostat chain for barostat
@@ -1818,10 +1824,10 @@ void FixNH::nhc_temp_integrate()
 
 void FixNH::nhc_press_integrate()
 {
-  int ich,i;
+  int ich,i,pdof;
   double expfac,factor_etap,kecurrent;
   double kt = boltz * t_target;
-  double lkt_press = kt;
+  double lkt_press;
 
   // Update masses, to preserve initial freq, if flag set
 
@@ -1850,14 +1856,22 @@ void FixNH::nhc_press_integrate()
   }
 
   kecurrent = 0.0;
+  pdof = 0;
   for (i = 0; i < 3; i++)
-    if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i];
+    if (p_flag[i]) {
+      kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i];
+      pdof++;
+    }
 
   if (pstyle == TRICLINIC) {
     for (i = 3; i < 6; i++)
-      if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i];
+      if (p_flag[i]) {
+        kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i];
+        pdof++;
+      }
   }
 
+  lkt_press = pdof * kt;
   etap_dotdot[0] = (kecurrent - lkt_press)/etap_mass[0];
 
   double ncfac = 1.0/nc_pchain;
-- 
GitLab


From e08ccd0a7c62b71fa8cb8f3cd4f54b83ca2ed7de Mon Sep 17 00:00:00 2001
From: Stefan Paquay <stefanpaquay@gmail.com>
Date: Fri, 29 Jun 2018 11:58:27 -0400
Subject: [PATCH 026/243] Forgot to include change in fix_enforce2d to access
 fixlist in kokkos port.

---
 src/fix_enforce2d.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/fix_enforce2d.h b/src/fix_enforce2d.h
index cdead78f6a..a3f79309dc 100644
--- a/src/fix_enforce2d.h
+++ b/src/fix_enforce2d.h
@@ -36,7 +36,7 @@ class FixEnforce2D : public Fix {
   void post_force_respa(int, int, int);
   void min_post_force(int);
 
- private:
+ protected:
   int nfixlist;
   class Fix **flist;
 };
-- 
GitLab


From 24405217d04153ba8eaf9d204d595e0a428cb6f7 Mon Sep 17 00:00:00 2001
From: Stefan Paquay <stefanpaquay@gmail.com>
Date: Thu, 5 Jul 2018 11:20:27 -0400
Subject: [PATCH 027/243] Updated Install.sh in KOKKOS.

---
 src/KOKKOS/Install.sh | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh
index c6fab2a1b1..08c7468a49 100755
--- a/src/KOKKOS/Install.sh
+++ b/src/KOKKOS/Install.sh
@@ -93,6 +93,8 @@ action domain_kokkos.cpp
 action domain_kokkos.h
 action fix_deform_kokkos.cpp
 action fix_deform_kokkos.h
+action fix_enforce2d_kokkos.cpp
+action fix_enforce2d_kokkos.h
 action fix_eos_table_rx_kokkos.cpp fix_eos_table_rx.cpp
 action fix_eos_table_rx_kokkos.h fix_eos_table_rx.h  
 action fix_langevin_kokkos.cpp
-- 
GitLab


From db75232957d5964f07df7dc6d1f774ca089fc3b8 Mon Sep 17 00:00:00 2001
From: Stefan Paquay <stefanpaquay@gmail.com>
Date: Fri, 6 Jul 2018 11:31:48 -0400
Subject: [PATCH 028/243] Removed debug print and comment.

---
 src/KOKKOS/fix_enforce2d_kokkos.cpp | 4 ----
 src/KOKKOS/fix_enforce2d_kokkos.h   | 1 -
 2 files changed, 5 deletions(-)

diff --git a/src/KOKKOS/fix_enforce2d_kokkos.cpp b/src/KOKKOS/fix_enforce2d_kokkos.cpp
index da33455978..f2c313b2fe 100644
--- a/src/KOKKOS/fix_enforce2d_kokkos.cpp
+++ b/src/KOKKOS/fix_enforce2d_kokkos.cpp
@@ -44,10 +44,6 @@ FixEnforce2DKokkos<DeviceType>::FixEnforce2DKokkos(LAMMPS *lmp, int narg, char *
 template <class DeviceType>
 void FixEnforce2DKokkos<DeviceType>::setup(int vflag)
 {
-  if( comm->me == 0 ){
-    fprintf(screen, "omega, angmom and torque flags are %d, %d, %d\n",
-            atomKK->omega_flag, atomKK->angmom_flag, atomKK->torque_flag );
-  }
   post_force(vflag);
 }
 
diff --git a/src/KOKKOS/fix_enforce2d_kokkos.h b/src/KOKKOS/fix_enforce2d_kokkos.h
index d8a13d281f..ae8183acf1 100644
--- a/src/KOKKOS/fix_enforce2d_kokkos.h
+++ b/src/KOKKOS/fix_enforce2d_kokkos.h
@@ -67,7 +67,6 @@ struct FixEnforce2DKokkosPostForceFunctor {
 
   KOKKOS_INLINE_FUNCTION
   void operator()(const int i) const {
-    // c.template? Really C++?
     c.template post_force_item <omega_flag, angmom_flag, torque_flag>(i);
   }
 };
-- 
GitLab


From 0c1dcfb617e9b0f4aeb3a38919d14b20ab09b357 Mon Sep 17 00:00:00 2001
From: Stan Moore <stamoor@sandia.gov>
Date: Fri, 6 Jul 2018 17:06:37 -0600
Subject: [PATCH 029/243] Favor copymode instead of cleanup_copy

---
 src/KOKKOS/fix_enforce2d_kokkos.cpp | 11 ++---------
 src/KOKKOS/fix_enforce2d_kokkos.h   |  3 +--
 src/fix_enforce2d.cpp               |  2 ++
 3 files changed, 5 insertions(+), 11 deletions(-)

diff --git a/src/KOKKOS/fix_enforce2d_kokkos.cpp b/src/KOKKOS/fix_enforce2d_kokkos.cpp
index f2c313b2fe..33aa39e2f6 100644
--- a/src/KOKKOS/fix_enforce2d_kokkos.cpp
+++ b/src/KOKKOS/fix_enforce2d_kokkos.cpp
@@ -77,6 +77,7 @@ void FixEnforce2DKokkos<DeviceType>::post_force(int vflag)
   if( atomKK->angmom_flag ) flag_mask |= 2;
   if( atomKK->torque_flag ) flag_mask |= 4;
 
+  copymode = 1;
   switch( flag_mask ){
     case 0:{
       FixEnforce2DKokkosPostForceFunctor<DeviceType,0,0,0> functor(this);
@@ -121,7 +122,7 @@ void FixEnforce2DKokkos<DeviceType>::post_force(int vflag)
     default:
       error->all(FLERR, "flag_mask outside of what it should be");
   }
-
+  copymode = 0;
 
   // Probably sync here again?
   atomKK->sync(execution_space,datamask_read);
@@ -159,14 +160,6 @@ void FixEnforce2DKokkos<DeviceType>::post_force_item( int i ) const
 }
 
 
-template<class DeviceType>
-void FixEnforce2DKokkos<DeviceType>::cleanup_copy()
-{
-  id = style = NULL;
-  vatom = NULL;
-}
-
-
 namespace LAMMPS_NS {
 template class FixEnforce2DKokkos<LMPDeviceType>;
 #ifdef KOKKOS_HAVE_CUDA
diff --git a/src/KOKKOS/fix_enforce2d_kokkos.h b/src/KOKKOS/fix_enforce2d_kokkos.h
index ae8183acf1..1ed3cf3ef8 100644
--- a/src/KOKKOS/fix_enforce2d_kokkos.h
+++ b/src/KOKKOS/fix_enforce2d_kokkos.h
@@ -33,7 +33,6 @@ class FixEnforce2DKokkos : public FixEnforce2D {
   FixEnforce2DKokkos(class LAMMPS *, int, char **);
   // ~FixEnforce2DKokkos() {}
   // void init();
-  void cleanup_copy();
   void setup(int);
   void post_force(int);
 
@@ -63,7 +62,7 @@ struct FixEnforce2DKokkosPostForceFunctor {
   FixEnforce2DKokkos<DeviceType> c;
 
   FixEnforce2DKokkosPostForceFunctor(FixEnforce2DKokkos<DeviceType>* c_ptr):
-    c(*c_ptr) {c.cleanup_copy();};
+    c(*c_ptr) {};
 
   KOKKOS_INLINE_FUNCTION
   void operator()(const int i) const {
diff --git a/src/fix_enforce2d.cpp b/src/fix_enforce2d.cpp
index 4ffd2ca7ac..791a52c50c 100644
--- a/src/fix_enforce2d.cpp
+++ b/src/fix_enforce2d.cpp
@@ -38,6 +38,8 @@ FixEnforce2D::FixEnforce2D(LAMMPS *lmp, int narg, char **arg) :
 
 FixEnforce2D::~FixEnforce2D()
 {
+  if (copymode) return;
+
   delete [] flist;
 }
 
-- 
GitLab


From 13338bf8cbfb7fcb047a43b39b49d6506b7e6e48 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Mon, 9 Jul 2018 16:15:15 -0600
Subject: [PATCH 030/243] 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        |  41 ++--
 doc/src/pair_body_rounded_polygon.txt       |  97 ++++++---
 doc/src/pair_body_rounded_polyhedron.txt    |  97 ++++++---
 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, 1653 insertions(+), 189 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 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.
+This fix is for use with 3d models of body particles of style
+{rounded/polyhedron}.  It bounds the simulation domain with wall(s).
+All particles in the group interact with the wall when they are close
+enough to touch it.  The nature of the interaction between the wall
+and the polygon particles is the same as that between the polygon
+particles themselves, which is similar to a Hookean potential.  See
+"Section 6.14"_Section_howto.html#howto_14 of the manual and the
+"body"_body.html doc page for more details on using body particles.
+
+The parameters {k_n}, {c_n}, {c_t} have the same meaning and units as
+those specified with the "pair_style
+body/rounded/polyhedron"_pair_body_rounded_polyhedron.html command.
 
 The {wallstyle} can be planar or cylindrical.  The 3 planar options
 specify a pair of walls in a dimension.  Wall positions are given by
@@ -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.
-
-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.
-
-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.
-
-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:
+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 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.
+
+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.
+
+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.
-
-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.
-
-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.
-
-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:
+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 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.
+
+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.
+
+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++) {
-- 
GitLab


From ad4f61a5ce6abdf69c5cff22dec3d563ead95c35 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 10 Jul 2018 09:07:54 -0400
Subject: [PATCH 031/243] update fatbin makefile for libgpu.a to latest
 additions

---
 lib/gpu/Nvidia.makefile_multi | 46 +++++++++++++++++++++++++++++++++--
 1 file changed, 44 insertions(+), 2 deletions(-)

diff --git a/lib/gpu/Nvidia.makefile_multi b/lib/gpu/Nvidia.makefile_multi
index 5fb35cce3c..94cfd4af6b 100644
--- a/lib/gpu/Nvidia.makefile_multi
+++ b/lib/gpu/Nvidia.makefile_multi
@@ -79,7 +79,10 @@ OBJS = $(OBJ_DIR)/lal_atom.o $(OBJ_DIR)/lal_ans.o \
        $(OBJ_DIR)/lal_lj_cubic.o $(OBJ_DIR)/lal_lj_cubic_ext.o \
        $(OBJ_DIR)/lal_ufm.o $(OBJ_DIR)/lal_ufm_ext.o \
        $(OBJ_DIR)/lal_dipole_long_lj.o $(OBJ_DIR)/lal_dipole_long_lj_ext.o \
-       $(OBJ_DIR)/lal_lj_expand_coul_long.o $(OBJ_DIR)/lal_lj_expand_coul_long_ext.o
+       $(OBJ_DIR)/lal_lj_expand_coul_long.o $(OBJ_DIR)/lal_lj_expand_coul_long_ext.o \
+       $(OBJ_DIR)/lal_coul_long_cs.o $(OBJ_DIR)/lal_coul_long_cs_ext.o \
+       $(OBJ_DIR)/lal_born_coul_long_cs.o $(OBJ_DIR)/lal_born_coul_long_cs_ext.o \
+       $(OBJ_DIR)/lal_born_coul_wolf_cs.o $(OBJ_DIR)/lal_born_coul_wolf_cs_ext.o
 
 CBNS = $(OBJ_DIR)/device.cubin $(OBJ_DIR)/device_cubin.h \
        $(OBJ_DIR)/atom.cubin $(OBJ_DIR)/atom_cubin.h \
@@ -137,7 +140,10 @@ CBNS = $(OBJ_DIR)/device.cubin $(OBJ_DIR)/device_cubin.h \
        $(OBJ_DIR)/lj_cubic.cubin $(OBJ_DIR)/lj_cubic_cubin.h \
        $(OBJ_DIR)/ufm.cubin $(OBJ_DIR)/ufm_cubin.h \
        $(OBJ_DIR)/dipole_long_lj.cubin $(OBJ_DIR)/dipole_long_lj_cubin.h \
-       $(OBJ_DIR)/lj_expand_coul_long.cubin $(OBJ_DIR)/lj_expand_coul_long_cubin.h
+       $(OBJ_DIR)/lj_expand_coul_long.cubin $(OBJ_DIR)/lj_expand_coul_long_cubin.h \
+       $(OBJ_DIR)/coul_long_cs.cubin $(OBJ_DIR)/coul_long_cs_cubin.h \
+       $(OBJ_DIR)/born_coul_long_cs.cubin $(OBJ_DIR)/born_coul_long_cs_cubin.h \
+       $(OBJ_DIR)/born_coul_wolf_cs.cubin $(OBJ_DIR)/born_coul_wolf_cs_cubin.h
 
 all: $(OBJ_DIR) $(GPU_LIB) $(EXECS)
 
@@ -837,6 +843,42 @@ $(OBJ_DIR)/lal_lj_expand_coul_long.o: $(ALL_H) lal_lj_expand_coul_long.h lal_lj_
 $(OBJ_DIR)/lal_lj_expand_coul_long_ext.o: $(ALL_H) lal_lj_expand_coul_long.h lal_lj_expand_coul_long_ext.cpp lal_base_charge.h
 	$(CUDR) -o $@ -c lal_lj_expand_coul_long_ext.cpp -I$(OBJ_DIR)
 
+$(OBJ_DIR)/coul_long_cs.cubin: lal_coul_long_cs.cu lal_precision.h lal_preprocessor.h
+	$(CUDA) --fatbin -DNV_KERNEL -o $@ lal_coul_long_cs.cu
+
+$(OBJ_DIR)/coul_long_cs_cubin.h: $(OBJ_DIR)/coul_long_cs.cubin $(OBJ_DIR)/coul_long_cs.cubin
+	$(BIN2C) -c -n coul_long_cs $(OBJ_DIR)/coul_long_cs.cubin > $(OBJ_DIR)/coul_long_cs_cubin.h
+
+$(OBJ_DIR)/lal_coul_long_cs.o: $(ALL_H) lal_coul_long_cs.h lal_coul_long_cs.cpp $(OBJ_DIR)/coul_long_cs_cubin.h $(OBJ_DIR)/lal_base_charge.o $(OBJ_DIR)/lal_coul_long.o
+	$(CUDR) -o $@ -c lal_coul_long_cs.cpp -I$(OBJ_DIR)
+
+$(OBJ_DIR)/lal_coul_long_cs_ext.o: $(ALL_H) lal_coul_long_cs.h lal_coul_long_cs_ext.cpp lal_coul_long.h
+	$(CUDR) -o $@ -c lal_coul_long_cs_ext.cpp -I$(OBJ_DIR)
+
+$(OBJ_DIR)/born_coul_long_cs.cubin: lal_born_coul_long_cs.cu lal_precision.h lal_preprocessor.h
+	$(CUDA) --fatbin -DNV_KERNEL -o $@ lal_born_coul_long_cs.cu
+
+$(OBJ_DIR)/born_coul_long_cs_cubin.h: $(OBJ_DIR)/born_coul_long_cs.cubin $(OBJ_DIR)/born_coul_long_cs.cubin
+	$(BIN2C) -c -n born_coul_long_cs $(OBJ_DIR)/born_coul_long_cs.cubin > $(OBJ_DIR)/born_coul_long_cs_cubin.h
+
+$(OBJ_DIR)/lal_born_coul_long_cs.o: $(ALL_H) lal_born_coul_long_cs.h lal_born_coul_long_cs.cpp $(OBJ_DIR)/born_coul_long_cs_cubin.h $(OBJ_DIR)/lal_base_charge.o $(OBJ_DIR)/lal_born_coul_long.o
+	$(CUDR) -o $@ -c lal_born_coul_long_cs.cpp -I$(OBJ_DIR)
+
+$(OBJ_DIR)/lal_born_coul_long_cs_ext.o: $(ALL_H) lal_born_coul_long_cs.h lal_born_coul_long_cs_ext.cpp lal_born_coul_long.h
+	$(CUDR) -o $@ -c lal_born_coul_long_cs_ext.cpp -I$(OBJ_DIR)
+
+$(OBJ_DIR)/born_coul_wolf_cs.cubin: lal_born_coul_wolf_cs.cu lal_precision.h lal_preprocessor.h
+	$(CUDA) --fatbin -DNV_KERNEL -o $@ lal_born_coul_wolf_cs.cu
+
+$(OBJ_DIR)/born_coul_wolf_cs_cubin.h: $(OBJ_DIR)/born_coul_wolf_cs.cubin $(OBJ_DIR)/born_coul_wolf_cs.cubin
+	$(BIN2C) -c -n born_coul_wolf_cs $(OBJ_DIR)/born_coul_wolf_cs.cubin > $(OBJ_DIR)/born_coul_wolf_cs_cubin.h
+
+$(OBJ_DIR)/lal_born_coul_wolf_cs.o: $(ALL_H) lal_born_coul_wolf_cs.h lal_born_coul_wolf_cs.cpp $(OBJ_DIR)/born_coul_wolf_cs_cubin.h $(OBJ_DIR)/lal_base_charge.o $(OBJ_DIR)/lal_born_coul_wolf.o
+	$(CUDR) -o $@ -c lal_born_coul_wolf_cs.cpp -I$(OBJ_DIR)
+
+$(OBJ_DIR)/lal_born_coul_wolf_cs_ext.o: $(ALL_H) lal_born_coul_wolf_cs.h lal_born_coul_wolf_cs_ext.cpp lal_born_coul_wolf.h
+	$(CUDR) -o $@ -c lal_born_coul_wolf_cs_ext.cpp -I$(OBJ_DIR)
+
 $(BIN_DIR)/nvc_get_devices: ./geryon/ucl_get_devices.cpp $(NVD_H)
 	$(CUDR) -o $@ ./geryon/ucl_get_devices.cpp -DUCL_CUDADR $(CUDA_LIB) -lcuda 
 
-- 
GitLab


From 199c96f985bae537e7b43dc49b7a41570cf8b905 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 10 Jul 2018 09:22:41 -0400
Subject: [PATCH 032/243] update and clarify the choice of atom ids for angle
 style dipole (which is not really an angle potential)

---
 doc/src/angle_dipole.txt | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/doc/src/angle_dipole.txt b/doc/src/angle_dipole.txt
index d91f260d51..34cc8c153c 100644
--- a/doc/src/angle_dipole.txt
+++ b/doc/src/angle_dipole.txt
@@ -96,16 +96,17 @@ USER-MISC package.  See the "Making LAMMPS"_Section_start.html#start_2_3
 section for more info on packages.
 
 NOTE: In the "Angles" section of the data file, the atom ID 'j'
-corresponding to the dipole to restrain must come before the atom ID
-of the reference atom 'i'. A third atom ID 'k' must also be provided,
-although 'k' is just a 'dummy' atom which can be any atom; it may be
-useful to choose a convention (e.g., 'k'='i') and adhere to it.  For
-example, if ID=1 for the dipolar atom to restrain, and ID=2 for the
-reference atom, the corresponding line in the "Angles" section of the
-data file would read: X X 1 2 2
+defining the direction of the dipole vector to restrain must come
+before the atom ID of the reference atom 'i'. A third atom ID 'k' must
+also be provided to comply with the requirement of a valid angle
+definition. This atom ID k should be chosen to be that of an atom
+bonded to atom 'i' to avoid errors with "lost angle atoms" when running
+in parallel. Since the LAMMPS code checks for valid angle definitions,
+cannot use the same atom ID of either 'i' or 'j' (this was allowed
+and recommended with older LAMMPS versions).
 
 The "newton" command for intramolecular interactions must be "on"
-(which is the default).
+(which is the default except when using some accelerator packages).
 
 This angle style should not be used with SHAKE.
 
-- 
GitLab


From 9d5dc561ca45967c445f472bca92e253bca3d33d Mon Sep 17 00:00:00 2001
From: julient31 <julien.tranchida1@gmail.com>
Date: Mon, 9 Jul 2018 10:24:55 -0600
Subject: [PATCH 033/243] Commit1 JT 070918 - created README in examples/SPIN -
 modified doc/src/set.txt to define 'spin' and 'spin/random' keywords

---
 doc/src/set.txt      | 17 +++++++++++++++++
 examples/SPIN/README | 20 ++++++++++++++++++++
 2 files changed, 37 insertions(+)
 create mode 100644 examples/SPIN/README

diff --git a/doc/src/set.txt b/doc/src/set.txt
index 4757d1c575..d05660dc42 100644
--- a/doc/src/set.txt
+++ b/doc/src/set.txt
@@ -17,6 +17,7 @@ ID = atom ID range or type range or mol ID range or group ID or region ID :l
 one or more keyword/value pairs may be appended :l
 keyword = {type} or {type/fraction} or {mol} or {x} or {y} or {z} or \
           {charge} or {dipole} or {dipole/random} or {quat} or \
+          {spin} or {spin/random} or {quat} or \
           {quat/random} or {diameter} or {shape} or \
           {length} or {tri} or {theta} or {theta/random} or \
           {angmom} or {omega} or \
@@ -43,6 +44,13 @@ keyword = {type} or {type/fraction} or {mol} or {x} or {y} or {z} or \
   {dipole/random} value = seed Dlen
     seed = random # seed (positive integer) for dipole moment orientations
     Dlen = magnitude of dipole moment (dipole units)
+  {spin} values = g x y z
+    g = magnitude of magnetic spin vector (in Bohr magneton's unit)
+    x,y,z = orientation of magnetic spin vector
+    any of x,y,z can be an atom-style variable (see below)
+  {spin/random} value = seed Dlen
+    seed = random # seed (positive integer) for magnetic spin orientations
+    Dlen = magnitude of magnetic spin vector (in Bohr magneton's unit)
   {quat} values = a b c theta
     a,b,c = unit vector to rotate particle around via right-hand rule
     theta = rotation angle (degrees)
@@ -232,6 +240,15 @@ the orientation of a particular atom is the same, regardless of how
 many processors are being used.  This keyword does not allow use of an
 atom-style variable.
 
+Keyword {spin} uses the specified g value to set the magnitude of the
+magnetic spin vectors, and the x,y,z values as components of a vector 
+to set as the orientation of the magnetic spin vectors of the selected 
+atoms.  
+
+Keyword {spin/random} randomizes the orientation of the magnetic spin
+vectors for the selected atoms and sets the magnitude of each to the 
+specified {Dlen} value.  
+
 Keyword {quat} uses the specified values to create a quaternion
 (4-vector) that represents the orientation of the selected atoms.  The
 particles must define a quaternion for their orientation
diff --git a/examples/SPIN/README b/examples/SPIN/README
new file mode 100644
index 0000000000..5ad252e7f2
--- /dev/null
+++ b/examples/SPIN/README
@@ -0,0 +1,20 @@
+This directory contains examples and applications of the SPIN package
+=====================================================================
+
+- the iron, cobalt_hcp, cobalt_fcc and nickel directories provide 
+examples of spin-lattice calculations.
+
+- the bfo repository provides an example of spin dynamics calculation
+performed on a fixed lattice, and applied to the multiferroic 
+material bismuth-oxide. 
+
+- the read_restart directory provides examples allowing to write or 
+read data files, and restart magneto-mechanical simulations.  
+
+- vizualization of the dump files can be achieved using Ovito or 
+VMD. See the vmd repository for help vizualizing results with VMD. 
+
+** Note, the aim of this repository is mainly to provide users with
+examples. Better values and tuning of the magnetic and mechanical 
+interactions can be achieved for more accurate materials 
+simulations. **
-- 
GitLab


From ade9b7bfc39ede248fc1d81b7ab93a7019e10daf Mon Sep 17 00:00:00 2001
From: julient31 <julien.tranchida1@gmail.com>
Date: Mon, 9 Jul 2018 18:07:10 -0600
Subject: [PATCH 034/243] Commit2 JT 070918 - modified the citeme reference
 (replaced by the JCP one) - same modification in doc and src/SPIN

---
 doc/src/fix_langevin_spin.txt    |  4 ++--
 doc/src/fix_nve_spin.txt         |  2 +-
 doc/src/pair_spin_dmi.txt        |  2 +-
 doc/src/pair_spin_exchange.txt   |  2 +-
 doc/src/pair_spin_magelec.txt    |  2 +-
 doc/src/pair_spin_neel.txt       |  2 +-
 src/SPIN/atom_vec_spin.cpp       |  6 +++---
 src/SPIN/compute_spin.cpp        |  6 +++---
 src/SPIN/fix_langevin_spin.cpp   |  6 +++---
 src/SPIN/fix_nve_spin.cpp        | 11 ++++++-----
 src/SPIN/fix_precession_spin.cpp |  6 +++---
 src/SPIN/pair_spin.cpp           |  6 +++---
 src/SPIN/pair_spin_dmi.cpp       |  6 +++---
 src/SPIN/pair_spin_exchange.cpp  |  6 +++---
 src/SPIN/pair_spin_magelec.cpp   | 12 ++++++------
 src/SPIN/pair_spin_neel.cpp      |  6 +++---
 16 files changed, 43 insertions(+), 42 deletions(-)

diff --git a/doc/src/fix_langevin_spin.txt b/doc/src/fix_langevin_spin.txt
index 51f085ebdc..b089cd7f58 100644
--- a/doc/src/fix_langevin_spin.txt
+++ b/doc/src/fix_langevin_spin.txt
@@ -98,5 +98,5 @@ integration fix (e.g. {fix nve/spin}).
 [(Mayergoyz)] I.D. Mayergoyz, G. Bertotti, C. Serpico (2009). Elsevier (2009)
 
 :link(Tranchida2)
-[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson, 
-arXiv preprint arXiv:1801.10233, (2018).
+[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
+Journal of Computational Physics, (2018).
diff --git a/doc/src/fix_nve_spin.txt b/doc/src/fix_nve_spin.txt
index 6ccebcebf6..f4b38c270b 100644
--- a/doc/src/fix_nve_spin.txt
+++ b/doc/src/fix_nve_spin.txt
@@ -73,4 +73,4 @@ instead of "array" is also valid.
 
 :link(Tranchida1)
 [(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
-arXiv preprint arXiv:1801.10233, (2018).
+Journal of Computational Physics, (2018).
diff --git a/doc/src/pair_spin_dmi.txt b/doc/src/pair_spin_dmi.txt
index 9fe53df18a..24877906f3 100644
--- a/doc/src/pair_spin_dmi.txt
+++ b/doc/src/pair_spin_dmi.txt
@@ -63,4 +63,4 @@ See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 :link(Tranchida5)
 [(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
-arXiv preprint arXiv:1801.10233, (2018).
+Journal of Computational Physics, (2018).
diff --git a/doc/src/pair_spin_exchange.txt b/doc/src/pair_spin_exchange.txt
index 97b6d0b34f..ad3357cb5e 100644
--- a/doc/src/pair_spin_exchange.txt
+++ b/doc/src/pair_spin_exchange.txt
@@ -79,4 +79,4 @@ See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 :link(Tranchida3)
 [(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
-arXiv preprint arXiv:1801.10233, (2018).
+Journal of Computational Physics, (2018).
diff --git a/doc/src/pair_spin_magelec.txt b/doc/src/pair_spin_magelec.txt
index 0185a5abb2..8ba24c46af 100644
--- a/doc/src/pair_spin_magelec.txt
+++ b/doc/src/pair_spin_magelec.txt
@@ -70,4 +70,4 @@ See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 :link(Tranchida4)
 [(Tranchida)] Tranchida, Plimpton, Thibaudeau, and Thompson, 
-arXiv preprint arXiv:1801.10233, (2018).
+Journal of Computational Physics, (2018).
diff --git a/doc/src/pair_spin_neel.txt b/doc/src/pair_spin_neel.txt
index f7c9608a93..8551f8d636 100644
--- a/doc/src/pair_spin_neel.txt
+++ b/doc/src/pair_spin_neel.txt
@@ -78,4 +78,4 @@ See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 :link(Tranchida6)
 [(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
-arXiv preprint arXiv:1801.10233, (2018).
+Journal of Computational Physics, (2018).
diff --git a/src/SPIN/atom_vec_spin.cpp b/src/SPIN/atom_vec_spin.cpp
index 4871fe0c40..51903e5480 100644
--- a/src/SPIN/atom_vec_spin.cpp
+++ b/src/SPIN/atom_vec_spin.cpp
@@ -18,9 +18,9 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp
index 54818a9b70..1d87f4e722 100644
--- a/src/SPIN/compute_spin.cpp
+++ b/src/SPIN/compute_spin.cpp
@@ -16,9 +16,9 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
 #include <mpi.h>
diff --git a/src/SPIN/fix_langevin_spin.cpp b/src/SPIN/fix_langevin_spin.cpp
index 97b33197ce..402b934723 100644
--- a/src/SPIN/fix_langevin_spin.cpp
+++ b/src/SPIN/fix_langevin_spin.cpp
@@ -16,9 +16,9 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
 #include <mpi.h>
diff --git a/src/SPIN/fix_nve_spin.cpp b/src/SPIN/fix_nve_spin.cpp
index d91636af58..353f2cbd83 100644
--- a/src/SPIN/fix_nve_spin.cpp
+++ b/src/SPIN/fix_nve_spin.cpp
@@ -16,9 +16,9 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
@@ -59,8 +59,9 @@ static const char cite_fix_nve_spin[] =
   "title={Massively parallel symplectic algorithm for coupled magnetic spin "
   "dynamics and molecular dynamics},\n"
   "author={Tranchida, J and Plimpton, SJ and Thibaudeau, P and Thompson, AP},\n"
-  "journal={arXiv preprint arXiv:1801.10233},\n"
-  "year={2018}\n"
+  "journal={Journal of Computational Physics},\n"
+  "year={2018},\n"
+  "publisher={Elsevier}\n"
   "}\n\n";
 
 enum{NONE};
diff --git a/src/SPIN/fix_precession_spin.cpp b/src/SPIN/fix_precession_spin.cpp
index eedf0becb7..447139e0ee 100644
--- a/src/SPIN/fix_precession_spin.cpp
+++ b/src/SPIN/fix_precession_spin.cpp
@@ -16,9 +16,9 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
diff --git a/src/SPIN/pair_spin.cpp b/src/SPIN/pair_spin.cpp
index acb7ffe548..d29f31b70a 100644
--- a/src/SPIN/pair_spin.cpp
+++ b/src/SPIN/pair_spin.cpp
@@ -16,9 +16,9 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
diff --git a/src/SPIN/pair_spin_dmi.cpp b/src/SPIN/pair_spin_dmi.cpp
index 07ae684939..0129dec005 100644
--- a/src/SPIN/pair_spin_dmi.cpp
+++ b/src/SPIN/pair_spin_dmi.cpp
@@ -16,9 +16,9 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
diff --git a/src/SPIN/pair_spin_exchange.cpp b/src/SPIN/pair_spin_exchange.cpp
index 7b05d7337e..5aa5a267b9 100644
--- a/src/SPIN/pair_spin_exchange.cpp
+++ b/src/SPIN/pair_spin_exchange.cpp
@@ -16,9 +16,9 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
diff --git a/src/SPIN/pair_spin_magelec.cpp b/src/SPIN/pair_spin_magelec.cpp
index e9e7c1fb3f..79cdc919e8 100644
--- a/src/SPIN/pair_spin_magelec.cpp
+++ b/src/SPIN/pair_spin_magelec.cpp
@@ -16,9 +16,9 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
@@ -436,9 +436,9 @@ void PairSpinMagelec::compute_magelec_mech(int i, int j, double fi[3], double sp
   meiy *= ME_mech[itype][jtype];
   meiz *= ME_mech[itype][jtype];
 
-  fi[0] = meiy*vz - meiz*vy;
-  fi[1] = meiz*vx - meix*vz;
-  fi[2] = meix*vy - meiy*vx;
+  fi[0] += meiy*vz - meiz*vy;
+  fi[1] += meiz*vx - meix*vz;
+  fi[2] += meix*vy - meiy*vx;
 
 }
 
diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp
index d74db638bd..a8d9fe8ffa 100644
--- a/src/SPIN/pair_spin_neel.cpp
+++ b/src/SPIN/pair_spin_neel.cpp
@@ -16,9 +16,9 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
-- 
GitLab


From 792b182cb041dce9c72a7c46ccb473c0c0165a72 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 10 Jul 2018 09:46:08 -0400
Subject: [PATCH 035/243] whitespace cleanup

---
 src/SPIN/atom_vec_spin.cpp       | 6 +++---
 src/SPIN/compute_spin.cpp        | 4 ++--
 src/SPIN/fix_langevin_spin.cpp   | 4 ++--
 src/SPIN/fix_nve_spin.cpp        | 4 ++--
 src/SPIN/fix_precession_spin.cpp | 4 ++--
 src/SPIN/pair_spin.cpp           | 4 ++--
 src/SPIN/pair_spin_dmi.cpp       | 4 ++--
 src/SPIN/pair_spin_exchange.cpp  | 4 ++--
 src/SPIN/pair_spin_magelec.cpp   | 4 ++--
 src/SPIN/pair_spin_neel.cpp      | 4 ++--
 10 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/src/SPIN/atom_vec_spin.cpp b/src/SPIN/atom_vec_spin.cpp
index 51903e5480..276bc34e64 100644
--- a/src/SPIN/atom_vec_spin.cpp
+++ b/src/SPIN/atom_vec_spin.cpp
@@ -18,8 +18,8 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
@@ -54,7 +54,7 @@ AtomVecSpin::AtomVecSpin(LAMMPS *lmp) : AtomVec(lmp)
   size_data_atom = 9;
   size_data_vel = 4;
   xcol_data = 4;
-  
+
   atom->sp_flag = 1;
 }
 
diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp
index 1d87f4e722..b508d0624f 100644
--- a/src/SPIN/compute_spin.cpp
+++ b/src/SPIN/compute_spin.cpp
@@ -16,8 +16,8 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
diff --git a/src/SPIN/fix_langevin_spin.cpp b/src/SPIN/fix_langevin_spin.cpp
index 402b934723..3650651457 100644
--- a/src/SPIN/fix_langevin_spin.cpp
+++ b/src/SPIN/fix_langevin_spin.cpp
@@ -16,8 +16,8 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
diff --git a/src/SPIN/fix_nve_spin.cpp b/src/SPIN/fix_nve_spin.cpp
index 353f2cbd83..415c2352d4 100644
--- a/src/SPIN/fix_nve_spin.cpp
+++ b/src/SPIN/fix_nve_spin.cpp
@@ -16,8 +16,8 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
diff --git a/src/SPIN/fix_precession_spin.cpp b/src/SPIN/fix_precession_spin.cpp
index 447139e0ee..bcdd62413d 100644
--- a/src/SPIN/fix_precession_spin.cpp
+++ b/src/SPIN/fix_precession_spin.cpp
@@ -16,8 +16,8 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
diff --git a/src/SPIN/pair_spin.cpp b/src/SPIN/pair_spin.cpp
index d29f31b70a..b6cf07e60c 100644
--- a/src/SPIN/pair_spin.cpp
+++ b/src/SPIN/pair_spin.cpp
@@ -16,8 +16,8 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
diff --git a/src/SPIN/pair_spin_dmi.cpp b/src/SPIN/pair_spin_dmi.cpp
index 0129dec005..4ea6cfd0cc 100644
--- a/src/SPIN/pair_spin_dmi.cpp
+++ b/src/SPIN/pair_spin_dmi.cpp
@@ -16,8 +16,8 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
diff --git a/src/SPIN/pair_spin_exchange.cpp b/src/SPIN/pair_spin_exchange.cpp
index 5aa5a267b9..cb2d7424cf 100644
--- a/src/SPIN/pair_spin_exchange.cpp
+++ b/src/SPIN/pair_spin_exchange.cpp
@@ -16,8 +16,8 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
diff --git a/src/SPIN/pair_spin_magelec.cpp b/src/SPIN/pair_spin_magelec.cpp
index 79cdc919e8..77bf42159a 100644
--- a/src/SPIN/pair_spin_magelec.cpp
+++ b/src/SPIN/pair_spin_magelec.cpp
@@ -16,8 +16,8 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp
index a8d9fe8ffa..05999170eb 100644
--- a/src/SPIN/pair_spin_neel.cpp
+++ b/src/SPIN/pair_spin_neel.cpp
@@ -16,8 +16,8 @@
                          Aidan Thompson (SNL)
 
    Please cite the related publication:
-   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). 
-   Massively parallel symplectic algorithm for coupled magnetic spin dynamics 
+   Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
+   Massively parallel symplectic algorithm for coupled magnetic spin dynamics
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-- 
GitLab


From 1ed25d195be0d32caa75f99172dcda48afab95ed Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 10 Jul 2018 09:48:49 -0400
Subject: [PATCH 036/243] convert c-style includes for c-library calls to
 c++-style

---
 src/SPIN/atom_vec_spin.cpp       | 6 +++---
 src/SPIN/compute_spin.cpp        | 2 +-
 src/SPIN/fix_langevin_spin.cpp   | 6 +++---
 src/SPIN/fix_nve_spin.cpp        | 6 +++---
 src/SPIN/fix_precession_spin.cpp | 8 ++++----
 src/SPIN/pair_spin.cpp           | 6 +++---
 src/SPIN/pair_spin_dmi.cpp       | 6 +++---
 src/SPIN/pair_spin_exchange.cpp  | 6 +++---
 src/SPIN/pair_spin_magelec.cpp   | 6 +++---
 src/SPIN/pair_spin_neel.cpp      | 6 +++---
 10 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/src/SPIN/atom_vec_spin.cpp b/src/SPIN/atom_vec_spin.cpp
index 276bc34e64..8b47eff624 100644
--- a/src/SPIN/atom_vec_spin.cpp
+++ b/src/SPIN/atom_vec_spin.cpp
@@ -23,9 +23,9 @@
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cmath>
+#include <cstdlib>
+#include <cstring>
 #include "atom.h"
 #include "atom_vec_spin.h"
 #include "comm.h"
diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp
index b508d0624f..b67f62d53d 100644
--- a/src/SPIN/compute_spin.cpp
+++ b/src/SPIN/compute_spin.cpp
@@ -22,7 +22,7 @@
 ------------------------------------------------------------------------- */
 
 #include <mpi.h>
-#include <string.h>
+#include <cstring>
 #include "atom.h"
 #include "compute_spin.h"
 #include "domain.h"
diff --git a/src/SPIN/fix_langevin_spin.cpp b/src/SPIN/fix_langevin_spin.cpp
index 3650651457..cb34465482 100644
--- a/src/SPIN/fix_langevin_spin.cpp
+++ b/src/SPIN/fix_langevin_spin.cpp
@@ -22,9 +22,9 @@
 ------------------------------------------------------------------------- */
 
 #include <mpi.h>
-#include <math.h>
-#include <string.h>
-#include <stdlib.h>
+#include <cmath>
+#include <cstring>
+#include <cstdlib>
 
 #include "atom.h"
 #include "atom_vec_ellipsoid.h"
diff --git a/src/SPIN/fix_nve_spin.cpp b/src/SPIN/fix_nve_spin.cpp
index 415c2352d4..b75f03212a 100644
--- a/src/SPIN/fix_nve_spin.cpp
+++ b/src/SPIN/fix_nve_spin.cpp
@@ -21,9 +21,9 @@
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdio.h>
-#include <string.h>
+#include <cmath>
+#include <cstdio>
+#include <cstring>
 
 #include "atom.h"
 #include "atom_vec.h"
diff --git a/src/SPIN/fix_precession_spin.cpp b/src/SPIN/fix_precession_spin.cpp
index bcdd62413d..b908478952 100644
--- a/src/SPIN/fix_precession_spin.cpp
+++ b/src/SPIN/fix_precession_spin.cpp
@@ -21,10 +21,10 @@
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cmath>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 
 #include "atom.h"
 #include "domain.h"
diff --git a/src/SPIN/pair_spin.cpp b/src/SPIN/pair_spin.cpp
index b6cf07e60c..398206b26e 100644
--- a/src/SPIN/pair_spin.cpp
+++ b/src/SPIN/pair_spin.cpp
@@ -21,9 +21,9 @@
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cmath>
+#include <cstdlib>
+#include <cstring>
 
 #include "atom.h"
 #include "comm.h"
diff --git a/src/SPIN/pair_spin_dmi.cpp b/src/SPIN/pair_spin_dmi.cpp
index 4ea6cfd0cc..b792969c5d 100644
--- a/src/SPIN/pair_spin_dmi.cpp
+++ b/src/SPIN/pair_spin_dmi.cpp
@@ -21,9 +21,9 @@
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cmath>
+#include <cstdlib>
+#include <cstring>
 
 #include "atom.h"
 #include "comm.h"
diff --git a/src/SPIN/pair_spin_exchange.cpp b/src/SPIN/pair_spin_exchange.cpp
index cb2d7424cf..1b7b36b6db 100644
--- a/src/SPIN/pair_spin_exchange.cpp
+++ b/src/SPIN/pair_spin_exchange.cpp
@@ -21,9 +21,9 @@
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cmath>
+#include <cstdlib>
+#include <cstring>
 
 #include "atom.h"
 #include "comm.h"
diff --git a/src/SPIN/pair_spin_magelec.cpp b/src/SPIN/pair_spin_magelec.cpp
index 77bf42159a..315b691d17 100644
--- a/src/SPIN/pair_spin_magelec.cpp
+++ b/src/SPIN/pair_spin_magelec.cpp
@@ -21,9 +21,9 @@
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cmath>
+#include <cstdlib>
+#include <cstring>
 
 #include "atom.h"
 #include "comm.h"
diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp
index 05999170eb..0daafad756 100644
--- a/src/SPIN/pair_spin_neel.cpp
+++ b/src/SPIN/pair_spin_neel.cpp
@@ -21,9 +21,9 @@
    and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cmath>
+#include <cstdlib>
+#include <cstring>
 
 #include "atom.h"
 #include "comm.h"
-- 
GitLab


From 9a70f4a08c6befc96c13e8609ec64709ee700827 Mon Sep 17 00:00:00 2001
From: David Nicholson <davidanich@gmail.com>
Date: Tue, 10 Jul 2018 17:10:01 -0400
Subject: [PATCH 037/243] modified UEF_utils to compute inverse change of basis

---
 src/USER-UEF/uef_utils.cpp | 63 +++++++++++++++++++++++++-------------
 src/USER-UEF/uef_utils.h   | 26 +++++++++++-----
 2 files changed, 61 insertions(+), 28 deletions(-)

diff --git a/src/USER-UEF/uef_utils.cpp b/src/USER-UEF/uef_utils.cpp
index a5498d605f..df418c755b 100644
--- a/src/USER-UEF/uef_utils.cpp
+++ b/src/USER-UEF/uef_utils.cpp
@@ -177,7 +177,9 @@ bool UEFBox::reduce()
   // further reduce the box using greedy reduction and check
   // if it changed from the last step using the change of basis
   // matrices r and r0
-  greedy(l,r);
+  int ri[3][3];
+  greedy(l,r,ri);
+  mul_m2(r,ri);
   rotation_matrix(rot,lrot, l);
   return !mat_same(r,r0);
 }
@@ -195,7 +197,8 @@ void UEFBox::set_strain(const double ex, const double ey)
     l[k][1] = eps*l0[k][1];
     l[k][2] = eps*l0[k][2];
   }
-  greedy(l,r);
+  int ri[3][3];
+  greedy(l,r,ri);
   rotation_matrix(rot,lrot, l);
 }
 
@@ -245,28 +248,31 @@ void rotation_matrix(double q[3][3], double r[3][3], const double m[3][3])
 
 
 //sort columns in order of increasing length
-void col_sort(double b[3][3],int r[3][3])
+void col_sort(double b[3][3],int r[3][3],int ri[3][3])
 {
   if (col_prod(b,0,0)>col_prod(b,1,1))
   {
     col_swap(b,0,1);
     col_swap(r,0,1);
+    col_swap(ri,0,1);
   }
   if (col_prod(b,0,0)>col_prod(b,2,2))
   {
     col_swap(b,0,2);
     col_swap(r,0,2);
+    col_swap(ri,0,2);
   }
   if (col_prod(b,1,1)>col_prod(b,2,2))
   {
     col_swap(b,1,2);
     col_swap(r,1,2);
+    col_swap(ri,1,2);
   }
 }
 
 
 // 1-2 reduction (Graham-Schmidt)
-void red12(double b[3][3],int r[3][3])
+void red12(double b[3][3],int r[3][3],int ri[3][3])
 {
   int y = round(col_prod(b,0,1)/col_prod(b,0,0));
   b[0][1] -= y*b[0][0];
@@ -276,16 +282,21 @@ void red12(double b[3][3],int r[3][3])
   r[0][1] -= y*r[0][0];
   r[1][1] -= y*r[1][0];
   r[2][1] -= y*r[2][0];
+
+  ri[0][0] += y*ri[0][1];
+  ri[1][0] += y*ri[1][1];
+  ri[2][0] += y*ri[2][1];
   if (col_prod(b,1,1) < col_prod(b,0,0))
   {
     col_swap(b,0,1);
     col_swap(r,0,1);
-    red12(b,r);
+    col_swap(ri,0,1);
+    red12(b,r,ri);
   }
 }
 
 // The Semaev condition for a 3-reduced basis
-void red3(double b[3][3], int r[3][3])
+void red3(double b[3][3], int r[3][3], int ri[3][3])
 {
   double b11 = col_prod(b,0,0);
   double b22 = col_prod(b,1,1);
@@ -326,41 +337,51 @@ void red3(double b[3][3], int r[3][3])
     r[0][2] += x1*r[0][0] + x2*r[0][1];
     r[1][2] += x1*r[1][0] + x2*r[1][1];
     r[2][2] += x1*r[2][0] + x2*r[2][1];
-    greedy_recurse(b,r); // note the recursion step is here
+
+    ri[0][0] += -x1*ri[0][2];
+    ri[1][0] += -x1*ri[1][2];
+    ri[2][0] += -x1*ri[2][2];
+    ri[0][1] += -x2*ri[0][2];
+    ri[1][1] += -x2*ri[1][2];
+    ri[2][1] += -x2*ri[2][2];
+    greedy_recurse(b,r,ri); // note the recursion step is here
   }
 }
 
 // the meat of the greedy reduction algorithm
-void greedy_recurse(double b[3][3], int r[3][3])
+void greedy_recurse(double b[3][3], int r[3][3], int ri[3][3])
 {
-  col_sort(b,r);
-  red12(b,r);
-  red3(b,r); // recursive caller
+  col_sort(b,r,ri);
+  red12(b,r,ri);
+  red3(b,r,ri); // recursive caller
 }
 
 // set r (change of basis) to be identity then reduce basis and make it unique
-void greedy(double b[3][3],int r[3][3])
+void greedy(double b[3][3],int r[3][3],int ri[3][3])
 {
   r[0][1]=r[0][2]=r[1][0]=r[1][2]=r[2][0]=r[2][1]=0;
   r[0][0]=r[1][1]=r[2][2]=1;
-  greedy_recurse(b,r);
-  make_unique(b,r);
+  ri[0][1]=ri[0][2]=ri[1][0]=ri[1][2]=ri[2][0]=ri[2][1]=0;
+  ri[0][0]=ri[1][1]=ri[2][2]=1;
+  greedy_recurse(b,r,ri);
+  make_unique(b,r,ri);
+  transpose(ri);
 }
 
 // A reduced basis isn't unique. This procedure will make it
 // "more" unique. Degenerate cases are possible, but unlikely
 // with floating point math.
-void make_unique(double b[3][3], int r[3][3])
+void make_unique(double b[3][3], int r[3][3], int ri[3][3])
 {
   if (fabs(b[0][0]) < fabs(b[0][1]))
-  { col_swap(b,0,1); col_swap(r,0,1); }
+  { col_swap(b,0,1); col_swap(r,0,1); col_swap(ri,0,1); }
   if (fabs(b[0][0]) < fabs(b[0][2]))
-  { col_swap(b,0,2); col_swap(r,0,2); }
+  { col_swap(b,0,2); col_swap(r,0,2); col_swap(ri,0,2); }
   if (fabs(b[1][1]) < fabs(b[1][2]))
-  { col_swap(b,1,2); col_swap(r,1,2); }
+  { col_swap(b,1,2); col_swap(r,1,2); col_swap(ri,1,2); }
 
-  if (b[0][0] < 0){ neg_col(b,0); neg_col(r,0); }
-  if (b[1][1] < 0){ neg_col(b,1); neg_col(r,1); }
-  if (det(b) < 0){ neg_col(b,2); neg_col(r,2); }
+  if (b[0][0] < 0){ neg_col(b,0); neg_col(r,0); neg_col(ri,0); }
+  if (b[1][1] < 0){ neg_col(b,1); neg_col(r,1); neg_col(ri,1); }
+  if (det(b) < 0){ neg_col(b,2); neg_col(r,2); neg_col(ri,2); }
 }
 }}
diff --git a/src/USER-UEF/uef_utils.h b/src/USER-UEF/uef_utils.h
index a16f6fff1a..d5b0d6453b 100644
--- a/src/USER-UEF/uef_utils.h
+++ b/src/USER-UEF/uef_utils.h
@@ -30,7 +30,6 @@ class UEFBox
   private:
     double l0[3][3]; // initial basis
     double w1[3],w2[3], winv[3][3]; // omega1 and omega2 (spectra of automorphisms)
-    //double edot[3], delta[2];
     double theta[2];
     double l[3][3], rot[3][3], lrot[3][3];
     int r[3][3],a1[3][3],a2[3][3],a1i[3][3],a2i[3][3];
@@ -38,12 +37,12 @@ class UEFBox
 
 
 // lattice reduction routines
-void greedy(double[3][3],int[3][3]);
-void col_sort(double[3][3],int[3][3]);
-void red12(double[3][3],int[3][3]);
-void greedy_recurse(double[3][3],int[3][3]);
-void red3(double [3][3],int r[3][3]);
-void make_unique(double[3][3],int[3][3]);
+void greedy(double[3][3],int[3][3],int[3][3]);
+void col_sort(double[3][3],int[3][3],int[3][3]);
+void red12(double[3][3],int[3][3],int[3][3]);
+void greedy_recurse(double[3][3],int[3][3],int[3][3]);
+void red3(double [3][3],int r[3][3],int[3][3]);
+void make_unique(double[3][3],int[3][3],int[3][3]);
 void rotation_matrix(double[3][3],double[3][3],const double [3][3]);
 
 // A few utility functions for 3x3 arrays
@@ -100,6 +99,19 @@ bool mat_same(T x1[3][3], T x2[3][3])
   return v;
 }
 
+template<typename T>
+void transpose(T m[3][3])
+{
+  T t[3][3];
+  for (int k=0;k<3;k++)
+    for (int j=k+1;j<3;j++)
+    {
+      T x = m[k][j];
+      m[k][j] = m[j][k];
+      m[j][k] = x;
+    }
+}
+
 template<typename T>
 void mul_m1(T m1[3][3], const T m2[3][3])
 {
-- 
GitLab


From 5124c9e9937049b252167eb2d790f358c61d3934 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Tue, 10 Jul 2018 16:53:26 -0500
Subject: [PATCH 038/243] Fixed bugs in body rounded/polydedra for correct
 size_border

---
 src/BODY/body_rounded_polyhedron.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/BODY/body_rounded_polyhedron.cpp b/src/BODY/body_rounded_polyhedron.cpp
index fb0be7c1be..6a9b97ae23 100644
--- a/src/BODY/body_rounded_polyhedron.cpp
+++ b/src/BODY/body_rounded_polyhedron.cpp
@@ -48,13 +48,13 @@ BodyRoundedPolyhedron::BodyRoundedPolyhedron(LAMMPS *lmp, int narg, char **arg)
 
   size_forward = 0;
 
-  // 1 integer for number of vertices,
+  // 3 integers: 1 for no. of vertices, 1 for no. of edges, 1 for no. of faces
   // 3*nmax doubles for vertex coordinates + 2*nmax doubles for edge ends +
   // (MAX_FACE_SIZE+1)*nmax for faces
   // 1 double for the enclosing radius
   // 1 double for the rounded radius
 
-  size_border = 1 + 3*nmax + 2*nmax + MAX_FACE_SIZE*nmax + 1 + 1;
+  size_border = 3 + 3*nmax + 2*nmax + MAX_FACE_SIZE*nmax + 1 + 1;
 
   // NOTE: need to set appropriate nnbin param for dcp
 
@@ -159,7 +159,7 @@ int BodyRoundedPolyhedron::pack_border_body(AtomVecBody::Bonus *bonus, double *b
   buf[2] = nfac;
   int ndouble;
   if (nsub == 1 || nsub == 2) ndouble = 3*nsub+2+MAX_FACE_SIZE*nfac+1+1;
-  else ndouble = 3*nsub+2*nedges(bonus)+MAX_FACE_SIZE*nfac+1+1;
+  else ndouble = 3*nsub+2*ned+MAX_FACE_SIZE*nfac+1+1;
   memcpy(&buf[3],bonus->dvalue,ndouble*sizeof(double));
   return 3+ndouble;
 }
@@ -177,7 +177,7 @@ int BodyRoundedPolyhedron::unpack_border_body(AtomVecBody::Bonus *bonus,
   bonus->ivalue[2] = nfac;
   int ndouble;
   if (nsub == 1 || nsub == 2) ndouble = 3*nsub+2+MAX_FACE_SIZE*nfac+1+1;
-  else ndouble = 3*nsub+2*nedges(bonus)+MAX_FACE_SIZE*nfac+1+1;
+  else ndouble = 3*nsub+2*ned+MAX_FACE_SIZE*nfac+1+1;
   memcpy(bonus->dvalue,&buf[3],ndouble*sizeof(double));
   return 3+ndouble;
 }
-- 
GitLab


From c3bf7d0971749c330e1f1cae2f53d57872199851 Mon Sep 17 00:00:00 2001
From: David Nicholson <davidanich@gmail.com>
Date: Tue, 10 Jul 2018 19:02:31 -0400
Subject: [PATCH 039/243] added an interface for the inverse c.o.b. matrix to
 UEF_utils

---
 src/USER-UEF/uef_utils.cpp | 29 ++++++++++++++++++++++++-----
 src/USER-UEF/uef_utils.h   | 17 +++++++++--------
 2 files changed, 33 insertions(+), 13 deletions(-)

diff --git a/src/USER-UEF/uef_utils.cpp b/src/USER-UEF/uef_utils.cpp
index df418c755b..66164c2647 100644
--- a/src/USER-UEF/uef_utils.cpp
+++ b/src/USER-UEF/uef_utils.cpp
@@ -55,6 +55,7 @@ UEFBox::UEFBox()
     {
       l[k][j] = l0[k][j];
       r[j][k]=(j==k);
+      ri[j][k]=(j==k);
     }
 
   // get the initial rotation and upper triangular matrix
@@ -119,6 +120,14 @@ void UEFBox::get_rot(double x[3][3])
       x[k][j]=rot[k][j];
 }
 
+// get inverse change of basis matrix
+void UEFBox::get_inverse_cob(double x[3][3])
+{
+  for (int k=0;k<3;k++)
+    for (int j=0;j<3;j++)
+      x[k][j]=ri[k][j];
+}
+
 // diagonal, incompressible deformation
 void UEFBox::step_deform(const double ex, const double ey)
 {
@@ -167,26 +176,37 @@ bool UEFBox::reduce()
   if (f2 < 0) for (int k=0;k<-f2;k++) mul_m2 (a2i,r0);
 
   // robust reduction to the box defined by Dobson
+  double lc[3][3];
   for (int k=0;k<3;k++)
   {
     double eps = exp(theta[0]*w1[k]+theta[1]*w2[k]);
     l[k][0] = eps*l0[k][0];
     l[k][1] = eps*l0[k][1];
     l[k][2] = eps*l0[k][2];
+    lc[k][0] = eps*l0[k][0];
+    lc[k][1] = eps*l0[k][1];
+    lc[k][2] = eps*l0[k][2];
   }
+
   // further reduce the box using greedy reduction and check
   // if it changed from the last step using the change of basis
   // matrices r and r0
-  int ri[3][3];
+
   greedy(l,r,ri);
-  mul_m2(r,ri);
+
+  // multiplying the inverse by the old change of basis matrix gives
+  // the inverse of the transformation itself (should be identity if
+  // no reduction takes place). This is used for image flags only.
+
+  mul_m1(ri,r0);
+
   rotation_matrix(rot,lrot, l);
   return !mat_same(r,r0);
 }
 void UEFBox::set_strain(const double ex, const double ey)
 {
-  theta[0]  =winv[0][0]*ex + winv[0][1]*ey;
-  theta[1]  =winv[1][0]*ex + winv[1][1]*ey;
+  theta[0]  = winv[0][0]*ex + winv[0][1]*ey;
+  theta[1]  = winv[1][0]*ex + winv[1][1]*ey;
   theta[0] -= round(theta[0]);
   theta[1] -= round(theta[1]);
 
@@ -197,7 +217,6 @@ void UEFBox::set_strain(const double ex, const double ey)
     l[k][1] = eps*l0[k][1];
     l[k][2] = eps*l0[k][2];
   }
-  int ri[3][3];
   greedy(l,r,ri);
   rotation_matrix(rot,lrot, l);
 }
diff --git a/src/USER-UEF/uef_utils.h b/src/USER-UEF/uef_utils.h
index d5b0d6453b..ccfa0f0181 100644
--- a/src/USER-UEF/uef_utils.h
+++ b/src/USER-UEF/uef_utils.h
@@ -27,12 +27,13 @@ class UEFBox
     bool reduce();
     void get_box(double[3][3], double);
     void get_rot(double[3][3]);
+    void get_inverse_cob(double[3][3]);
   private:
     double l0[3][3]; // initial basis
-    double w1[3],w2[3], winv[3][3]; // omega1 and omega2 (spectra of automorphisms)
+    double w1[3],w2[3],winv[3][3];//omega1 and omega2 (spectra of automorphisms)
     double theta[2];
     double l[3][3], rot[3][3], lrot[3][3];
-    int r[3][3],a1[3][3],a2[3][3],a1i[3][3],a2i[3][3];
+    int r[3][3],ri[3][3],a1[3][3],a2[3][3],a1i[3][3],a2i[3][3];
 };
 
 
@@ -112,10 +113,10 @@ void transpose(T m[3][3])
     }
 }
 
-template<typename T>
-void mul_m1(T m1[3][3], const T m2[3][3])
+template<typename T1,typename T2>
+void mul_m1(T1 m1[3][3], const T2 m2[3][3])
 {
-  T t[3][3];
+  T1 t[3][3];
   for (int k=0;k<3;k++)
     for (int j=0;j<3;j++)
       t[k][j]=m1[k][j];
@@ -125,10 +126,10 @@ void mul_m1(T m1[3][3], const T m2[3][3])
       m1[k][j] = t[k][0]*m2[0][j] + t[k][1]*m2[1][j] + t[k][2]*m2[2][j];
 }
 
-template<typename T>
-void mul_m2(const T m1[3][3], T m2[3][3])
+template<typename T1, typename T2>
+void mul_m2(const T1 m1[3][3], T2 m2[3][3])
 {
-  T t[3][3];
+  T2 t[3][3];
   for (int k=0;k<3;k++)
     for (int j=0;j<3;j++)
       t[k][j]=m2[k][j];
-- 
GitLab


From eaf3d1ea9eaa755000d36bb192c36499dda6aa1b Mon Sep 17 00:00:00 2001
From: David Nicholson <davidanich@gmail.com>
Date: Tue, 10 Jul 2018 19:38:18 -0400
Subject: [PATCH 040/243] added an image flag update a la domain->image_flip()
 to FixNHUef::pre_exchange()

---
 src/USER-UEF/fix_nh_uef.cpp | 20 ++++++++++++++++++--
 src/USER-UEF/uef_utils.cpp  |  2 +-
 src/USER-UEF/uef_utils.h    |  2 +-
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/src/USER-UEF/fix_nh_uef.cpp b/src/USER-UEF/fix_nh_uef.cpp
index cd0b2ba268..bfa4549286 100644
--- a/src/USER-UEF/fix_nh_uef.cpp
+++ b/src/USER-UEF/fix_nh_uef.cpp
@@ -536,10 +536,26 @@ void FixNHUef::pre_exchange()
     rotate_x(rot);
     rotate_f(rot);
 
-    // put all atoms in the new box
-    double **x = atom->x;
+    // this is a generalization of what is done in domain->image_flip(...)
+    int ri[3][3];
+    uefbox->get_inverse_cob(ri);
     imageint *image = atom->image;
     int nlocal = atom->nlocal;
+    for (int i=0; i<nlocal; i++) {
+      int iold[3],inew[3];
+      iold[0] = (image[i] & IMGMASK) - IMGMAX;
+      iold[1] = (image[i] >> IMGBITS & IMGMASK) - IMGMAX;
+      iold[2] = (image[i] >> IMG2BITS) - IMGMAX;
+      inew[0] = ri[0][0]*iold[0] + ri[0][1]*iold[1] + ri[0][2]*iold[2];
+      inew[1] = ri[1][0]*iold[0] + ri[1][1]*iold[1] + ri[1][2]*iold[2];
+      inew[2] = ri[2][0]*iold[0] + ri[2][1]*iold[1] + ri[2][2]*iold[2];
+      image[i] = ((imageint) (inew[0] + IMGMAX) & IMGMASK) |
+        (((imageint) (inew[1] + IMGMAX) & IMGMASK) << IMGBITS) |
+        (((imageint) (inew[2] + IMGMAX) & IMGMASK) << IMG2BITS);
+    }
+
+    // put all atoms in the new box
+    double **x = atom->x;
     for (int i=0; i<nlocal; i++) domain->remap(x[i],image[i]);
 
     // move atoms to the right processors
diff --git a/src/USER-UEF/uef_utils.cpp b/src/USER-UEF/uef_utils.cpp
index 66164c2647..3210a675c6 100644
--- a/src/USER-UEF/uef_utils.cpp
+++ b/src/USER-UEF/uef_utils.cpp
@@ -121,7 +121,7 @@ void UEFBox::get_rot(double x[3][3])
 }
 
 // get inverse change of basis matrix
-void UEFBox::get_inverse_cob(double x[3][3])
+void UEFBox::get_inverse_cob(int x[3][3])
 {
   for (int k=0;k<3;k++)
     for (int j=0;j<3;j++)
diff --git a/src/USER-UEF/uef_utils.h b/src/USER-UEF/uef_utils.h
index ccfa0f0181..314c7cf55f 100644
--- a/src/USER-UEF/uef_utils.h
+++ b/src/USER-UEF/uef_utils.h
@@ -27,7 +27,7 @@ class UEFBox
     bool reduce();
     void get_box(double[3][3], double);
     void get_rot(double[3][3]);
-    void get_inverse_cob(double[3][3]);
+    void get_inverse_cob(int[3][3]);
   private:
     double l0[3][3]; // initial basis
     double w1[3],w2[3],winv[3][3];//omega1 and omega2 (spectra of automorphisms)
-- 
GitLab


From 930215a4b138d4da4a2e8812be772811cd66d132 Mon Sep 17 00:00:00 2001
From: David Nicholson <davidanich@gmail.com>
Date: Tue, 10 Jul 2018 23:10:04 -0400
Subject: [PATCH 041/243] superfluous code removal and formatting changes

---
 src/USER-UEF/uef_utils.cpp | 191 +++++++++++++++++++++++--------------
 src/USER-UEF/uef_utils.h   |   9 +-
 2 files changed, 121 insertions(+), 79 deletions(-)

diff --git a/src/USER-UEF/uef_utils.cpp b/src/USER-UEF/uef_utils.cpp
index 3210a675c6..a2e6cb291e 100644
--- a/src/USER-UEF/uef_utils.cpp
+++ b/src/USER-UEF/uef_utils.cpp
@@ -30,48 +30,54 @@ namespace LAMMPS_NS {
 
 UEFBox::UEFBox()
 {
+
   // initial box (also an inverse eigenvector matrix of automorphisms)
+
   double x = 0.327985277605681;
   double y = 0.591009048506103;
   double z = 0.736976229099578;
   l0[0][0]= z; l0[0][1]= y; l0[0][2]= x;
   l0[1][0]=-x; l0[1][1]= z; l0[1][2]=-y;
   l0[2][0]=-y; l0[2][1]= x; l0[2][2]= z;
+
   // spectra of the two automorpisms (log of eigenvalues)
+
   w1[0]=-1.177725211523360;
   w1[1]=-0.441448620566067;
   w1[2]= 1.619173832089425;
   w2[0]= w1[1];
   w2[1]= w1[2];
   w2[2]= w1[0];
+
   // initialize theta
   // strain = w1 * theta1 + w2 * theta2
-  theta[0]=theta[1]=0;
 
+  theta[0]=theta[1]=0;
 
   //set up the initial box l and change of basis matrix r
+
   for (int k=0;k<3;k++)
-    for (int j=0;j<3;j++)
-    {
+    for (int j=0;j<3;j++) {
       l[k][j] = l0[k][j];
       r[j][k]=(j==k);
       ri[j][k]=(j==k);
     }
 
   // get the initial rotation and upper triangular matrix
+
   rotation_matrix(rot, lrot ,l);
 
   // this is just a way to calculate the automorphisms
   // themselves, which play a minor role in the calculations
   // it's overkill, but only called once
+
   double t1[3][3];
   double t1i[3][3];
   double t2[3][3];
   double t2i[3][3];
   double l0t[3][3];
   for (int k=0; k<3; ++k)
-    for (int j=0; j<3; ++j)
-    {
+    for (int j=0; j<3; ++j) {
       t1[k][j] = exp(w1[k])*l0[k][j];
       t1i[k][j] = exp(-w1[k])*l0[k][j];
       t2[k][j] = exp(w2[k])*l0[k][j];
@@ -83,8 +89,7 @@ UEFBox::UEFBox()
   mul_m2(l0t,t2);
   mul_m2(l0t,t2i);
   for (int k=0; k<3; ++k)
-    for (int j=0; j<3; ++j)
-    {
+    for (int j=0; j<3; ++j) {
       a1[k][j] = round(t1[k][j]);
       a1i[k][j] = round(t1i[k][j]);
       a2[k][j] = round(t2[k][j]);
@@ -93,6 +98,7 @@ UEFBox::UEFBox()
 
   // winv used to transform between
   // strain increments and theta increments
+
   winv[0][0] = w2[1];
   winv[0][1] = -w2[0];
   winv[1][0] = -w1[1];
@@ -103,7 +109,9 @@ UEFBox::UEFBox()
       winv[k][j] /= d;
 }
 
-// get volume-correct r basis in: basis*cbrt(vol) = q*r
+/* ----------------------------------------------------------------------
+   get volume-correct r basis in: basis*cbrt(vol) = q*r
+------------------------------------------------------------------------- */
 void UEFBox::get_box(double x[3][3], double v)
 {
   v = cbrtf(v);
@@ -112,7 +120,9 @@ void UEFBox::get_box(double x[3][3], double v)
       x[k][j] = lrot[k][j]*v;
 }
 
-// get rotation matrix q in: basis = q*r
+/* ----------------------------------------------------------------------
+   get rotation matrix q in: basis = q*r
+------------------------------------------------------------------------- */
 void UEFBox::get_rot(double x[3][3])
 {
   for (int k=0;k<3;k++)
@@ -120,7 +130,9 @@ void UEFBox::get_rot(double x[3][3])
       x[k][j]=rot[k][j];
 }
 
-// get inverse change of basis matrix
+/* ----------------------------------------------------------------------
+   get inverse change of basis matrix
+------------------------------------------------------------------------- */
 void UEFBox::get_inverse_cob(int x[3][3])
 {
   for (int k=0;k<3;k++)
@@ -128,20 +140,22 @@ void UEFBox::get_inverse_cob(int x[3][3])
       x[k][j]=ri[k][j];
 }
 
-// diagonal, incompressible deformation
+/* ----------------------------------------------------------------------
+   apply diagonal, incompressible deformation
+------------------------------------------------------------------------- */
 void UEFBox::step_deform(const double ex, const double ey)
 {
   // increment theta values used in the reduction
+
   theta[0] +=winv[0][0]*ex + winv[0][1]*ey;
   theta[1] +=winv[1][0]*ex + winv[1][1]*ey;
 
-  // deformation of the box. reduce() needs to
-  // be called regularly or calculation will become
-  // unstable
+  // deformation of the box. reduce() needs to be called regularly or 
+  // calculation will become unstable
+
   double eps[3];
   eps[0]=ex; eps[1] = ey; eps[2] = -ex-ey;
-  for (int k=0;k<3;k++)
-  {
+  for (int k=0;k<3;k++) {
     eps[k] = exp(eps[k]);
     l[k][0] = eps[k]*l[k][0];
     l[k][1] = eps[k]*l[k][1];
@@ -149,43 +163,43 @@ void UEFBox::step_deform(const double ex, const double ey)
   }
   rotation_matrix(rot,lrot, l);
 }
-// reuduce the current basis
+
+/* ----------------------------------------------------------------------
+   reduce the current basis
+------------------------------------------------------------------------- */
 bool UEFBox::reduce()
 {
-  // determine how many times to apply the automorphisms
-  // and find new theta values
+  // determine how many times to apply the automorphisms and find new theta 
+  // values
+
   int f1 = round(theta[0]);
   int f2 = round(theta[1]);
   theta[0] -= f1;
   theta[1] -= f2;
 
-  // store old change or basis matrix to determine if it
-  // changes
+  // store old change or basis matrix to determine if it changes
+
   int r0[3][3];
   for (int k=0;k<3;k++)
     for (int j=0;j<3;j++)
       r0[k][j]=r[k][j];
 
-  // this modifies the old change basis matrix to
-  // handle the case where the automorphism transforms
-  // the box but the reduced basis doesn't change
+  // this modifies the old change basis matrix to handle the case where the 
+  // automorphism transforms the box but the reduced basis doesn't change
   // (r0 should still equal r at the end)
+
   if (f1 > 0) for (int k=0;k<f1;k++) mul_m2 (a1,r0);
   if (f1 < 0) for (int k=0;k<-f1;k++) mul_m2 (a1i,r0);
   if (f2 > 0) for (int k=0;k<f2;k++) mul_m2 (a2,r0);
   if (f2 < 0) for (int k=0;k<-f2;k++) mul_m2 (a2i,r0);
 
   // robust reduction to the box defined by Dobson
-  double lc[3][3];
-  for (int k=0;k<3;k++)
-  {
+
+  for (int k=0;k<3;k++) {
     double eps = exp(theta[0]*w1[k]+theta[1]*w2[k]);
     l[k][0] = eps*l0[k][0];
     l[k][1] = eps*l0[k][1];
     l[k][2] = eps*l0[k][2];
-    lc[k][0] = eps*l0[k][0];
-    lc[k][1] = eps*l0[k][1];
-    lc[k][2] = eps*l0[k][2];
   }
 
   // further reduce the box using greedy reduction and check
@@ -199,10 +213,13 @@ bool UEFBox::reduce()
   // no reduction takes place). This is used for image flags only.
 
   mul_m1(ri,r0);
-
   rotation_matrix(rot,lrot, l);
   return !mat_same(r,r0);
 }
+
+/* ----------------------------------------------------------------------
+   set the strain to a specific value
+------------------------------------------------------------------------- */
 void UEFBox::set_strain(const double ex, const double ey)
 {
   theta[0]  = winv[0][0]*ex + winv[0][1]*ey;
@@ -210,8 +227,7 @@ void UEFBox::set_strain(const double ex, const double ey)
   theta[0] -= round(theta[0]);
   theta[1] -= round(theta[1]);
 
-  for (int k=0;k<3;k++)
-  {
+  for (int k=0;k<3;k++) {
     double eps = exp(theta[0]*w1[k]+theta[1]*w2[k]);
     l[k][0] = eps*l0[k][0];
     l[k][1] = eps*l0[k][1];
@@ -221,9 +237,10 @@ void UEFBox::set_strain(const double ex, const double ey)
   rotation_matrix(rot,lrot, l);
 }
 
-// this is just qr reduction using householder reflections
-// m is input matrix, q is a rotation, r is upper triangular
-// q*m = r
+/* ----------------------------------------------------------------------
+   qr reduction using householder reflections
+   q*m = r. q is orthogonal. m is input matrix. r is upper triangular
+------------------------------------------------------------------------- */
 void rotation_matrix(double q[3][3], double r[3][3], const double m[3][3])
 {
   for (int k=0;k<3;k++)
@@ -239,8 +256,7 @@ void rotation_matrix(double q[3][3], double r[3][3], const double m[3][3])
   v[0] /= a; v[1] /= a; v[2] /= a;
   double qt[3][3];
   for (int k=0;k<3;k++)
-    for (int j=0;j<3;j++)
-    {
+    for (int j=0;j<3;j++) {
       qt[k][j] = (k==j) - 2*v[k]*v[j];
       q[k][j]= qt[k][j];
     }
@@ -257,40 +273,41 @@ void rotation_matrix(double q[3][3], double r[3][3], const double m[3][3])
       qt[k][j] = (k==j) - 2*v[k]*v[j];
   mul_m2(qt,r);
   mul_m2(qt,q);
+
   // this makes r have positive diagonals
   // q*m = r <==> (-q)*m = (-r) will hold row-wise
+
   if (r[0][0] < 0){ neg_row(q,0); neg_row(r,0); }
   if (r[1][1] < 0){ neg_row(q,1); neg_row(r,1); }
   if (r[2][2] < 0){ neg_row(q,2); neg_row(r,2); }
 }
 
-
-
-//sort columns in order of increasing length
+/* ----------------------------------------------------------------------
+   sort columns of b in order of increasing length
+   mimic column operations on ri and r
+------------------------------------------------------------------------- */
 void col_sort(double b[3][3],int r[3][3],int ri[3][3])
 {
-  if (col_prod(b,0,0)>col_prod(b,1,1))
-  {
+  if (col_prod(b,0,0)>col_prod(b,1,1)) {
     col_swap(b,0,1);
     col_swap(r,0,1);
     col_swap(ri,0,1);
   }
-  if (col_prod(b,0,0)>col_prod(b,2,2))
-  {
+  if (col_prod(b,0,0)>col_prod(b,2,2)) {
     col_swap(b,0,2);
     col_swap(r,0,2);
     col_swap(ri,0,2);
   }
-  if (col_prod(b,1,1)>col_prod(b,2,2))
-  {
+  if (col_prod(b,1,1)>col_prod(b,2,2)) {
     col_swap(b,1,2);
     col_swap(r,1,2);
     col_swap(ri,1,2);
   }
 }
 
-
-// 1-2 reduction (Graham-Schmidt)
+/* ----------------------------------------------------------------------
+   1-2 reduction (Graham-Schmidt)
+------------------------------------------------------------------------- */
 void red12(double b[3][3],int r[3][3],int ri[3][3])
 {
   int y = round(col_prod(b,0,1)/col_prod(b,0,0));
@@ -305,8 +322,8 @@ void red12(double b[3][3],int r[3][3],int ri[3][3])
   ri[0][0] += y*ri[0][1];
   ri[1][0] += y*ri[1][1];
   ri[2][0] += y*ri[2][1];
-  if (col_prod(b,1,1) < col_prod(b,0,0))
-  {
+
+  if (col_prod(b,1,1) < col_prod(b,0,0)) {
     col_swap(b,0,1);
     col_swap(r,0,1);
     col_swap(ri,0,1);
@@ -314,7 +331,9 @@ void red12(double b[3][3],int r[3][3],int ri[3][3])
   }
 }
 
-// The Semaev condition for a 3-reduced basis
+/* ----------------------------------------------------------------------
+   Apply the Semaev condition for a 3-reduced basis
+------------------------------------------------------------------------- */
 void red3(double b[3][3], int r[3][3], int ri[3][3])
 {
   double b11 = col_prod(b,0,0);
@@ -334,29 +353,25 @@ void red3(double b[3][3], int r[3][3], int ri[3][3])
   x1v[0] = floor(y1); x1v[1] = x1v[0]+1;
   x2v[0] = floor(y2); x2v[1] = x2v[0]+1;
   for (int k=0;k<2;k++)
-    for (int j=0;j<2;j++)
-    {
+    for (int j=0;j<2;j++) {
       double a[3];
       a[0] = b[0][2] + x1v[k]*b[0][0] + x2v[j]*b[0][1];
       a[1] = b[1][2] + x1v[k]*b[1][0] + x2v[j]*b[1][1];
       a[2] = b[2][2] + x1v[k]*b[2][0] + x2v[j]*b[2][1];
       double val=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];
-      if (val<min)
-      {
+      if (val<min) {
         min = val;
         x1 = x1v[k];
         x2 = x2v[j];
       }
     }
-  if (x1 || x2)
-  {
+  if (x1 || x2) {
     b[0][2] += x1*b[0][0] + x2*b[0][1];
     b[1][2] += x1*b[1][0] + x2*b[1][1];
     b[2][2] += x1*b[2][0] + x2*b[2][1];
     r[0][2] += x1*r[0][0] + x2*r[0][1];
     r[1][2] += x1*r[1][0] + x2*r[1][1];
     r[2][2] += x1*r[2][0] + x2*r[2][1];
-
     ri[0][0] += -x1*ri[0][2];
     ri[1][0] += -x1*ri[1][2];
     ri[2][0] += -x1*ri[2][2];
@@ -367,7 +382,9 @@ void red3(double b[3][3], int r[3][3], int ri[3][3])
   }
 }
 
-// the meat of the greedy reduction algorithm
+/* ----------------------------------------------------------------------
+   the meat of the greedy reduction algorithm
+------------------------------------------------------------------------- */
 void greedy_recurse(double b[3][3], int r[3][3], int ri[3][3])
 {
   col_sort(b,r,ri);
@@ -375,7 +392,10 @@ void greedy_recurse(double b[3][3], int r[3][3], int ri[3][3])
   red3(b,r,ri); // recursive caller
 }
 
-// set r (change of basis) to be identity then reduce basis and make it unique
+/* ----------------------------------------------------------------------
+   reduce the basis b. also output the change of basis matrix r and its
+   inverse ri
+------------------------------------------------------------------------- */
 void greedy(double b[3][3],int r[3][3],int ri[3][3])
 {
   r[0][1]=r[0][2]=r[1][0]=r[1][2]=r[2][0]=r[2][1]=0;
@@ -387,20 +407,43 @@ void greedy(double b[3][3],int r[3][3],int ri[3][3])
   transpose(ri);
 }
 
-// A reduced basis isn't unique. This procedure will make it
-// "more" unique. Degenerate cases are possible, but unlikely
-// with floating point math.
+/* ----------------------------------------------------------------------
+   A reduced basis isn't unique. This procedure will make it
+   "more" unique. Degenerate cases are possible, but unlikely
+   with floating point math.
+------------------------------------------------------------------------- */
 void make_unique(double b[3][3], int r[3][3], int ri[3][3])
 {
-  if (fabs(b[0][0]) < fabs(b[0][1]))
-  { col_swap(b,0,1); col_swap(r,0,1); col_swap(ri,0,1); }
-  if (fabs(b[0][0]) < fabs(b[0][2]))
-  { col_swap(b,0,2); col_swap(r,0,2); col_swap(ri,0,2); }
-  if (fabs(b[1][1]) < fabs(b[1][2]))
-  { col_swap(b,1,2); col_swap(r,1,2); col_swap(ri,1,2); }
-
-  if (b[0][0] < 0){ neg_col(b,0); neg_col(r,0); neg_col(ri,0); }
-  if (b[1][1] < 0){ neg_col(b,1); neg_col(r,1); neg_col(ri,1); }
-  if (det(b) < 0){ neg_col(b,2); neg_col(r,2); neg_col(ri,2); }
+  if (fabs(b[0][0]) < fabs(b[0][1])) {
+    col_swap(b,0,1);
+    col_swap(r,0,1);
+    col_swap(ri,0,1); 
+  }
+  if (fabs(b[0][0]) < fabs(b[0][2])) {
+    col_swap(b,0,2);
+    col_swap(r,0,2);
+    col_swap(ri,0,2);
+  }
+  if (fabs(b[1][1]) < fabs(b[1][2])) {
+    col_swap(b,1,2);
+    col_swap(r,1,2);
+    col_swap(ri,1,2);
+  }
+
+  if (b[0][0] < 0) {
+    neg_col(b,0);
+    neg_col(r,0);
+    neg_col(ri,0); 
+  }
+  if (b[1][1] < 0) {
+    neg_col(b,1);
+    neg_col(r,1);
+    neg_col(ri,1);
+  }
+  if (det(b) < 0) {
+    neg_col(b,2);
+    neg_col(r,2); 
+    neg_col(ri,2); 
+  }
 }
 }}
diff --git a/src/USER-UEF/uef_utils.h b/src/USER-UEF/uef_utils.h
index 314c7cf55f..0a1cfcc9b2 100644
--- a/src/USER-UEF/uef_utils.h
+++ b/src/USER-UEF/uef_utils.h
@@ -36,8 +36,8 @@ class UEFBox
     int r[3][3],ri[3][3],a1[3][3],a2[3][3],a1i[3][3],a2i[3][3];
 };
 
-
 // lattice reduction routines
+
 void greedy(double[3][3],int[3][3],int[3][3]);
 void col_sort(double[3][3],int[3][3],int[3][3]);
 void red12(double[3][3],int[3][3],int[3][3]);
@@ -47,6 +47,7 @@ void make_unique(double[3][3],int[3][3],int[3][3]);
 void rotation_matrix(double[3][3],double[3][3],const double [3][3]);
 
 // A few utility functions for 3x3 arrays
+
 template<typename T>
 T col_prod(T x[3][3], int c1, int c2)
 {
@@ -56,8 +57,7 @@ T col_prod(T x[3][3], int c1, int c2)
 template<typename T>
 void col_swap(T x[3][3], int c1, int c2)
 {
-  for (int k=0;k<3;k++)
-  {
+  for (int k=0;k<3;k++) {
     T t = x[k][c2];
     x[k][c2]=x[k][c1];
     x[k][c1]=t;
@@ -105,8 +105,7 @@ void transpose(T m[3][3])
 {
   T t[3][3];
   for (int k=0;k<3;k++)
-    for (int j=k+1;j<3;j++)
-    {
+    for (int j=k+1;j<3;j++) {
       T x = m[k][j];
       m[k][j] = m[j][k];
       m[j][k] = x;
-- 
GitLab


From c3a32dde123042fb5bf21ec96a5c1635e0f23661 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Wed, 11 Jul 2018 00:21:49 -0500
Subject: [PATCH 042/243] Updated doc/body.txt for body rounded/polygon and
 rounded/polyhedron

---
 doc/src/body.txt | 79 ++++++++++++++++++++++++++++--------------------
 1 file changed, 47 insertions(+), 32 deletions(-)

diff --git a/doc/src/body.txt b/doc/src/body.txt
index c272f48ad1..0e64e6ad5b 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.
 
-More styles ma be added in the future.  See "Section
+More styles may be added in the future.  See "Section
 10.12"_Section_modify.html#mod_12 for details on how to add a new body
 style to the code.
 
@@ -182,7 +182,7 @@ 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
+NOTE: include a diagram of 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
@@ -219,12 +219,11 @@ list 6 moments of inertia followed by the coordinates of the N
 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
+circle that surrounds each vertex. The diameter value can be different
+for each body particle. These floating-point values can be
 listed on as many lines as you wish; see the
 "read_data"_read_data.html command for more details.
 
-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
@@ -236,9 +235,9 @@ 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 particle
-whose edge length is sqrt(2):
-
-NOTE: oriented how?
+whose edge length is sqrt(2) and rounded diameter is 1.0 in length unit
+and initial orientation is determined from the 6 moments of inertia
+(ixx iyy izz ixy ixz iyz):
 
 3 1 27
 4
@@ -268,12 +267,12 @@ 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
+NOTE: include a diagram of a rounded polyhedron body particle
 
-Special cases for N = 1 (spheres) and N = 2 (rods) are also valid.
+NOTE: 2d objects can also be specified as a special case, e.g.
+for a triangle, N = 3, E = 3 and F = 1.
 
-NOTE: can 2d objects also be specified as a special case, e.g. a
-triangle?
+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.
@@ -316,8 +315,9 @@ 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
+faces.  The last value is the diameter value = the rounded diameter of
+the sphere that surrounds each vertex. The diameter value can be different
+for each body particle. These floating-point values
 can be listed on as many lines as you wish; see the
 "read_data"_read_data.html command for more details.  Because the
 maxmimum vertices per face is hard-coded to be 4
@@ -325,10 +325,9 @@ maxmimum vertices per face is hard-coded to be 4
 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 ordering of the 4 vertices within a face should follow
+the right-hand rule so that the normal vector of the face points
+outwards from the center of mass.
 
 The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the
 values consistent with the current orientation of the rigid body
@@ -341,24 +340,40 @@ 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
+whose edge length is 2.0 and rounded diameter is 0.5 in length unit
+and initial orientation is determined from the 6 moments of inertia
+(ixx iyy izz ixy ixz iyz):
+
+1 3 79
+8 12 6
+0.667 0.667 0.667 0 0 0
+1 1 1
+1 -1 1
+-1 -1 1
+-1 1 1
+1 1 -1
+1 -1 -1
+-1 -1 -1
+-1 1 -1
 0 1
 1 2
 2 3
 3 0
-1.0 :pre
+4 5
+5 6
+6 7
+7 4
+0 4
+1 5
+2 6
+3 7
+0 1 2 3
+4 5 6 7
+0 1 5 4
+1 2 6 5
+2 3 7 6
+3 0 4 7
+0.5 :pre
 
 :line
 
-- 
GitLab


From 1f1447c3ac3f919d6c4c34d03e2a0df99b39fdad Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Wed, 11 Jul 2018 07:22:47 -0400
Subject: [PATCH 043/243] need to update exclusions with the new atom IDs in
 case of molecular systems

---
 src/reset_ids.cpp | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/reset_ids.cpp b/src/reset_ids.cpp
index 8a33cd535b..fd898bd3ab 100644
--- a/src/reset_ids.cpp
+++ b/src/reset_ids.cpp
@@ -16,6 +16,7 @@
 #include "atom_vec.h"
 #include "domain.h"
 #include "comm.h"
+#include "special.h"
 #include "memory.h"
 #include "error.h"
 
@@ -44,7 +45,7 @@ void ResetIDs::command(int narg, char **arg)
   }
 
   // create an atom map if one doesn't exist already
-  
+
   int mapflag = 0;
   if (atom->map_style == 0) {
     mapflag = 1;
@@ -93,7 +94,7 @@ void ResetIDs::command(int narg, char **arg)
   // forward_comm_array acquires new IDs for ghost atoms
 
   double **newIDs;
-  memory->create(newIDs,nall,1,"reset_ids:newIDs");  
+  memory->create(newIDs,nall,1,"reset_ids:newIDs");
 
   for (int i = 0; i < nlocal; i++) {
     newIDs[i][0] = tag[i];
@@ -105,7 +106,7 @@ void ResetIDs::command(int narg, char **arg)
   // loop over bonds, angles, etc and reset IDs in stored topology arrays
   // only necessary for molecular = 1, not molecular = 2
   // badcount = atom IDs that could not be found
-  
+
   int badcount = 0;
 
   if (atom->molecular == 1) {
@@ -232,8 +233,15 @@ void ResetIDs::command(int narg, char **arg)
   atom->map_init();
   atom->map_set();
 
+  // need to update exclusions with new atom IDs
+
+  if (atom->molecular == 1) {
+    Special special(lmp);
+    special.build();
+  }
+
   // delete temporary atom map
-  
+
   if (mapflag) {
     atom->map_delete();
     atom->map_style = 0;
-- 
GitLab


From acdc240cdd3e056c3d105b27582387351bc76aca Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 11 Jul 2018 08:42:28 -0600
Subject: [PATCH 044/243] better rRESPA doc page, also a new Makefile.theta

---
 doc/src/run_style.txt            |  61 ++++++++++----
 src/MAKE/MACHINES/Makefile.theta | 133 +++++++++++++++++++++++++++++++
 2 files changed, 178 insertions(+), 16 deletions(-)
 create mode 100644 src/MAKE/MACHINES/Makefile.theta

diff --git a/doc/src/run_style.txt b/doc/src/run_style.txt
index ba836a07dd..3240344a45 100644
--- a/doc/src/run_style.txt
+++ b/doc/src/run_style.txt
@@ -138,13 +138,19 @@ iterations of level 1 for a single iteration of level 2, N2 is the
 iterations of level 2 per iteration of level 3, etc.  N-1 looping
 parameters must be specified.
 
-The "timestep"_timestep.html command sets the timestep for the
-outermost rRESPA level.  Thus if the example command above for a
-4-level rRESPA had an outer timestep of 4.0 fmsec, the inner timestep
-would be 8x smaller or 0.5 fmsec.  All other LAMMPS commands that
-specify number of timesteps (e.g. "neigh_modify"_neigh_modify.html
-parameters, "dump"_dump.html every N timesteps, etc) refer to the
-outermost timesteps.
+Thus with a 4-level respa setting of "2 2 2" for the 3 loop factors,
+you could choose to have bond interactions computed 8x per large
+timestep, angle interactions computed 4x, pair interactions computed
+2x, and long-range interactions once per large timestep.
+
+The "timestep"_timestep.html command sets the large timestep for the
+outermost rRESPA level.  Thus if the 3 loop factors are "2 2 2" for
+4-level rRESPA, and the outer timestep is set to 4.0 fmsec, then the
+inner timestep would be 8x smaller or 0.5 fmsec.  All other LAMMPS
+commands that specify number of timesteps (e.g. "thermo"_thermo.html
+for thermo output every N steps, "neigh_modify
+delay/every"_neigh_modify.html parameters, "dump"_dump.html every N
+steps, etc) refer to the outermost timesteps.
 
 The rRESPA keywords enable you to specify at what level of the
 hierarchy various forces will be computed.  If not specified, the
@@ -238,12 +244,24 @@ roughly a 1.5 fold speedup over the {verlet} style with SHAKE and a
 
 For non-biomolecular simulations, the {respa} style can be
 advantageous if there is a clear separation of time scales - fast and
-slow modes in the simulation.  Even a LJ system can benefit from
-rRESPA if the interactions are divided by the inner, middle and outer
-keywords.  A 2-fold or more speedup can be obtained while maintaining
-good energy conservation.  In real units, for a pure LJ fluid at
-liquid density, with a sigma of 3.0 angstroms, and epsilon of 0.1
-Kcal/mol, the following settings seem to work well:
+slow modes in the simulation.  For example, a system of slowly-moving
+charged polymer chains could be setup as follows:
+
+timestep 4.0
+run_style respa 2 8 :pre
+
+This is two-level rRESPA with an 8x difference between the short and
+long timesteps.  The bonds, angles, dihedrals will be computed every
+0.5 fs (assuming real units), while the pair and kspace interactions
+will be computed once every 4 fs.  These are the default settings for
+each kind of interaction, so no additional keywords are necessary.
+
+Even a LJ system can benefit from rRESPA if the interactions are
+divided by the inner, middle and outer keywords.  A 2-fold or more
+speedup can be obtained while maintaining good energy conservation.
+In real units, for a pure LJ fluid at liquid density, with a sigma of
+3.0 angstroms, and epsilon of 0.1 Kcal/mol, the following settings
+seem to work well:
 
 timestep  36.0
 run_style respa 3 3 4 inner 1 3.0 4.0 middle 2 6.0 7.0 outer 3 :pre
@@ -271,9 +289,9 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 The {verlet/split} style can only be used if LAMMPS was built with the
-REPLICA package. Correspondingly the {respa/omp} style is available only
-if the USER-OMP package was included. See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+REPLICA package. Correspondingly the {respa/omp} style is available
+only if the USER-OMP package was included. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 Whenever using rRESPA, the user should experiment with trade-offs in
 speed and accuracy for their system, and verify that they are
@@ -287,6 +305,17 @@ conserving energy to adequate precision.
 
 run_style verlet :pre
 
+For run_style respa, the default assignment of interactions
+to rRESPA levels is as follows:
+
+bond forces = level 1 (innermost loop)
+angle forces = same level as bond forces
+dihedral forces = same level as angle forces
+improper forces = same level as dihedral forces
+pair forces = leven N (outermost level)
+kspace forces = same level as pair forces
+inner, middle, outer forces = no default :ul
+
 :line
 
 :link(Tuckerman3)
diff --git a/src/MAKE/MACHINES/Makefile.theta b/src/MAKE/MACHINES/Makefile.theta
new file mode 100644
index 0000000000..cad5a03b42
--- /dev/null
+++ b/src/MAKE/MACHINES/Makefile.theta
@@ -0,0 +1,133 @@
+# knl = Flags for Knights Landing Xeon Phi Processor,Intel Compiler/MPI,MKL FFT
+# module load perftools-base perftools
+# make theta -j 8
+# pat_build -g mpi -u ./lmp_theta
+
+SHELL = /bin/sh
+
+# ---------------------------------------------------------------------
+# compiler/linker settings
+# specify flags and libraries needed for your compiler
+
+CC =        CC -mkl
+#OPTFLAGS =       -O0
+OPTFLAGS =      -xMIC-AVX512 -O3 -fp-model fast=2 -no-prec-div -qoverride-limits
+CCFLAGS =   -g -qopenmp -DLAMMPS_MEMALIGN=64 -qno-offload \
+                -fno-alias -ansi-alias -restrict $(OPTFLAGS)
+#CCFLAGS +=      -DLMP_INTEL_NO_TBB
+#CCFLAGS +=      -DLAMMPS_BIGBIG
+#CCFLAGS +=      -D_USE_PAPI
+#CCFLAGS +=      -D_USE_CRAYPAT_API
+SHFLAGS =   -fPIC
+DEPFLAGS =  -M
+
+LINK =      $(CC)
+LINKFLAGS = -g -qopenmp $(OPTFLAGS)
+LINKFLAGS += -dynamic
+LIB =
+#LIB +=           -L${TBBROOT}/lib/intel64/gcc4.7 -ltbbmalloc
+LIB +=           -ltbbmalloc
+#LIB +=          /soft/debuggers/forge-7.0-2017-02-16/lib/64/libdmallocthcxx.a -zmuldefs
+SIZE =      size
+
+ARCHIVE =   ar
+ARFLAGS =   -rc
+SHLIBFLAGS =    -shared
+
+# ---------------------------------------------------------------------
+# LAMMPS-specific settings, all OPTIONAL
+# specify settings for LAMMPS features you will use
+# if you change any -D setting, do full re-compile after "make clean"
+
+# LAMMPS ifdef settings
+# see possible settings in Section 2.2 (step 4) of manual
+
+LMP_INC =   -DLAMMPS_GZIP #-DLAMMPS_JPEG
+
+# MPI library
+# see discussion in Section 2.2 (step 5) of manual
+# MPI wrapper compiler/linker can provide this info
+# can point to dummy MPI library in src/STUBS as in Makefile.serial
+# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts
+# INC = path for mpi.h, MPI compiler settings
+# PATH = path for MPI library
+# LIB = name of MPI library
+
+MPI_INC =       -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1
+MPI_PATH =
+MPI_LIB =
+
+# FFT library
+# see discussion in Section 2.2 (step 6) of manaul
+# can be left blank to use provided KISS FFT library
+# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings
+# PATH = path for FFT library
+# LIB = name of FFT library
+
+FFT_INC =       -DFFT_MKL -DFFT_SINGLE
+FFT_PATH =
+FFT_LIB =       -L$(MKLROOT)/lib/intel64/ -Wl,--start-group -lmkl_intel_ilp64 \
+                -lmkl_intel_thread -lmkl_core -Wl,--end-group
+
+# JPEG and/or PNG library
+# see discussion in Section 2.2 (step 7) of manual
+# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC
+# INC = path(s) for jpeglib.h and/or png.h
+# PATH = path(s) for JPEG library and/or PNG library
+# LIB = name(s) of JPEG library and/or PNG library
+
+JPG_INC =
+JPG_PATH =
+JPG_LIB =
+
+# ---------------------------------------------------------------------
+# build rules and dependencies
+# do not edit this section
+
+include Makefile.package.settings
+include Makefile.package
+
+EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC)
+EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH)
+EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB)
+
+# Path to src files
+
+vpath %.cpp ..
+vpath %.h ..
+
+# Link target
+
+$(EXE): $(OBJ)
+    $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE)
+    $(SIZE) $(EXE)
+
+# Library targets
+
+lib:    $(OBJ)
+    $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ)
+
+shlib:  $(OBJ)
+    $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \
+        $(OBJ) $(EXTRA_LIB) $(LIB)
+
+# Compilation rules
+
+%.o:%.cpp
+    $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $<
+
+%.d:%.cpp
+    $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@
+
+%.o:%.cu
+    $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $<
+
+# Individual dependencies
+
+depend : fastdep.exe $(SRC)
+    @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1
+
+fastdep.exe: ../DEPEND/fastdep.c
+    icc -O -o $@ $<
+
+sinclude .depend
-- 
GitLab


From b5816f2637e7636aa1c48ff4b534ea19bcc308d1 Mon Sep 17 00:00:00 2001
From: Stan Moore <stamoor@sandia.gov>
Date: Wed, 11 Jul 2018 12:03:34 -0600
Subject: [PATCH 045/243] Update docs for Kokkos version of GRANULAR package

---
 doc/src/Section_commands.txt |  8 ++++----
 doc/src/fix_freeze.txt       | 14 ++++++++------
 doc/src/fix_gravity.txt      |  1 +
 doc/src/fix_nve_sphere.txt   |  1 +
 doc/src/pair_gran.txt        |  1 +
 5 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt
index e44595455f..3992c5bb54 100644
--- a/doc/src/Section_commands.txt
+++ b/doc/src/Section_commands.txt
@@ -585,10 +585,10 @@ USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.
 "enforce2d"_fix_enforce2d.html,
 "evaporate"_fix_evaporate.html,
 "external"_fix_external.html,
-"freeze"_fix_freeze.html,
+"freeze (k)"_fix_freeze.html,
 "gcmc"_fix_gcmc.html,
 "gld"_fix_gld.html,
-"gravity (o)"_fix_gravity.html,
+"gravity (ko)"_fix_gravity.html,
 "halt"_fix_halt.html,
 "heat"_fix_heat.html,
 "indent"_fix_indent.html,
@@ -617,7 +617,7 @@ USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.
 "nve/limit"_fix_nve_limit.html,
 "nve/line"_fix_nve_line.html,
 "nve/noforce"_fix_nve_noforce.html,
-"nve/sphere (o)"_fix_nve_sphere.html,
+"nve/sphere (ko)"_fix_nve_sphere.html,
 "nve/spin"_fix_nve_spin.html,
 "nve/tri"_fix_nve_tri.html,
 "nvt (iko)"_fix_nh.html,
@@ -971,7 +971,7 @@ KOKKOS, o = USER-OMP, t = OPT.
 "gayberne (gio)"_pair_gayberne.html,
 "gran/hertz/history (o)"_pair_gran.html,
 "gran/hooke (o)"_pair_gran.html,
-"gran/hooke/history (o)"_pair_gran.html,
+"gran/hooke/history (ko)"_pair_gran.html,
 "gw"_pair_gw.html,
 "gw/zbl"_pair_gw.html,
 "hbond/dreiding/lj (o)"_pair_hbond_dreiding.html,
diff --git a/doc/src/fix_freeze.txt b/doc/src/fix_freeze.txt
index a63ee4cb32..f57aa8b965 100644
--- a/doc/src/fix_freeze.txt
+++ b/doc/src/fix_freeze.txt
@@ -7,6 +7,7 @@
 :line
 
 fix freeze command :h3
+fix freeze/kk command :h3
 
 [Syntax:]
 
@@ -31,12 +32,13 @@ using "fix setforce"_fix_setforce.html.
 
 :line
 
-Styles with a suffix are functionally the same as the corresponding
-style without the suffix.  They have been optimized to run faster,
-depending on your available hardware, as discussed in
-"Section 5"_Section_accelerate.html of the manual.  The
-accelerated styles take the same arguments and should produce the same
-results, except for round-off and precision issues.
+Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
+functionally the same as the corresponding style without the suffix.
+They have been optimized to run faster, depending on your available
+hardware, as discussed in "Section 5"_Section_accelerate.html
+of the manual.  The accelerated styles take the same arguments and
+should produce the same results, except for round-off and precision
+issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
diff --git a/doc/src/fix_gravity.txt b/doc/src/fix_gravity.txt
index dae8ac5ed0..cbd257e44d 100644
--- a/doc/src/fix_gravity.txt
+++ b/doc/src/fix_gravity.txt
@@ -8,6 +8,7 @@
 
 fix gravity command :h3
 fix gravity/omp command :h3
+fix gravity/kk command :h3
 
 [Syntax:]
 
diff --git a/doc/src/fix_nve_sphere.txt b/doc/src/fix_nve_sphere.txt
index 21dc6cba8a..f6e616785a 100644
--- a/doc/src/fix_nve_sphere.txt
+++ b/doc/src/fix_nve_sphere.txt
@@ -8,6 +8,7 @@
 
 fix nve/sphere command :h3
 fix nve/sphere/omp command :h3
+fix nve/sphere/kk command :h3
 
 [Syntax:]
 
diff --git a/doc/src/pair_gran.txt b/doc/src/pair_gran.txt
index d7e87af013..541f13dc62 100644
--- a/doc/src/pair_gran.txt
+++ b/doc/src/pair_gran.txt
@@ -10,6 +10,7 @@ pair_style gran/hooke command :h3
 pair_style gran/omp command :h3
 pair_style gran/hooke/history command :h3
 pair_style gran/hooke/history/omp command :h3
+pair_style gran/hooke/history/kk command :h3
 pair_style gran/hertz/history command :h3
 pair_style gran/hertz/history/omp command :h3
 
-- 
GitLab


From 5d133214258d317ec80b8599eb24e007823732bf Mon Sep 17 00:00:00 2001
From: Stan Moore <stamoor@sandia.gov>
Date: Wed, 11 Jul 2018 12:15:50 -0600
Subject: [PATCH 046/243] Standardize suffix paragraph in fix_enforce2d.txt

---
 doc/src/fix_enforce2d.txt | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/doc/src/fix_enforce2d.txt b/doc/src/fix_enforce2d.txt
index 01840254b6..4bbf41d25d 100644
--- a/doc/src/fix_enforce2d.txt
+++ b/doc/src/fix_enforce2d.txt
@@ -28,12 +28,13 @@ not move from their initial z coordinate.
 
 :line
 
-Styles with a suffix are functionally the same as the corresponding
-style without the suffix.  They have been optimized to run faster,
-depending on your available hardware, as discussed in
-"Section 5"_Section_accelerate.html of the manual.  The
-accelerated styles take the same arguments and should produce the same
-results, except for round-off and precision issues.
+Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
+functionally the same as the corresponding style without the suffix.
+They have been optimized to run faster, depending on your available
+hardware, as discussed in "Section 5"_Section_accelerate.html
+of the manual.  The accelerated styles take the same arguments and
+should produce the same results, except for round-off and precision
+issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-- 
GitLab


From 71f699123374944f5620b2fb2b1b18104e7b7346 Mon Sep 17 00:00:00 2001
From: Stan Moore <stamoor@sandia.gov>
Date: Wed, 11 Jul 2018 12:39:04 -0600
Subject: [PATCH 047/243] Small tweaks to fix_enforce2d_kokkos

---
 src/KOKKOS/fix_enforce2d_kokkos.cpp | 14 +++++++-------
 src/KOKKOS/fix_enforce2d_kokkos.h   | 15 ++-------------
 2 files changed, 9 insertions(+), 20 deletions(-)

diff --git a/src/KOKKOS/fix_enforce2d_kokkos.cpp b/src/KOKKOS/fix_enforce2d_kokkos.cpp
index 33aa39e2f6..26075b269c 100644
--- a/src/KOKKOS/fix_enforce2d_kokkos.cpp
+++ b/src/KOKKOS/fix_enforce2d_kokkos.cpp
@@ -34,7 +34,7 @@ FixEnforce2DKokkos<DeviceType>::FixEnforce2DKokkos(LAMMPS *lmp, int narg, char *
   execution_space = ExecutionSpaceFromDevice<DeviceType>::space;
 
   datamask_read   = V_MASK | F_MASK | OMEGA_MASK | MASK_MASK
-	  | TORQUE_MASK | ANGMOM_MASK; // | */ // MASK_MASK;
+	  | TORQUE_MASK | ANGMOM_MASK;
 
   datamask_modify = V_MASK | F_MASK | OMEGA_MASK
 	  | TORQUE_MASK | ANGMOM_MASK;
@@ -52,7 +52,6 @@ template <class DeviceType>
 void FixEnforce2DKokkos<DeviceType>::post_force(int vflag)
 {
   atomKK->sync(execution_space,datamask_read);
-  atomKK->modified(execution_space,datamask_modify);
 
   v = atomKK->k_v.view<DeviceType>();
   f = atomKK->k_f.view<DeviceType>();
@@ -120,16 +119,18 @@ void FixEnforce2DKokkos<DeviceType>::post_force(int vflag)
       break;
     }
     default:
-      error->all(FLERR, "flag_mask outside of what it should be");
+      error->all(FLERR, "Flag in fix_enforce2d_kokkos outside of what it should be");
   }
   copymode = 0;
 
-  // Probably sync here again?
-  atomKK->sync(execution_space,datamask_read);
   atomKK->modified(execution_space,datamask_modify);
 
-  for (int m = 0; m < nfixlist; m++)
+  for (int m = 0; m < nfixlist; m++) {
+    atomKK->sync(flist[m]->execution_space,flist[m]->datamask_read);
     flist[m]->enforce2d();
+    atomKK->modified(flist[m]->execution_space,flist[m]->datamask_modify);
+  }
+
 }
 
 
@@ -138,7 +139,6 @@ template <int omega_flag, int angmom_flag, int torque_flag>
 void FixEnforce2DKokkos<DeviceType>::post_force_item( int i ) const
 {
   if (mask[i] & groupbit){
-    // x(i,2) = 0; // Enforce2d does not set x[2] to zero either... :/
     v(i,2) = 0.0;
     f(i,2) = 0.0;
 
diff --git a/src/KOKKOS/fix_enforce2d_kokkos.h b/src/KOKKOS/fix_enforce2d_kokkos.h
index 1ed3cf3ef8..520a58de04 100644
--- a/src/KOKKOS/fix_enforce2d_kokkos.h
+++ b/src/KOKKOS/fix_enforce2d_kokkos.h
@@ -32,7 +32,6 @@ class FixEnforce2DKokkos : public FixEnforce2D {
  public:
   FixEnforce2DKokkos(class LAMMPS *, int, char **);
   // ~FixEnforce2DKokkos() {}
-  // void init();
   void setup(int);
   void post_force(int);
 
@@ -78,18 +77,8 @@ struct FixEnforce2DKokkosPostForceFunctor {
 
 /* ERROR/WARNING messages:
 
-E: Illegal ... command
+E: Flag in fix_enforce2d_kokkos outside of what it should be
 
-Self-explanatory.  Check the input script syntax and compare to the
-documentation for the command.  You can use -echo screen as a
-command-line option when running LAMMPS to see the offending line.
-
-E: Cannot use fix enforce2d with 3d simulation
-
-Self-explanatory.
-
-E: Fix enforce2d must be defined after fix %s
-
-UNDOCUMENTED
+LAMMPS developer-only error.
 
 */
-- 
GitLab


From aa705f6122cf08da89538aaa81aae0d7f691f178 Mon Sep 17 00:00:00 2001
From: Marshall McDonnell <mcdonnellmt@ornl.gov>
Date: Wed, 11 Jul 2018 15:59:48 -0400
Subject: [PATCH 048/243] Added tail correction to fix gcmc

---
 src/MC/fix_gcmc.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/MC/fix_gcmc.cpp b/src/MC/fix_gcmc.cpp
index 6221e6d52c..b40ce6a1b3 100644
--- a/src/MC/fix_gcmc.cpp
+++ b/src/MC/fix_gcmc.cpp
@@ -1589,6 +1589,7 @@ void FixGCMC::attempt_atomic_deletion_full()
     }
   }
   if (force->kspace) force->kspace->qsum_qsq();
+  if (force->pair->tail_flag) force->pair->reinit();
   double energy_after = energy_full();
 
   if (random_equal->uniform() <
@@ -1607,6 +1608,7 @@ void FixGCMC::attempt_atomic_deletion_full()
       if (q_flag) atom->q[i] = q_tmp;
     }
     if (force->kspace) force->kspace->qsum_qsq();
+    if (force->pair->tail_flag) force->pair->reinit();
     energy_stored = energy_before;
   }
   update_gas_atoms_list();
@@ -1700,6 +1702,7 @@ void FixGCMC::attempt_atomic_insertion_full()
   comm->borders();
   if (triclinic) domain->lamda2x(atom->nlocal+atom->nghost);
   if (force->kspace) force->kspace->qsum_qsq();
+  if (force->pair->tail_flag) force->pair->reinit();
   double energy_after = energy_full();
 
   if (energy_after < MAXENERGYTEST &&
@@ -1712,6 +1715,7 @@ void FixGCMC::attempt_atomic_insertion_full()
     atom->natoms--;
     if (proc_flag) atom->nlocal--;
     if (force->kspace) force->kspace->qsum_qsq();
+    if (force->pair->tail_flag) force->pair->reinit();
     energy_stored = energy_before;
   }
   update_gas_atoms_list();
@@ -1949,6 +1953,7 @@ void FixGCMC::attempt_molecule_deletion_full()
     }
   }
   if (force->kspace) force->kspace->qsum_qsq();
+  if (force->pair->tail_flag) force->pair->reinit();
   double energy_after = energy_full();
 
   // energy_before corrected by energy_intra
@@ -1981,6 +1986,7 @@ void FixGCMC::attempt_molecule_deletion_full()
       }
     }
     if (force->kspace) force->kspace->qsum_qsq();
+    if (force->pair->tail_flag) force->pair->reinit();
   }
   update_gas_atoms_list();
   delete[] tmpmask;
@@ -2151,6 +2157,7 @@ void FixGCMC::attempt_molecule_insertion_full()
   comm->borders();
   if (triclinic) domain->lamda2x(atom->nlocal+atom->nghost);
   if (force->kspace) force->kspace->qsum_qsq();
+  if (force->pair->tail_flag) force->pair->reinit();
   double energy_after = energy_full();
 
   // energy_after corrected by energy_intra
@@ -2181,6 +2188,7 @@ void FixGCMC::attempt_molecule_insertion_full()
       } else i++;
     }
     if (force->kspace) force->kspace->qsum_qsq();
+    if (force->pair->tail_flag) force->pair->reinit();
   }
   update_gas_atoms_list();
 }
-- 
GitLab


From b31f0245d0abeea2cc851a07bf11e280abe65730 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 11 Jul 2018 15:55:16 -0600
Subject: [PATCH 049/243] 2 small bug fixes to load balancing

---
 doc/src/run_style.txt | 16 +++++++++++-----
 src/balance.cpp       |  6 +++++-
 src/fix_balance.cpp   | 13 ++++++++++---
 src/fix_store.cpp     |  2 --
 4 files changed, 26 insertions(+), 11 deletions(-)

diff --git a/doc/src/run_style.txt b/doc/src/run_style.txt
index 3240344a45..7717ede86f 100644
--- a/doc/src/run_style.txt
+++ b/doc/src/run_style.txt
@@ -173,11 +173,17 @@ have their force go ramped to 0.0 so the overlap with the next regime
 compute forces for all pairs from 5.0 outward, with those from 5.0 to
 6.0 having their value ramped in an inverse manner.
 
-Only some pair potentials support the use of the {inner} and {middle}
-and {outer} keywords.  If not, only the {pair} keyword can be used
-with that pair style, meaning all pairwise forces are computed at the
-same rRESPA level.  See the doc pages for individual pair styles for
-details.i
+Note that you can use {inner} and {outer} without using {middle} to
+split the pairwise computations into two portions instead of three.
+Unless you are using a very long pairwise cutoff, a 2-way split is
+often faster than a 3-way split, since it avoids too much duplicate
+computation of pairwise interactions near the intermediate cutoffs.
+
+Also note that only a few pair potentials support the use of the
+{inner} and {middle} and {outer} keywords.  If not, only the {pair}
+keyword can be used with that pair style, meaning all pairwise forces
+are computed at the same rRESPA level.  See the doc pages for
+individual pair styles for details.
 
 Another option for using pair potentials with rRESPA is with the
 {hybrid} keyword, which requires the use of the "pair_style hybrid or
diff --git a/src/balance.cpp b/src/balance.cpp
index 86deb55b47..7dd13e8766 100644
--- a/src/balance.cpp
+++ b/src/balance.cpp
@@ -350,13 +350,13 @@ void Balance::command(int narg, char **arg)
   domain->set_local_box();
 
   // move particles to new processors via irregular()
+  // set disable = 0, so weights migrate with atoms for imbfinal calculation
 
   if (domain->triclinic) domain->x2lamda(atom->nlocal);
   Irregular *irregular = new Irregular(lmp);
   if (wtflag) fixstore->disable = 0;
   if (style == BISECTION) irregular->migrate_atoms(1,1,rcb->sendproc);
   else irregular->migrate_atoms(1);
-  if (wtflag) fixstore->disable = 1;
   delete irregular;
   if (domain->triclinic) domain->lamda2x(atom->nlocal);
 
@@ -377,9 +377,11 @@ void Balance::command(int narg, char **arg)
   }
 
   // imbfinal = final imbalance
+  // set disable = 1, so weights no longer migrate with atoms
 
   double maxfinal;
   double imbfinal = imbalance_factor(maxfinal);
+  if (wtflag) fixstore->disable = 1;
 
   // stats output
 
@@ -540,6 +542,8 @@ void Balance::weight_storage(char *prefix)
     fixstore = (FixStore *) modify->fix[modify->nfix-1];
   } else fixstore = (FixStore *) modify->fix[ifix];
 
+  // do not carry weights with atoms during normal atom migration
+
   fixstore->disable = 1;
 
   if (prefix) delete [] fixargs[0];
diff --git a/src/fix_balance.cpp b/src/fix_balance.cpp
index b2f545c73f..e748e0ae31 100644
--- a/src/fix_balance.cpp
+++ b/src/fix_balance.cpp
@@ -114,6 +114,7 @@ FixBalance::FixBalance(LAMMPS *lmp, int narg, char **arg) :
 
   if (nevery) force_reneighbor = 1;
   lastbalance = -1;
+  next_reneighbor = -1;
 
   // compute initial outputs
 
@@ -248,6 +249,10 @@ void FixBalance::pre_neighbor()
   if (!pending) return;
   imbfinal = balance->imbalance_factor(maxloadperproc);
   pending = 0;
+
+  // set disable = 1, so weights no longer migrate with atoms
+
+  if (wtflag) balance->fixstore->disable = 1;
 }
 
 /* ----------------------------------------------------------------------
@@ -275,21 +280,23 @@ void FixBalance::rebalance()
 
   // reset proc sub-domains
   // check and warn if any proc's subbox is smaller than neigh skin
-  //   since may lead to lost atoms in exchange()
+  //   since may lead to lost atoms in comm->exchange()
 
   if (domain->triclinic) domain->set_lamda_box();
   domain->set_local_box();
   domain->subbox_too_small_check(neighbor->skin);
 
   // move atoms to new processors via irregular()
-  // only needed if migrate_check() says an atom moves to far
+  // for non-RCB only needed if migrate_check() says an atom moves too far
   // else allow caller's comm->exchange() to do it
+  // set disable = 0, so weights migrate with atoms
+  //   important to delay disable = 1 until after pre_neighbor imbfinal calc
+  //   b/c atoms may migrate again in comm->exchange()
 
   if (domain->triclinic) domain->x2lamda(atom->nlocal);
   if (wtflag) balance->fixstore->disable = 0;
   if (lbstyle == BISECTION) irregular->migrate_atoms(0,1,sendproc);
   else if (irregular->migrate_check()) irregular->migrate_atoms();
-  if (wtflag) balance->fixstore->disable = 1;
   if (domain->triclinic) domain->lamda2x(atom->nlocal);
 
   // invoke KSpace setup_grid() to adjust to new proc sub-domains
diff --git a/src/fix_store.cpp b/src/fix_store.cpp
index 3b1f3dca77..350e120972 100644
--- a/src/fix_store.cpp
+++ b/src/fix_store.cpp
@@ -154,8 +154,6 @@ void FixStore::reset_global(int nrow_caller, int ncol_caller)
   if (vecflag) memory->create(vstore,nrow,"fix/store:vstore");
   else memory->create(astore,nrow,ncol,"fix/store:astore");
   memory->create(rbuf,nrow*ncol+2,"fix/store:rbuf");
-
- // printf("AAA HOW GET HERE\n");
 }
 
 /* ----------------------------------------------------------------------
-- 
GitLab


From 4ac47ba0372385431cadf37d68b890dbcdc1bf6e Mon Sep 17 00:00:00 2001
From: Christoph Junghans <junghans@votca.org>
Date: Thu, 12 Jul 2018 07:27:11 -0600
Subject: [PATCH 050/243] cmake/README.md: fix GPU_ARCH options

---
 cmake/README.md | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/cmake/README.md b/cmake/README.md
index 5419063f6d..bafd440a64 100644
--- a/cmake/README.md
+++ b/cmake/README.md
@@ -1421,11 +1421,11 @@ target API.
   <td>CUDA SM architecture targeted by GPU package</td>
   <td>
   <dl>
-    <dt><code>sm20</code> (Fermi)</dt>
-    <dt><code>sm30</code> (Kepler)</dt>
-    <dt><code>sm50</code> (Maxwell)</dt>
-    <dt><code>sm60</code> (Pascal)</dt>
-    <dt><code>sm70</code> (Volta)</dt>
+    <dt><code>sm_20</code> (Fermi)</dt>
+    <dt><code>sm_30</code> (Kepler)</dt>
+    <dt><code>sm_50</code> (Maxwell)</dt>
+    <dt><code>sm_60</code> (Pascal)</dt>
+    <dt><code>sm_70</code> (Volta)</dt>
   </dl>
   </td>
 </tr>
-- 
GitLab


From 21f749243a9e93da42a77a522af5801740c7daef Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Thu, 12 Jul 2018 10:21:06 -0500
Subject: [PATCH 051/243] Required newton on for pair styles body
 rounded/polygon and rounded/polyhedron

---
 doc/src/pair_body_rounded_polygon.txt     | 3 ---
 doc/src/pair_body_rounded_polyhedron.txt  | 3 ---
 src/BODY/pair_body_rounded_polygon.cpp    | 4 ++++
 src/BODY/pair_body_rounded_polyhedron.cpp | 4 ++++
 4 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt
index 15817f10f8..5ef4a9104b 100644
--- a/doc/src/pair_body_rounded_polygon.txt
+++ b/doc/src/pair_body_rounded_polygon.txt
@@ -93,9 +93,6 @@ 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.
 
diff --git a/doc/src/pair_body_rounded_polyhedron.txt b/doc/src/pair_body_rounded_polyhedron.txt
index 29fa90d2cf..81c69fdd62 100644
--- a/doc/src/pair_body_rounded_polyhedron.txt
+++ b/doc/src/pair_body_rounded_polyhedron.txt
@@ -94,9 +94,6 @@ 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.
 
diff --git a/src/BODY/pair_body_rounded_polygon.cpp b/src/BODY/pair_body_rounded_polygon.cpp
index c4c09fd677..14ef70f476 100644
--- a/src/BODY/pair_body_rounded_polygon.cpp
+++ b/src/BODY/pair_body_rounded_polygon.cpp
@@ -428,6 +428,10 @@ void PairBodyRoundedPolygon::init_style()
                "body style rounded/polygon");
   bptr = (BodyRoundedPolygon *) avec->bptr;
 
+  if (force->newton_pair == 0)
+    error->all(FLERR,"Pair style body/rounded/polygon requires "
+               "newton pair on");
+
   if (comm->ghost_velocity == 0)
     error->all(FLERR,"Pair body/rounded/polygon requires "
                "ghost atoms store velocity");
diff --git a/src/BODY/pair_body_rounded_polyhedron.cpp b/src/BODY/pair_body_rounded_polyhedron.cpp
index 0d73d249b9..2ff209d609 100644
--- a/src/BODY/pair_body_rounded_polyhedron.cpp
+++ b/src/BODY/pair_body_rounded_polyhedron.cpp
@@ -400,6 +400,10 @@ void PairBodyRoundedPolyhedron::init_style()
                "body style rounded/polyhedron");
   bptr = (BodyRoundedPolyhedron *) avec->bptr;
 
+  if (force->newton_pair == 0)
+    error->all(FLERR,"Pair style body/rounded/polyhedron requires "
+               "newton pair on");
+
   if (comm->ghost_velocity == 0)
     error->all(FLERR,"Pair body/rounded/polyhedron requires "
                "ghost atoms store velocity");
-- 
GitLab


From 85511a4db8297dbc43c0d3eb6b69c47d48767a4c Mon Sep 17 00:00:00 2001
From: HaoZeke <rohit.goswami@aol.com>
Date: Fri, 13 Jul 2018 00:44:03 +0530
Subject: [PATCH 052/243] docs: Fix sneaky unicode character

Fixes the `pdf` target of the `Makefile`.
---
 doc/src/Developer/developer.tex | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/src/Developer/developer.tex b/doc/src/Developer/developer.tex
index 9d9a93a53d..8852f44168 100644
--- a/doc/src/Developer/developer.tex
+++ b/doc/src/Developer/developer.tex
@@ -476,7 +476,7 @@ is the name of the class. This code allows LAMMPS to find your fix
 when it parses input script. In addition, your fix header must be
 included in the file "style\_fix.h". In case if you use LAMMPS make,
 this file is generated automatically - all files starting with prefix
-fix\_ are included, so call your header the same way. Otherwise, donÕt
+fix\_ are included, so call your header the same way. Otherwise, don't
 forget to add your include into "style\_fix.h".
 
 Let's write a simple fix which will print average velocity at the end
-- 
GitLab


From 16381a52b14aeeb47cc6eb0e2897019bc9c4a4df Mon Sep 17 00:00:00 2001
From: Stan Moore <stamoor@sandia.gov>
Date: Thu, 12 Jul 2018 20:22:38 -0600
Subject: [PATCH 053/243] Fix crash in ReaxFF on GPUs

---
 src/KOKKOS/pair_reaxc_kokkos.cpp | 9 +++++----
 src/KOKKOS/pair_reaxc_kokkos.h   | 2 +-
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/KOKKOS/pair_reaxc_kokkos.cpp b/src/KOKKOS/pair_reaxc_kokkos.cpp
index bb9f8ab417..e2e2e6f6de 100644
--- a/src/KOKKOS/pair_reaxc_kokkos.cpp
+++ b/src/KOKKOS/pair_reaxc_kokkos.cpp
@@ -343,6 +343,7 @@ void PairReaxCKokkos<DeviceType>::init_md()
 
   swa = control->nonb_low;
   swb = control->nonb_cut;
+  enobondsflag = control->enobondsflag;
 
   if (fabs(swa) > 0.01 )
     error->warning(FLERR,"Warning: non-zero lower Taper-radius cutoff");
@@ -2272,12 +2273,12 @@ void PairReaxCKokkos<DeviceType>::operator()(PairReaxComputeMulti2<NEIGHFLAG,EVF
   int numbonds = d_bo_num[i];
 
   e_lp = 0.0;
-  if (numbonds > 0 || control->enobondsflag)
+  if (numbonds > 0 || enobondsflag)
     e_lp = p_lp2 * d_Delta_lp[i] * inv_expvd2;
   const F_FLOAT dElp = p_lp2 * inv_expvd2 + 75.0 * p_lp2 * d_Delta_lp[i] * expvd2 * inv_expvd2*inv_expvd2;
   const F_FLOAT CElp = dElp * d_dDelta_lp[i];
 
-  if (numbonds > 0 || control->enobondsflag)
+  if (numbonds > 0 || enobondsflag)
     a_CdDelta[i] += CElp;
 
   if (eflag) ev.ereax[0] += e_lp;
@@ -2314,7 +2315,7 @@ void PairReaxCKokkos<DeviceType>::operator()(PairReaxComputeMulti2<NEIGHFLAG,EVF
   const F_FLOAT inv_exp_ovun8 = 1.0 / (1.0 + exp_ovun8);
 
   e_un = 0;
-  if (numbonds > 0 || control->enobondsflag)
+  if (numbonds > 0 || enobondsflag)
     e_un = -p_ovun5 * (1.0 - exp_ovun6) * inv_exp_ovun2n * inv_exp_ovun8;
 
   if (eflag) ev.ereax[2] += e_un;
@@ -2334,7 +2335,7 @@ void PairReaxCKokkos<DeviceType>::operator()(PairReaxComputeMulti2<NEIGHFLAG,EVF
   // multibody forces
 
   a_CdDelta[i] += CEover3;
-  if (numbonds > 0 || control->enobondsflag)
+  if (numbonds > 0 || enobondsflag)
     a_CdDelta[i] += CEunder3;
 
   const int j_start = d_bo_first[i];
diff --git a/src/KOKKOS/pair_reaxc_kokkos.h b/src/KOKKOS/pair_reaxc_kokkos.h
index 5175e274a8..5c96d44618 100644
--- a/src/KOKKOS/pair_reaxc_kokkos.h
+++ b/src/KOKKOS/pair_reaxc_kokkos.h
@@ -427,7 +427,7 @@ class PairReaxCKokkos : public PairReaxC {
 
   friend void pair_virial_fdotr_compute<PairReaxCKokkos>(PairReaxCKokkos*);
 
-  int bocnt,hbcnt;
+  int bocnt,hbcnt,enobondsflag;
 
   typedef LR_lookup_table_kk<DeviceType> LR_lookup_table_kk_DT;
 
-- 
GitLab


From d4f8940ff2367f81b0ae806ec3cd057cc69c6614 Mon Sep 17 00:00:00 2001
From: Stan Moore <stamoor@sandia.gov>
Date: Fri, 13 Jul 2018 07:40:06 -0600
Subject: [PATCH 054/243] Update command doc page for Kokkos enforce2d

---
 doc/src/Section_commands.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt
index 3dabdbeaa1..cc9757a88e 100644
--- a/doc/src/Section_commands.txt
+++ b/doc/src/Section_commands.txt
@@ -571,7 +571,7 @@ USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.
 "dt/reset"_fix_dt_reset.html,
 "efield"_fix_efield.html,
 "ehex"_fix_ehex.html,
-"enforce2d"_fix_enforce2d.html,
+"enforce2d (k)"_fix_enforce2d.html,
 "evaporate"_fix_evaporate.html,
 "external"_fix_external.html,
 "freeze"_fix_freeze.html,
-- 
GitLab


From 8447d8dd9199555d136f6dd92d389f07cc03d320 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Fri, 13 Jul 2018 14:34:50 -0500
Subject: [PATCH 055/243] Updated doc pages for pair body rounded/polygon and
 rounded/polyhedra

---
 doc/src/pair_body_rounded_polygon.txt    | 16 +++++++++++-----
 doc/src/pair_body_rounded_polyhedron.txt | 20 +++++++++++++-------
 2 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt
index 5ef4a9104b..55bd8e51d4 100644
--- a/doc/src/pair_body_rounded_polygon.txt
+++ b/doc/src/pair_body_rounded_polygon.txt
@@ -18,8 +18,6 @@ mu = normal friction coefficient during gross sliding
 delta_ua = multiple contact scaling factor
 cutoff = global separation cutoff for interactions (distance units), see below for definition :pre
 
-NOTE: what does gross sliding mean?
-
 [Examples:]
 
 pair_style body/rounded/polygon 20.0 5.0 0.0 1.0 0.5
@@ -38,7 +36,7 @@ body particles.
 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
+specified diameter.  The edges of the polygon are defined between
 pairs of adjacent vertices.  The circle diameter for each polygon is
 specified in the data file read by the "read data"_read_data.html
 command.  This is a 2d discrete element model (DEM) which allows for
@@ -47,7 +45,7 @@ multiple contact points.
 Note that when two particles interact, the effective surface of each
 polygon particle is displaced outward from each of its vertices and
 edges by half its circle diameter.  The interaction forces and
-energies bewteen two particles are defined with respect to the
+energies between two particles are defined with respect to the
 separation of their respective rounded surfaces, not by the separation
 of the vertices and edges themselves.
 
@@ -65,7 +63,15 @@ 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 ?
+In "Fraige"_#Fraige, the tangential friction force between two particles
+that are in contact is modeled differently prior to gross sliding
+(i.e. static friction) and during gross-sliding (kinetic friction).
+The latter takes place when the tangential deformation exceeds
+the Coulomb frictional limit.  In the current implementation, however,
+we do not take into account frictional history, i.e. we do not keep track
+of how many time steps the two particles have been in contact
+nor calculate the tangential deformation. We assume that gross sliding
+takes place right when 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,
diff --git a/doc/src/pair_body_rounded_polyhedron.txt b/doc/src/pair_body_rounded_polyhedron.txt
index 81c69fdd62..5f43ebee63 100644
--- a/doc/src/pair_body_rounded_polyhedron.txt
+++ b/doc/src/pair_body_rounded_polyhedron.txt
@@ -16,9 +16,7 @@ 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
-
-NOTE: what does gross sliding mean?
+cutoff = global separation cutoff for interactions (distance units), see below for definition :pre
 
 [Examples:]
 
@@ -39,16 +37,16 @@ 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
+are defined between pairs of adjacent vertices.  Its faces are defined
 by a loop of edges.  The sphere diameter for each polygon is specified
 in the data file read by the "read data"_read_data.html command.  This
 is a discrete element model (DEM) which allows for multiple contact
 points.
 
-Note that when two particles interaact, the effective surface of each
+Note that when two particles interact, the effective surface of each
 polyhedron particle is displaced outward from each of its vertices,
 edges, and faces by half its sphere diameter.  The interaction forces
-and energies bewteen two particles are defined with respect to the
+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.
 
@@ -66,7 +64,15 @@ 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 ?
+In "Wang"_#Wang, the tangential friction force between two particles
+that are in contact is modeled differently prior to gross sliding
+(i.e. static friction) and during gross-sliding (kinetic friction).
+The latter takes place when the tangential deformation exceeds
+the Coulomb frictional limit.  In the current implementation, however,
+we do not take into account frictional history, i.e. we do not keep track
+of how many time steps the two particles have been in contact
+nor calculate the tangential deformation. We assume that gross sliding
+takes place right when 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,
-- 
GitLab


From d00eaef070f6d8500831f5893ec2de6dfa5041b9 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Fri, 13 Jul 2018 23:05:44 -0400
Subject: [PATCH 056/243] Allow 'set' command to change atom velocities

---
 python/lammps.py | 11 +++++++++++
 src/set.cpp      | 26 +++++++++++++++++++++++++-
 2 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/python/lammps.py b/python/lammps.py
index e7d703e12a..2f4ffb642e 100644
--- a/python/lammps.py
+++ b/python/lammps.py
@@ -708,6 +708,12 @@ class Atom(object):
             self.lmp.eval("vy[%d]" % self.index),
             self.lmp.eval("vz[%d]" % self.index))
 
+  @velocity.setter
+  def velocity(self, value):
+     self.lmp.set("atom", self.index, "vx", value[0])
+     self.lmp.set("atom", self.index, "vy", value[1])
+     self.lmp.set("atom", self.index, "vz", value[2])
+
   @property
   def force(self):
     return (self.lmp.eval("fx[%d]" % self.index),
@@ -738,6 +744,11 @@ class Atom2D(Atom):
     return (self.lmp.eval("vx[%d]" % self.index),
             self.lmp.eval("vy[%d]" % self.index))
 
+  @velocity.setter
+  def velocity(self, value):
+     self.lmp.set("atom", self.index, "vx", value[0])
+     self.lmp.set("atom", self.index, "vy", value[1])
+
   @property
   def force(self):
     return (self.lmp.eval("fx[%d]" % self.index),
diff --git a/src/set.cpp b/src/set.cpp
index 0294f93e5d..7eca4e9a9c 100644
--- a/src/set.cpp
+++ b/src/set.cpp
@@ -48,7 +48,7 @@ enum{TYPE,TYPE_FRACTION,MOLECULE,X,Y,Z,CHARGE,MASS,SHAPE,LENGTH,TRI,
      THETA,THETA_RANDOM,ANGMOM,OMEGA,
      DIAMETER,DENSITY,VOLUME,IMAGE,BOND,ANGLE,DIHEDRAL,IMPROPER,
      MESO_E,MESO_CV,MESO_RHO,EDPD_TEMP,EDPD_CV,CC,SMD_MASS_DENSITY,
-     SMD_CONTACT_RADIUS,DPDTHETA,INAME,DNAME};
+     SMD_CONTACT_RADIUS,DPDTHETA,INAME,DNAME,VX,VY,VZ};
 
 #define BIG INT_MAX
 
@@ -141,6 +141,27 @@ void Set::command(int narg, char **arg)
       set(Z);
       iarg += 2;
 
+    } else if (strcmp(arg[iarg],"vx") == 0) {
+      if (iarg+2 > narg) error->all(FLERR,"Illegal set command");
+      if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) varparse(arg[iarg+1],1);
+      else dvalue = force->numeric(FLERR,arg[iarg+1]);
+      set(VX);
+      iarg += 2;
+
+    } else if (strcmp(arg[iarg],"vy") == 0) {
+      if (iarg+2 > narg) error->all(FLERR,"Illegal set command");
+      if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) varparse(arg[iarg+1],1);
+      else dvalue = force->numeric(FLERR,arg[iarg+1]);
+      set(VY);
+      iarg += 2;
+
+    } else if (strcmp(arg[iarg],"vz") == 0) {
+      if (iarg+2 > narg) error->all(FLERR,"Illegal set command");
+      if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) varparse(arg[iarg+1],1);
+      else dvalue = force->numeric(FLERR,arg[iarg+1]);
+      set(VZ);
+      iarg += 2;
+
     } else if (strcmp(arg[iarg],"charge") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal set command");
       if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) varparse(arg[iarg+1],1);
@@ -732,6 +753,9 @@ void Set::set(int keyword)
     else if (keyword == X) atom->x[i][0] = dvalue;
     else if (keyword == Y) atom->x[i][1] = dvalue;
     else if (keyword == Z) atom->x[i][2] = dvalue;
+    else if (keyword == VX) atom->v[i][0] = dvalue;
+    else if (keyword == VY) atom->v[i][1] = dvalue;
+    else if (keyword == VZ) atom->v[i][2] = dvalue;
     else if (keyword == CHARGE) atom->q[i] = dvalue;
     else if (keyword == MASS) {
       if (dvalue <= 0.0) error->one(FLERR,"Invalid mass in set command");
-- 
GitLab


From aa3d3213c914144d0873c572363522f108ce1cb6 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Fri, 13 Jul 2018 23:06:42 -0400
Subject: [PATCH 057/243] Update set command documentation

---
 doc/src/set.txt | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/doc/src/set.txt b/doc/src/set.txt
index d05660dc42..d2235d5c32 100644
--- a/doc/src/set.txt
+++ b/doc/src/set.txt
@@ -36,6 +36,8 @@ keyword = {type} or {type/fraction} or {mol} or {x} or {y} or {z} or \
     value can be an atom-style variable (see below)
   {x},{y},{z} value = atom coordinate (distance units)
     value can be an atom-style variable (see below)
+  {vx},{vy},{vz} value = atom velocity (velocity units)
+    value can be an atom-style variable (see below)
   {charge} value = atomic charge (charge units)
     value can be an atom-style variable (see below)
   {dipole} values = x y z
@@ -127,6 +129,7 @@ set type 3 charge 0.5
 set type 1*3 charge 0.5
 set atom * charge v_atomfile
 set atom 100*200 x 0.5 y 1.0
+set atom 100 vx 0.0 vy 0.0 vz -1.0
 set atom 1492 type 3 :pre
 
 [Description:]
@@ -225,7 +228,8 @@ IDs.
 
 Keywords {x}, {y}, {z}, and {charge} set the coordinates or charge of
 all selected atoms.  For {charge}, the "atom style"_atom_style.html
-being used must support the use of atomic charge.
+being used must support the use of atomic charge. Keywords {vx}, {vy},
+and {vz} set the velocities of all selected atoms.
 
 Keyword {dipole} uses the specified x,y,z values as components of a
 vector to set as the orientation of the dipole moment vectors of the
-- 
GitLab


From f7d551eb5400580899cde3d2dfa9c325729bbcbc Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Sun, 15 Jul 2018 08:27:55 -0500
Subject: [PATCH 058/243] Added a figure illustrating pair body rounded/polygon
 and rounded/polyhedron

---
 doc/src/JPG/pair_body_rounded.png        | Bin 0 -> 650896 bytes
 doc/src/pair_body_rounded_polygon.txt    |   2 ++
 doc/src/pair_body_rounded_polyhedron.txt |   2 ++
 3 files changed, 4 insertions(+)
 create mode 100644 doc/src/JPG/pair_body_rounded.png

diff --git a/doc/src/JPG/pair_body_rounded.png b/doc/src/JPG/pair_body_rounded.png
new file mode 100644
index 0000000000000000000000000000000000000000..709105ca325764adb567f123a8797ca4f76c581e
GIT binary patch
literal 650896
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

literal 0
HcmV?d00001

diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt
index 55bd8e51d4..e015dc76df 100644
--- a/doc/src/pair_body_rounded_polygon.txt
+++ b/doc/src/pair_body_rounded_polygon.txt
@@ -63,6 +63,8 @@ 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?
 
+:c,image(JPG/pair_body_rounded.jpg)
+
 In "Fraige"_#Fraige, the tangential friction force between two particles
 that are in contact is modeled differently prior to gross sliding
 (i.e. static friction) and during gross-sliding (kinetic friction).
diff --git a/doc/src/pair_body_rounded_polyhedron.txt b/doc/src/pair_body_rounded_polyhedron.txt
index 5f43ebee63..4c48b5c1bf 100644
--- a/doc/src/pair_body_rounded_polyhedron.txt
+++ b/doc/src/pair_body_rounded_polyhedron.txt
@@ -64,6 +64,8 @@ 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?
 
+:c,image(JPG/pair_body_rounded.jpg)
+
 In "Wang"_#Wang, the tangential friction force between two particles
 that are in contact is modeled differently prior to gross sliding
 (i.e. static friction) and during gross-sliding (kinetic friction).
-- 
GitLab


From 27dc7f3205f5da2c7379ef3141df66546c054557 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Mon, 16 Jul 2018 11:44:45 -0500
Subject: [PATCH 059/243] Added a tex file for the equations of pair
 rounded/polygon and rounded/polyhedron

---
 doc/src/Eqs/pair_body_rounded.tex | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 doc/src/Eqs/pair_body_rounded.tex

diff --git a/doc/src/Eqs/pair_body_rounded.tex b/doc/src/Eqs/pair_body_rounded.tex
new file mode 100644
index 0000000000..54e095340f
--- /dev/null
+++ b/doc/src/Eqs/pair_body_rounded.tex
@@ -0,0 +1,13 @@
+\documentstyle[12pt]{article}
+
+\begin{document}
+
+\begin{eqnarray*}
+ F_n &=& k_n \delta_n - c_n v_n, \qquad \delta_n \le 0 \\
+     &=& -k_{na} \delta_n - c_n v_n, \qquad 0 < \delta_n \le r_c \\
+     &=& 0 \qquad \qquad \qquad \qquad \delta_n > r_c \\
+ F_t &=& \mu k_n \delta_n - c_t v_t, \qquad \delta_n \le 0 \\
+     &=& 0 \qquad \qquad \qquad \qquad \delta_n > 0
+\end{eqnarray*}
+
+\end{document}
-- 
GitLab


From cfa6e8717d2dfd9c5ec2c93dfafdd88de2d8dfb1 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Mon, 16 Jul 2018 12:45:23 -0500
Subject: [PATCH 060/243] Updated doc pages for pair body rounded/polygon and
 rounded/polyhedron with equations

---
 doc/src/Eqs/pair_body_rounded.jpg        | Bin 0 -> 146978 bytes
 doc/src/pair_body_rounded_polygon.txt    |   8 ++++----
 doc/src/pair_body_rounded_polyhedron.txt |   8 ++++----
 3 files changed, 8 insertions(+), 8 deletions(-)
 create mode 100644 doc/src/Eqs/pair_body_rounded.jpg

diff --git a/doc/src/Eqs/pair_body_rounded.jpg b/doc/src/Eqs/pair_body_rounded.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e7136ddd20c2acea0e89fa8412497333f15cb541
GIT binary patch
literal 146978
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

literal 0
HcmV?d00001

diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt
index e015dc76df..d611e8ec98 100644
--- a/doc/src/pair_body_rounded_polygon.txt
+++ b/doc/src/pair_body_rounded_polygon.txt
@@ -58,10 +58,10 @@ 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?
+The forces between vertex-vertex, vertex-edge, vertex-face and edge-edge
+are given by:
+
+:c,image(Eqs/pair_body_rounded.jpg)
 
 :c,image(JPG/pair_body_rounded.jpg)
 
diff --git a/doc/src/pair_body_rounded_polyhedron.txt b/doc/src/pair_body_rounded_polyhedron.txt
index 4c48b5c1bf..52f6294d85 100644
--- a/doc/src/pair_body_rounded_polyhedron.txt
+++ b/doc/src/pair_body_rounded_polyhedron.txt
@@ -59,10 +59,10 @@ 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?
+The forces between vertex-vertex, vertex-edge, vertex-face, edge-edge
+and edge-face are given by:
+
+:c,image(Eqs/pair_body_rounded.jpg)
 
 :c,image(JPG/pair_body_rounded.jpg)
 
-- 
GitLab


From 783839e98593bdcb568bf651529b0d1b6f5226db Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Mon, 16 Jul 2018 15:21:52 -0400
Subject: [PATCH 061/243] add support for restarting extra/XXX/per/atom
 settings in binary restarts

---
 src/read_restart.cpp  | 15 ++++++++++++++-
 src/write_restart.cpp | 10 +++++++++-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/src/read_restart.cpp b/src/read_restart.cpp
index 1164de6faa..7d8e6ca395 100644
--- a/src/read_restart.cpp
+++ b/src/read_restart.cpp
@@ -62,7 +62,9 @@ enum{VERSION,SMALLINT,TAGINT,BIGINT,
      MULTIPROC,MPIIO,PROCSPERFILE,PERPROC,
      IMAGEINT,BOUNDMIN,TIMESTEP,
      ATOM_ID,ATOM_MAP_STYLE,ATOM_MAP_USER,ATOM_SORTFREQ,ATOM_SORTBIN,
-     COMM_MODE,COMM_CUTOFF,COMM_VEL,NO_PAIR};
+     COMM_MODE,COMM_CUTOFF,COMM_VEL,NO_PAIR,
+     EXTRA_BOND_PER_ATOM,EXTRA_ANGLE_PER_ATOM,EXTRA_DIHEDRAL_PER_ATOM,
+     EXTRA_IMPROPER_PER_ATOM,EXTRA_SPECIAL_PER_ATOM};
 
 #define LB_FACTOR 1.1
 
@@ -914,6 +916,17 @@ void ReadRestart::header(int incompatible)
     } else if (flag == COMM_VEL) {
       comm->ghost_velocity = read_int();
 
+    } else if (flag == EXTRA_BOND_PER_ATOM) {
+      atom->extra_bond_per_atom = read_int();
+    } else if (flag == EXTRA_ANGLE_PER_ATOM) {
+      atom->extra_angle_per_atom = read_int();
+    } else if (flag == EXTRA_DIHEDRAL_PER_ATOM) {
+      atom->extra_dihedral_per_atom = read_int();
+    } else if (flag == EXTRA_IMPROPER_PER_ATOM) {
+      atom->extra_improper_per_atom = read_int();
+    } else if (flag == EXTRA_SPECIAL_PER_ATOM) {
+      force->special_extra = read_int();
+
     } else error->all(FLERR,"Invalid flag in header section of restart file");
 
     flag = read_int();
diff --git a/src/write_restart.cpp b/src/write_restart.cpp
index 69b731870d..1bfbb382a8 100644
--- a/src/write_restart.cpp
+++ b/src/write_restart.cpp
@@ -61,7 +61,9 @@ enum{VERSION,SMALLINT,TAGINT,BIGINT,
      MULTIPROC,MPIIO,PROCSPERFILE,PERPROC,
      IMAGEINT,BOUNDMIN,TIMESTEP,
      ATOM_ID,ATOM_MAP_STYLE,ATOM_MAP_USER,ATOM_SORTFREQ,ATOM_SORTBIN,
-     COMM_MODE,COMM_CUTOFF,COMM_VEL,NO_PAIR};
+     COMM_MODE,COMM_CUTOFF,COMM_VEL,NO_PAIR,
+     EXTRA_BOND_PER_ATOM,EXTRA_ANGLE_PER_ATOM,EXTRA_DIHEDRAL_PER_ATOM,
+     EXTRA_IMPROPER_PER_ATOM,EXTRA_SPECIAL_PER_ATOM};
 
 /* ---------------------------------------------------------------------- */
 
@@ -527,6 +529,12 @@ void WriteRestart::header()
   write_double(COMM_CUTOFF,comm->cutghostuser);
   write_int(COMM_VEL,comm->ghost_velocity);
 
+  write_int(EXTRA_BOND_PER_ATOM,atom->extra_bond_per_atom);
+  write_int(EXTRA_ANGLE_PER_ATOM,atom->extra_angle_per_atom);
+  write_int(EXTRA_DIHEDRAL_PER_ATOM,atom->extra_dihedral_per_atom);
+  write_int(EXTRA_IMPROPER_PER_ATOM,atom->extra_improper_per_atom);
+  write_int(EXTRA_SPECIAL_PER_ATOM,force->special_extra);
+
   // -1 flag signals end of header
 
   int flag = -1;
-- 
GitLab


From 5abbea360626d02a439daf40309f1b4e13861fff Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Mon, 16 Jul 2018 14:52:18 -0600
Subject: [PATCH 062/243] doc file changes/Qs added for body DEM particles

---
 doc/src/JPG/pair_body_rounded.jpg        | Bin 0 -> 35619 bytes
 doc/src/JPG/pair_body_rounded.png        | Bin 650896 -> 0 bytes
 doc/src/body.txt                         |  61 +++++++++++---------
 doc/src/pair_body_rounded_polygon.txt    |  69 +++++++++++++++--------
 doc/src/pair_body_rounded_polyhedron.txt |  34 ++++++++---
 5 files changed, 106 insertions(+), 58 deletions(-)
 create mode 100644 doc/src/JPG/pair_body_rounded.jpg
 delete mode 100644 doc/src/JPG/pair_body_rounded.png

diff --git a/doc/src/JPG/pair_body_rounded.jpg b/doc/src/JPG/pair_body_rounded.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..cd745c44e27e96585be021b3dcca342f686e15e9
GIT binary patch
literal 35619
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
ao3E#Ks8+kUP$6UEO1@~RnGje0|4jfb;yb+n

literal 0
HcmV?d00001

diff --git a/doc/src/JPG/pair_body_rounded.png b/doc/src/JPG/pair_body_rounded.png
deleted file mode 100644
index 709105ca325764adb567f123a8797ca4f76c581e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 650896
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

diff --git a/doc/src/body.txt b/doc/src/body.txt
index 0e64e6ad5b..be5b3d4edf 100644
--- a/doc/src/body.txt
+++ b/doc/src/body.txt
@@ -27,9 +27,9 @@ styles supported by LAMMPS are as follows.  The name in the first
 column is used as the {bstyle} argument for the "atom_style
 body"_atom_style.html command.
 
-{nparticle} | rigid body with N sub-particles |
-{rounded/polygon} | 2d polygons with N vertices :tb(c=2,s=|)
-{rounded/polyhedron} | 3d polyhedra with N vertices, E edges and F faces  :tb(c=2,s=|)
+{nparticle} : rigid body with N sub-particles
+{rounded/polygon} : 2d polygons with N vertices
+{rounded/polyhedron} : 3d polyhedra with N vertices, E edges and F faces :tb(s=:)
 
 The body style determines what attributes are stored for each body and
 thus how they can be used to compute pairwise body/body or
@@ -180,11 +180,11 @@ The {bflag2} argument is ignored.
 
 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.
+used for 2d models; see the "boundary"_boundary.html command.  See the
+"pair_style body/rounded/polygon" doc page for a diagram of two
+squares with rounded circles at the vertices.  Special cases for N = 1
+(circle) and N = 2 (rod with rounded ends) can also be specified.
 
-NOTE: include a diagram of 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.
 
@@ -220,9 +220,9 @@ vertices (x1 to zN) as 3N values (with z = 0.0 for each), followed by
 2N vertex indices corresponding to the end points of the N edges,
 followed by a single diameter value = the rounded diameter of the
 circle that surrounds each vertex. The diameter value can be different
-for each body particle. These floating-point values can be
-listed on as many lines as you wish; see the
-"read_data"_read_data.html command for more details.
+for each body particle. These floating-point values can be listed on
+as many lines as you wish; see the "read_data"_read_data.html command
+for more details.
 
 The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the
 values consistent with the current orientation of the rigid body
@@ -235,9 +235,10 @@ 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 particle
-whose edge length is sqrt(2) and rounded diameter is 1.0 in length unit
-and initial orientation is determined from the 6 moments of inertia
-(ixx iyy izz ixy ixz iyz):
+whose edge length is sqrt(2) and rounded diameter is 1.0.  The
+orientation of the square is aligned with the xy coordinate axes which
+is consistent with the 6 moments of inertia: ixx iyy izz ixy ixz iyz =
+1 1 4 0 0 0.
 
 3 1 27
 4
@@ -265,14 +266,14 @@ body particles with a wall.
 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.
+"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.
 
-NOTE: include a diagram of a rounded polyhedron body particle
-
-NOTE: 2d objects can also be specified as a special case, e.g.
-for a triangle, N = 3, E = 3 and F = 1.
-
-Special cases for N = 1 (spheres) and N = 2 (rods) are also valid.
+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.
 
 This body style is for 3d discrete element models, as described in
 "Wang"_#Wang.
@@ -316,9 +317,9 @@ moments of inertia followed by the coordinates of the N vertices (x1
 to zN) as 3N values, followed by 2N vertex indices corresponding to
 the end points of the E edges, then 4*F vertex indices defining F
 faces.  The last value is the diameter value = the rounded diameter of
-the sphere that surrounds each vertex. The diameter value can be different
-for each body particle. These floating-point values
-can be listed on as many lines as you wish; see the
+the sphere that surrounds each vertex. The diameter value can be
+different for each body particle. These floating-point values can be
+listed on as many lines as you wish; see the
 "read_data"_read_data.html command for more details.  Because the
 maxmimum vertices per face is hard-coded to be 4
 (i.e. quadrilaterals), faces with more than 4 vertices need to be
@@ -340,9 +341,10 @@ position of the particle is specified by the x,y,z values in the
 {Atoms} section of the data file.
 
 For example, the following information would specify a cubic particle
-whose edge length is 2.0 and rounded diameter is 0.5 in length unit
-and initial orientation is determined from the 6 moments of inertia
-(ixx iyy izz ixy ixz iyz):
+whose edge length is 2.0 and rounded diameter is 0.5.
+The orientation of the cube is aligned with the xyz coordinate axes
+which is consistent with the 6 moments of inertia: ixx iyy izz ixy ixz
+iyz = 0.667 0.667 0.667 0 0 0.
 
 1 3 79
 8 12 6
@@ -375,6 +377,13 @@ and initial orientation is determined from the 6 moments of inertia
 3 0 4 7
 0.5 :pre
 
+The "pair_style
+body/rounded/polhedron"_pair_body_rounded_polyhedron.html command can
+be used with this body style to compute body/body interactions.  The
+"fix wall/body/polyhedron"_fix_wall_body_polygon.html command can be
+used with this body style to compute the interaction of body particles
+with a wall.
+
 :line
 
 For output purposes via the "compute
diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt
index d611e8ec98..588a7d6ff9 100644
--- a/doc/src/pair_body_rounded_polygon.txt
+++ b/doc/src/pair_body_rounded_polygon.txt
@@ -28,9 +28,9 @@ 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.  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/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.
 
 This pairwise interaction between rounded polygons is described in
@@ -44,36 +44,50 @@ multiple contact points.
 
 Note that when two particles interact, the effective surface of each
 polygon particle is displaced outward from each of its vertices and
-edges by half its circle diameter.  The interaction forces and
-energies between two particles are defined with respect to the
-separation of their respective rounded surfaces, not by the separation
-of the vertices and edges themselves.
+edges by half its circle diameter (as in the diagram below of a gray
+and yellow square particle).  The interaction forces and energies
+between two particles are defined with respect to the separation of
+their respective rounded surfaces, not by the separation of the
+vertices and edges themselves.
 
 This means that the specified cutoff in the pair_style command 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.
-
-The forces between vertex-vertex, vertex-edge, vertex-face and edge-edge
+particles (at any orientation) which would produce an overlap of the
+two surfaces.  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.
+
+The forces between vertex-vertex, vertex-edge, and edge-edge overlaps
 are given by:
 
 :c,image(Eqs/pair_body_rounded.jpg)
 
 :c,image(JPG/pair_body_rounded.jpg)
 
-In "Fraige"_#Fraige, the tangential friction force between two particles
-that are in contact is modeled differently prior to gross sliding
-(i.e. static friction) and during gross-sliding (kinetic friction).
-The latter takes place when the tangential deformation exceeds
-the Coulomb frictional limit.  In the current implementation, however,
-we do not take into account frictional history, i.e. we do not keep track
-of how many time steps the two particles have been in contact
-nor calculate the tangential deformation. We assume that gross sliding
-takes place right when two particles are in contact.
+In "Fraige"_#Fraige, the tangential friction force between two
+particles that are in contact is modeled differently prior to gross
+sliding (i.e. static friction) and during gross-sliding (kinetic
+friction).  The latter takes place when the tangential deformation
+exceeds the Coulomb frictional limit.  In the current implementation,
+however, we do not take into account frictional history, i.e. we do
+not keep track of how many time steps the two particles have been in
+contact nor calculate the tangential deformation.  Instead, we assume
+that gross sliding takes place as soon as two particles are in
+contact.
+
+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?
 
 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,
@@ -82,6 +96,13 @@ or in the data file read by the "read_data"_read_data.html command:
 k_n (energy/distance^2 units)
 k_na (energy/distance^2 units) :ul
 
+Effectively, k_n and k_na are the slopes of the red lines in the plot
+above for force versus distance, for r < 0 and 0 < r < rc
+respectively.  TRUNG: is this sentence correct?
+
+TRUNG: reminder to copy any change in this file
+to the pair polyhedron file as well (and vice versa)
+
 [Mixing, shift, table, tail correction, restart, rRESPA info]:
 
 This pair style does not support the "pair_modify"_pair_modify.html
diff --git a/doc/src/pair_body_rounded_polyhedron.txt b/doc/src/pair_body_rounded_polyhedron.txt
index 52f6294d85..621254bd72 100644
--- a/doc/src/pair_body_rounded_polyhedron.txt
+++ b/doc/src/pair_body_rounded_polyhedron.txt
@@ -33,6 +33,20 @@ 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.
 
+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.
+
 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
@@ -59,8 +73,8 @@ 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.
 
-The forces between vertex-vertex, vertex-edge, vertex-face, edge-edge
-and edge-face are given by:
+The forces between vertex-vertex, vertex-edge, vertex-face, edge-edge,
+and edge-face overlaps are given by:
 
 :c,image(Eqs/pair_body_rounded.jpg)
 
@@ -69,12 +83,12 @@ and edge-face are given by:
 In "Wang"_#Wang, the tangential friction force between two particles
 that are in contact is modeled differently prior to gross sliding
 (i.e. static friction) and during gross-sliding (kinetic friction).
-The latter takes place when the tangential deformation exceeds
-the Coulomb frictional limit.  In the current implementation, however,
-we do not take into account frictional history, i.e. we do not keep track
-of how many time steps the two particles have been in contact
-nor calculate the tangential deformation. We assume that gross sliding
-takes place right when two particles are in contact.
+The latter takes place when the tangential deformation exceeds the
+Coulomb frictional limit.  In the current implementation, however, we
+do not take into account frictional history, i.e. we do not keep track
+of how many time steps the two particles have been in contact nor
+calculate the tangential deformation.  Instead, we assume that gross
+sliding takes place as soon as two particles are in contact.
 
 The following coefficients must be defined for each pair of atom types
 via the "pair_coeff"_pair_coeff.html command as in the examples above,
@@ -83,6 +97,10 @@ or in the data file read by the "read_data"_read_data.html command:
 k_n (energy/distance^2 units)
 k_na (energy/distance^2 units) :ul
 
+Effectively, k_n and k_na are the slopes of the red lines in the plot
+above for force versus distance, for r < 0 and 0 < r < rc
+respectively.  TRUNG: is this sentence correct?
+
 [Mixing, shift, table, tail correction, restart, rRESPA info]:
 
 This pair style does not support the "pair_modify"_pair_modify.html
-- 
GitLab


From fa73fab5df878b29a3e121cc1655e73e718e3c05 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Mon, 16 Jul 2018 18:12:15 -0600
Subject: [PATCH 063/243] patch 16Jul18

---
 doc/src/Manual.txt | 4 ++--
 src/version.h      | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index e34ec8d5ba..e69797d9ec 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -1,7 +1,7 @@
 <!-- HTML_ONLY -->
 <HEAD>
 <TITLE>LAMMPS Users Manual</TITLE>
-<META NAME="docnumber" CONTENT="29 Jun 2018 version">
+<META NAME="docnumber" CONTENT="16 Jul 2018 version">
 <META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
 <META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
 </HEAD>
@@ -19,7 +19,7 @@
 :line
 
 LAMMPS Documentation :c,h1
-29 Jun 2018 version :c,h2
+16 Jul 2018 version :c,h2
 
 Version info: :h3
 
diff --git a/src/version.h b/src/version.h
index 2833430def..90a21631d9 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1 +1 @@
-#define LAMMPS_VERSION "29 Jun 2018"
+#define LAMMPS_VERSION "16 Jul 2018"
-- 
GitLab


From d23788831c8833ed78b1bb603ad417e021af98d2 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Tue, 17 Jul 2018 10:54:05 -0500
Subject: [PATCH 064/243] Updated to the doc pages of body rounded/polygon and
 rounded/polyhedra and the pair style: + added examples for special cases with
 disks and rods for 2d, and spheres and rods for 3d, + corrected the
 definition of the cutoff distance in pair style command

---
 doc/src/body.txt                         | 38 +++++++++++++++++++-
 doc/src/pair_body_rounded_polygon.txt    | 45 +++++++++++++-----------
 doc/src/pair_body_rounded_polyhedron.txt | 18 ++++------
 3 files changed, 68 insertions(+), 33 deletions(-)

diff --git a/doc/src/body.txt b/doc/src/body.txt
index be5b3d4edf..85095f7fb6 100644
--- a/doc/src/body.txt
+++ b/doc/src/body.txt
@@ -238,7 +238,7 @@ For example, the following information would specify a square particle
 whose edge length is sqrt(2) and rounded diameter is 1.0.  The
 orientation of the square is aligned with the xy coordinate axes which
 is consistent with the 6 moments of inertia: ixx iyy izz ixy ixz iyz =
-1 1 4 0 0 0.
+1 1 4 0 0 0. Note that only Izz matters in 2D simulations.
 
 3 1 27
 4
@@ -253,6 +253,24 @@ is consistent with the 6 moments of inertia: ixx iyy izz ixy ixz iyz =
 3 0
 1.0 :pre
 
+A rod in 2D, whose length is 4.0, mass 1.0, rounded at two ends
+by circles of diameter 0.5, is specified as follows:
+
+1 1 13
+2
+1 1 1.33333 0 0 0
+-2 0 0
+2 0 0
+0.5 :pre
+
+A disk, whose diameter is 3.0, mass 1.0, is specified as follows:
+
+1 1 10
+1
+1 1 4.5 0 0 0
+0 0 0
+3.0 :pre
+
 The "pair_style body/rounded/polygon"_pair_body_rounded_polygon.html
 command can be used with this body style to compute body/body
 interactions.  The "fix wall/body/polygon"_fix_wall_body_polygon.html
@@ -377,6 +395,24 @@ iyz = 0.667 0.667 0.667 0 0 0.
 3 0 4 7
 0.5 :pre
 
+A rod in 3D, whose length is 4.0, mass 1.0 and rounded at two ends
+by circles of diameter 0.5, is specified as follows:
+
+1 1 13
+2
+0 1.33333 1.33333 0 0 0
+-2 0 0
+2 0 0
+0.5 :pre
+
+A sphere whose diameter is 3.0 and mass 1.0, is specified as follows:
+
+1 1 10
+1
+0.9 0.9 0.9 0 0 0
+0 0 0
+3.0 :pre
+
 The "pair_style
 body/rounded/polhedron"_pair_body_rounded_polyhedron.html command can
 be used with this body style to compute body/body interactions.  The
diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt
index 588a7d6ff9..b4135a4065 100644
--- a/doc/src/pair_body_rounded_polygon.txt
+++ b/doc/src/pair_body_rounded_polygon.txt
@@ -29,9 +29,10 @@ 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.  See "Section 6.14"_Section_howto.html#howto_14 of the
+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 particles.
+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
@@ -50,14 +51,8 @@ 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 should
-be large enough to encompass the center-to-center distance between two
-particles (at any orientation) which would produce an overlap of the
-two surfaces.  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.
+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).
 
 The forces between vertex-vertex, vertex-edge, and edge-edge overlaps
 are given by:
@@ -66,17 +61,6 @@ are given by:
 
 :c,image(JPG/pair_body_rounded.jpg)
 
-In "Fraige"_#Fraige, the tangential friction force between two
-particles that are in contact is modeled differently prior to gross
-sliding (i.e. static friction) and during gross-sliding (kinetic
-friction).  The latter takes place when the tangential deformation
-exceeds the Coulomb frictional limit.  In the current implementation,
-however, we do not take into account frictional history, i.e. we do
-not keep track of how many time steps the two particles have been in
-contact nor calculate the tangential deformation.  Instead, we assume
-that gross sliding takes place as soon as two particles are in
-contact.
-
 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 +
@@ -89,6 +73,25 @@ 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?
 
+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
+sliding (i.e. static friction) and during gross-sliding (kinetic
+friction).  The latter takes place when the tangential deformation
+exceeds the Coulomb frictional limit.  In the current implementation,
+however, we do not take into account frictional history, i.e. we do
+not keep track of how many time steps the two particles have been in
+contact nor calculate the tangential deformation.  Instead, we assume
+that gross sliding takes place as soon as two particles are in
+contact.
+
+
 The following coefficients must be defined for each pair of atom types
 via the "pair_coeff"_pair_coeff.html command as in the examples above,
 or in the data file read by the "read_data"_read_data.html command:
diff --git a/doc/src/pair_body_rounded_polyhedron.txt b/doc/src/pair_body_rounded_polyhedron.txt
index 621254bd72..3f0a2403d0 100644
--- a/doc/src/pair_body_rounded_polyhedron.txt
+++ b/doc/src/pair_body_rounded_polyhedron.txt
@@ -29,9 +29,10 @@ 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.  See "Section 6.14"_Section_howto.html#howto_14 of
+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 particles.
+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
@@ -47,7 +48,7 @@ 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.
 
-This pairwise interaction between rounded polyhedra is described in
+This pairwise interaction between the 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
@@ -57,6 +58,7 @@ 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
@@ -64,14 +66,8 @@ 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 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.
+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).
 
 The forces between vertex-vertex, vertex-edge, vertex-face, edge-edge,
 and edge-face overlaps are given by:
-- 
GitLab


From de69e2455102bbeffbadfa7a3a4192036aa72d6d Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Tue, 17 Jul 2018 11:05:32 -0500
Subject: [PATCH 065/243] Added replies to Steve's questions

---
 doc/src/pair_body_rounded_polygon.txt    |  8 +++++---
 doc/src/pair_body_rounded_polyhedron.txt | 10 +++++++---
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt
index b4135a4065..ea77fa9247 100644
--- a/doc/src/pair_body_rounded_polygon.txt
+++ b/doc/src/pair_body_rounded_polygon.txt
@@ -71,7 +71,8 @@ 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?
+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).
@@ -100,8 +101,9 @@ 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 distance, for r < 0 and 0 < r < rc
-respectively.  TRUNG: is this sentence correct?
+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)
diff --git a/doc/src/pair_body_rounded_polyhedron.txt b/doc/src/pair_body_rounded_polyhedron.txt
index 3f0a2403d0..cb4ec00917 100644
--- a/doc/src/pair_body_rounded_polyhedron.txt
+++ b/doc/src/pair_body_rounded_polyhedron.txt
@@ -46,7 +46,10 @@ 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.
+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).
 
 This pairwise interaction between the rounded polyhedra is described in
 "Wang"_#Wang, where a polyhedron does not have sharp corners and
@@ -94,8 +97,9 @@ 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 distance, for r < 0 and 0 < r < rc
-respectively.  TRUNG: is this sentence correct?
+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)
 
 [Mixing, shift, table, tail correction, restart, rRESPA info]:
 
-- 
GitLab


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 066/243] 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


From f9c7fa973b29f17bacc2d5dfd7686f08fd529f8d Mon Sep 17 00:00:00 2001
From: Tim Mattox <timothy.mattox@engilitycorp.com>
Date: Wed, 18 Jul 2018 10:41:57 -0500
Subject: [PATCH 067/243] USER-DPD: propagate a minor performance bugfix
 throughout the DPDE code

The fix_shardlow_kokkos.cpp code had already factored out a redundant
sqrt() calculation in the innermost loop of ssa_update_dpde().  This
changeset propagates an equivilent optimization to:
  fix_shardlow.cpp
  pair_dpd_fdt_energy.cpp
  pair_dpd_fdt_energy_kokkos.cpp
The alpha_ij variable was really just an [itype][jtype] lookup parameter,
replacing a sqrt() and two multiplies per interacting particle pair
by a cached memory read.  Even if there isn't much time savings, the
code is now consistent across the various versions.
---
 src/KOKKOS/fix_shardlow_kokkos.cpp        |  3 +--
 src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp |  3 ++-
 src/KOKKOS/pair_dpd_fdt_energy_kokkos.h   |  6 +++---
 src/USER-DPD/fix_shardlow.cpp             |  6 +++---
 src/USER-DPD/pair_dpd_fdt_energy.cpp      | 10 ++++++++--
 src/USER-DPD/pair_dpd_fdt_energy.h        |  2 +-
 6 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp
index 70055bf8c9..99e51ebe38 100644
--- a/src/KOKKOS/fix_shardlow_kokkos.cpp
+++ b/src/KOKKOS/fix_shardlow_kokkos.cpp
@@ -157,7 +157,6 @@ void FixShardlowKokkos<DeviceType>::init()
   k_pairDPDE->k_cutsq.template sync<DeviceType>();
   d_cutsq = k_pairDPDE->k_cutsq.template view<DeviceType>();
 
-  const double boltz2 = 2.0*force->boltz;
   for (int i = 1; i <= ntypes; i++) {
     for (int j = i; j <= ntypes; j++) {
       F_FLOAT cutone = k_pairDPDE->cut[i][j];
@@ -165,7 +164,7 @@ void FixShardlowKokkos<DeviceType>::init()
       else k_params.h_view(i,j).cutinv = FLT_MAX;
       k_params.h_view(i,j).halfsigma = 0.5*k_pairDPDE->sigma[i][j];
       k_params.h_view(i,j).kappa = k_pairDPDE->kappa[i][j];
-      k_params.h_view(i,j).alpha = sqrt(boltz2*k_pairDPDE->kappa[i][j]);
+      k_params.h_view(i,j).alpha = k_pairDPDE->alpha[i][j];
 
       k_params.h_view(j,i) = k_params.h_view(i,j);
 
diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp
index 7ff536f8dd..038d95394a 100644
--- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp
+++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp
@@ -591,7 +591,7 @@ void PairDPDfdtEnergyKokkos<DeviceType>::operator()(TagPairDPDfdtEnergyComputeNo
       // Compute uCond
       randnum = rand_gen.normal();
       kappa_ij = STACKPARAMS?m_params[itype][jtype].kappa:params(itype,jtype).kappa;
-      alpha_ij = sqrt(2.0*boltz*kappa_ij);
+      alpha_ij = STACKPARAMS?m_params[itype][jtype].alpha:params(itype,jtype).alpha;
       randPair = alpha_ij*wr*randnum*dtinvsqrt;
 
       uTmp = kappa_ij*(1.0/dpdTheta[i] - 1.0/dpdTheta[j])*wd;
@@ -676,6 +676,7 @@ double PairDPDfdtEnergyKokkos<DeviceType>::init_one(int i, int j)
   k_params.h_view(i,j).a0 = a0[i][j];
   k_params.h_view(i,j).sigma = sigma[i][j];
   k_params.h_view(i,j).kappa = kappa[i][j];
+  k_params.h_view(i,j).alpha = alpha[i][j];
   k_params.h_view(j,i) = k_params.h_view(i,j);
   if(i<MAX_TYPES_STACKPARAMS+1 && j<MAX_TYPES_STACKPARAMS+1) {
     m_params[i][j] = m_params[j][i] = k_params.h_view(i,j);
diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h
index 424779f839..12ffb668e2 100644
--- a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h
+++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h
@@ -88,10 +88,10 @@ class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy {
 
   struct params_dpd {
     KOKKOS_INLINE_FUNCTION
-    params_dpd(){cut=0;a0=0;sigma=0;kappa=0;};
+    params_dpd(){cut=0;a0=0;sigma=0;kappa=0;alpha=0;};
     KOKKOS_INLINE_FUNCTION
-    params_dpd(int i){cut=0;a0=0;sigma=0;kappa=0;};
-    F_FLOAT cut,a0,sigma,kappa;
+    params_dpd(int i){cut=0;a0=0;sigma=0;kappa=0;alpha=0;};
+    F_FLOAT cut,a0,sigma,kappa,alpha;
   };
 
   DAT::tdual_efloat_1d k_duCond,k_duMech;
diff --git a/src/USER-DPD/fix_shardlow.cpp b/src/USER-DPD/fix_shardlow.cpp
index 06185dee7e..7fe865c8e6 100644
--- a/src/USER-DPD/fix_shardlow.cpp
+++ b/src/USER-DPD/fix_shardlow.cpp
@@ -354,9 +354,8 @@ void FixShardlow::ssa_update_dpde(
   double *uMech = atom->uMech;
   double *dpdTheta = atom->dpdTheta;
 
-  double *cut_i, *cut2_i, *sigma_i, *kappa_i;
+  double *cut_i, *cut2_i, *sigma_i, *kappa_i, *alpha_i;
   double theta_ij_inv, theta_i_inv;
-  const double boltz2 = 2.0*force->boltz;
   const double boltz_inv = 1.0/force->boltz;
   const double ftm2v = force->ftm2v;
 
@@ -389,6 +388,7 @@ while (ct-- > 0) {
   cut_i  = pairDPDE->cut[itype];
   sigma_i = pairDPDE->sigma[itype];
   kappa_i = pairDPDE->kappa[itype];
+  alpha_i = pairDPDE->alpha[itype];
   theta_i_inv = 1.0/dpdTheta[i];
   const double mass_i = (rmass) ? rmass[i] : mass[itype];
   const double massinv_i = 1.0 / mass_i;
@@ -448,7 +448,7 @@ while (ct-- > 0) {
 
       // Compute uCond
       double kappa_ij = kappa_i[jtype];
-      double alpha_ij = sqrt(boltz2*kappa_ij);
+      double alpha_ij = alpha_i[jtype];
       double del_uCond = alpha_ij*wr*dtsqrt * es_normal(RNGstate);
 
       del_uCond += kappa_ij*(theta_i_inv - theta_j_inv)*wdt;
diff --git a/src/USER-DPD/pair_dpd_fdt_energy.cpp b/src/USER-DPD/pair_dpd_fdt_energy.cpp
index d1f3cceed4..05dc52eac7 100644
--- a/src/USER-DPD/pair_dpd_fdt_energy.cpp
+++ b/src/USER-DPD/pair_dpd_fdt_energy.cpp
@@ -65,6 +65,7 @@ PairDPDfdtEnergy::~PairDPDfdtEnergy()
     memory->destroy(a0);
     memory->destroy(sigma);
     memory->destroy(kappa);
+    memory->destroy(alpha);
     memory->destroy(duCond);
     memory->destroy(duMech);
   }
@@ -269,7 +270,7 @@ void PairDPDfdtEnergy::compute(int eflag, int vflag)
           // Compute uCond
           randnum = random->gaussian();
           kappa_ij = kappa[itype][jtype];
-          alpha_ij = sqrt(2.0*force->boltz*kappa_ij);
+          alpha_ij = alpha[itype][jtype];
           randPair = alpha_ij*wr*randnum*dtinvsqrt;
 
           uTmp = kappa_ij*(1.0/dpdTheta[i] - 1.0/dpdTheta[j])*wd;
@@ -322,6 +323,7 @@ void PairDPDfdtEnergy::allocate()
   memory->create(a0,n+1,n+1,"pair:a0");
   memory->create(sigma,n+1,n+1,"pair:sigma");
   memory->create(kappa,n+1,n+1,"pair:kappa");
+  memory->create(alpha,n+1,n+1,"pair:alpha");
   if (!splitFDT_flag) {
     memory->create(duCond,nlocal+nghost+1,"pair:duCond");
     memory->create(duMech,nlocal+nghost+1,"pair:duMech");
@@ -374,11 +376,12 @@ void PairDPDfdtEnergy::coeff(int narg, char **arg)
   double a0_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
   double cut_one = cut_global;
-  double kappa_one;
+  double kappa_one, alpha_one;
 
   a0_is_zero = (a0_one == 0.0); // Typical use with SSA is to set a0 to zero
 
   kappa_one = force->numeric(FLERR,arg[4]);
+  alpha_one = sqrt(2.0*force->boltz*kappa_one);
   if (narg == 6) cut_one = force->numeric(FLERR,arg[5]);
 
   int count = 0;
@@ -387,6 +390,7 @@ void PairDPDfdtEnergy::coeff(int narg, char **arg)
       a0[i][j] = a0_one;
       sigma[i][j] = sigma_one;
       kappa[i][j] = kappa_one;
+      alpha[i][j] = alpha_one;
       cut[i][j] = cut_one;
       setflag[i][j] = 1;
       count++;
@@ -435,6 +439,7 @@ double PairDPDfdtEnergy::init_one(int i, int j)
   a0[j][i] = a0[i][j];
   sigma[j][i] = sigma[i][j];
   kappa[j][i] = kappa[i][j];
+  alpha[j][i] = alpha[i][j];
 
   return cut[i][j];
 }
@@ -488,6 +493,7 @@ void PairDPDfdtEnergy::read_restart(FILE *fp)
         MPI_Bcast(&sigma[i][j],1,MPI_DOUBLE,0,world);
         MPI_Bcast(&kappa[i][j],1,MPI_DOUBLE,0,world);
         MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world);
+        alpha[i][j] = sqrt(2.0*force->boltz*kappa[i][j]);
         a0_is_zero = a0_is_zero && (a0[i][j] == 0.0); // verify the zero assumption
       }
     }
diff --git a/src/USER-DPD/pair_dpd_fdt_energy.h b/src/USER-DPD/pair_dpd_fdt_energy.h
index dce39f83f0..e21b48f7bd 100644
--- a/src/USER-DPD/pair_dpd_fdt_energy.h
+++ b/src/USER-DPD/pair_dpd_fdt_energy.h
@@ -43,7 +43,7 @@ class PairDPDfdtEnergy : public Pair {
 
   double **cut;
   double **a0;
-  double **sigma,**kappa;
+  double **sigma,**kappa,**alpha;
   double *duCond,*duMech;
 
   int seed;
-- 
GitLab


From dfd40c1b70c04ac3d3a8c24c4a2e0e399aa5168b Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 18 Jul 2018 10:48:29 -0600
Subject: [PATCH 068/243] more doc tweaks

---
 doc/src/body.txt                         |  8 ++---
 doc/src/lammps.book                      |  6 ++--
 doc/src/pair_body_rounded_polygon.txt    | 10 +++---
 doc/src/pair_body_rounded_polyhedron.txt | 39 ++++++++++++------------
 4 files changed, 33 insertions(+), 30 deletions(-)

diff --git a/doc/src/body.txt b/doc/src/body.txt
index cef40cc643..e7baf626f5 100644
--- a/doc/src/body.txt
+++ b/doc/src/body.txt
@@ -186,7 +186,7 @@ squares with rounded circles at the vertices.  Special cases for N = 1
 (circle) and N = 2 (rod with rounded ends) can also be specified.
 
 One use of this body style is for 2d discrete element models, as
-described in "Fraige"_#Fraige.
+described in "Fraige"_#body-Fraige.
 
 Similar to body style {nparticle}, the atom_style body command for
 this body style takes two additional arguments:
@@ -292,7 +292,7 @@ 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.
+"Wang"_#body-Wang.
 
 Similar to body style {rounded/polygon}, the atom_style body command
 for this body style takes two additional arguments:
@@ -447,10 +447,10 @@ determined by the {bflag1} parameter for the {body} keyword.  The
 
 :line
 
-:link(Fraige)
+:link(body-Fraige)
 [(Fraige)] F. Y. Fraige, P. A. Langston, A. J. Matchett, J. Dodds,
 Particuology, 6, 455 (2008).
 
-:link(Wang)
+:link(body-Wang)
 [(Wang)] J. Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular
 Matter, 13, 1 (2011).
diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index 0764c593f7..9c0216412b 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -280,7 +280,8 @@ fix_vector.html
 fix_viscosity.html
 fix_viscous.html
 fix_wall.html
-fix_wall_ees.html
+fix_wall_body_polygon.html
+fix_wall_body_polyhedron.html
 fix_wall_gran.html
 fix_wall_gran_region.html
 fix_wall_piston.html
@@ -419,8 +420,9 @@ pair_agni.html
 pair_airebo.html
 pair_awpmd.html
 pair_beck.html
-pair_body.html
+pair_body_nparticle.html
 pair_body_rounded_polygon.html
+pair_body_rounded_polyhedron.html
 pair_bop.html
 pair_born.html
 pair_brownian.html
diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt
index caaa0746a1..9daeb08e9a 100644
--- a/doc/src/pair_body_rounded_polygon.txt
+++ b/doc/src/pair_body_rounded_polygon.txt
@@ -35,9 +35,9 @@ body/body interactions which can include body particles modeled as
 rounded/polygon particles.
 
 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 between
+"Fraige"_#pair-Fraige, where a polygon does not have sharp corners,
+but is rounded at its vertices by circles centered on each vertex with
+a specified diameter.  The edges of the polygon are defined between
 pairs of adjacent vertices.  The circle diameter for each polygon is
 specified in the data file read by the "read data"_read_data.html
 command.  This is a 2d discrete element model (DEM) which allows for
@@ -79,7 +79,7 @@ Note that F_n and F_t are functions of the surface separation \delta_n
 + 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
+In "Fraige"_#pair-Fraige, the tangential friction force between two
 particles that are in contact is modeled differently prior to gross
 sliding (i.e. static friction) and during gross-sliding (kinetic
 friction).  The latter takes place when the tangential deformation
@@ -129,6 +129,6 @@ for pair interactions.
 
 [Default:] none
 
-:link(Fraige)
+:link(pair-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 4a58e0119b..dc559feaaf 100644
--- a/doc/src/pair_body_rounded_polyhedron.txt
+++ b/doc/src/pair_body_rounded_polyhedron.txt
@@ -34,15 +34,15 @@ body/body interactions which can include body particles modeled as
 "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
-edges, but is rounded at its vertices and edges by spheres centered on
-each vertex with a specified diameter.  The edges if the polyhedron
-are defined between pairs of adjacent vertices.  Its faces are defined
-by a loop of edges.  The sphere diameter for each polygon is specified
-in the data file read by the "read data"_read_data.html command.  This
-is a discrete element model (DEM) which allows for multiple contact
-points.
+This pairwise interaction between the rounded polyhedra is described
+in "Wang"_#pair-Wang, where a polyhedron does not have sharp corners
+and edges, but is rounded at its vertices and edges by spheres
+centered on each vertex with a specified diameter.  The edges if the
+polyhedron are defined between pairs of adjacent vertices.  Its faces
+are defined by a loop of edges.  The sphere diameter for each polygon
+is specified in the data file read by the "read data"_read_data.html
+command.  This is a discrete element model (DEM) which allows for
+multiple contact points.
 
 Note that when two particles interact, the effective surface of each
 polyhedron particle is displaced outward from each of its vertices,
@@ -74,15 +74,16 @@ and edge-face overlaps are given by:
 
 :c,image(JPG/pair_body_rounded.jpg)
 
-In "Wang"_#Wang, the tangential friction force between two particles
-that are in contact is modeled differently prior to gross sliding
-(i.e. static friction) and during gross-sliding (kinetic friction).
-The latter takes place when the tangential deformation exceeds the
-Coulomb frictional limit.  In the current implementation, however, we
-do not take into account frictional history, i.e. we do not keep track
-of how many time steps the two particles have been in contact nor
-calculate the tangential deformation.  Instead, we assume that gross
-sliding takes place as soon as two particles are in contact.
+In "Wang"_#pair-Wang, the tangential friction force between two
+particles that are in contact is modeled differently prior to gross
+sliding (i.e. static friction) and during gross-sliding (kinetic
+friction).  The latter takes place when the tangential deformation
+exceeds the Coulomb frictional limit.  In the current implementation,
+however, we do not take into account frictional history, i.e. we do
+not keep track of how many time steps the two particles have been in
+contact nor calculate the tangential deformation.  Instead, we assume
+that gross sliding takes place as soon as two particles are in
+contact.
 
 The following coefficients must be defined for each pair of atom types
 via the "pair_coeff"_pair_coeff.html command as in the examples above,
@@ -123,7 +124,7 @@ for pair interactions.
 
 [Default:] none
 
-:link(Wang)
+:link(pair-Wang)
 [(Wang)] J. Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular
 Matter, 13, 1 (2011).
 
-- 
GitLab


From 7d4de932b6945045779ae4e2a867b4e99f898d19 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Wed, 18 Jul 2018 13:13:57 -0400
Subject: [PATCH 069/243] reinstate reference to fix wall/ees in lammps.book

---
 doc/src/lammps.book | 1 +
 1 file changed, 1 insertion(+)

diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index 9c0216412b..56284812f8 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -282,6 +282,7 @@ fix_viscous.html
 fix_wall.html
 fix_wall_body_polygon.html
 fix_wall_body_polyhedron.html
+fix_wall_ees.html
 fix_wall_gran.html
 fix_wall_gran_region.html
 fix_wall_piston.html
-- 
GitLab


From 2eb8d779e8bc657a8767c4cad7ab72f20f65955f Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 18 Jul 2018 18:45:40 -0400
Subject: [PATCH 070/243] Fixes a memory leak when using OpenCL

The GPU package uses OpenCL events for measuring time. These have to be
released to free up memory. I removed the clReleaseEvent() calls in the
clear() method because in some cases they don't exist yet and I couldn't
find a way to check for a valid event (clRetainEvent didn't work). This
at least fixes the massive leak during simulations.

See issue #1006
---
 lib/gpu/geryon/ocl_timer.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/gpu/geryon/ocl_timer.h b/lib/gpu/geryon/ocl_timer.h
index 66b79dcab1..1f56aeb364 100644
--- a/lib/gpu/geryon/ocl_timer.h
+++ b/lib/gpu/geryon/ocl_timer.h
@@ -49,8 +49,6 @@ class UCL_Timer {
   inline void clear() {
     if (_initialized) {
       CL_DESTRUCT_CALL(clReleaseCommandQueue(_cq));
-      clReleaseEvent(start_event);
-      clReleaseEvent(stop_event);
       _initialized=false;
       _total_time=0.0;
     }
@@ -107,6 +105,8 @@ class UCL_Timer {
     CL_SAFE_CALL(clGetEventProfilingInfo(start_event,
                                          CL_PROFILING_COMMAND_END,
                                          sizeof(cl_ulong), &tstart, NULL));
+    clReleaseEvent(start_event);
+    clReleaseEvent(stop_event);
     return (tend-tstart)*t_factor;
   }
 
-- 
GitLab


From de8176b4fc0556d758d7c49bea43f92c5006f234 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Fri, 20 Jul 2018 14:41:54 -0400
Subject: [PATCH 071/243] various minor OpenCL related fixes and improvements
 to the GPU package

- document previously undocumented OpenCL tune settings
- implement OpenCL platform selection through prefixing the device type with the platform id separated by a colon
- allow passing custom tune parameters though postfixing the device type with the 13 tuneable parameters separated by commas
- remove an extra clear() that would delete device properties structs an cause LAMMPS to output garbage strings
---
 doc/src/package.txt         | 49 +++++++++++++++++++++++++++++++------
 lib/gpu/geryon/ocl_device.h | 16 ++++++------
 lib/gpu/lal_device.cpp      | 26 ++++++++++++++++----
 lib/gpu/lal_device.h        |  2 +-
 src/GPU/gpu_extra.h         |  3 +++
 5 files changed, 74 insertions(+), 22 deletions(-)

diff --git a/doc/src/package.txt b/doc/src/package.txt
index 5c698934e8..5fd42f67d3 100644
--- a/doc/src/package.txt
+++ b/doc/src/package.txt
@@ -33,8 +33,10 @@ args = arguments specific to the style :l
         last = ID of last GPU to be used on each node
       {tpa} value = Nthreads
         Nthreads = # of GPU threads used per atom
-      {device} value = device_type
-        device_type = {kepler} or {fermi} or {cypress} or {generic}
+      {device} value = device_type or platform_id:device_type or platform_id:custom,val1,val2,val3,..,val13
+        platform_id = numerical OpenCL platform id (default: -1)
+        device_type = {kepler} or {fermi} or {cypress} or {intel} or {phi} or {generic} or {custom}
+        val1,val2,... = custom OpenCL tune parameters (see below for details)
       {blocksize} value = size
         size = thread block size for pair force computation
   {intel} args = NPhi keyword value ...
@@ -96,6 +98,9 @@ args = arguments specific to the style :l
 package gpu 1
 package gpu 1 split 0.75
 package gpu 2 split -1.0
+package gpu 1 device kepler
+package gpu 1 device 2:generic
+package gpu 1 device custom,32,4,8,256,11,128,256,128,32,64,8,128,128
 package kokkos neigh half comm device
 package omp 0 neigh no
 package omp 4
@@ -244,12 +249,40 @@ the value can improve performance. The number of threads per atom must
 be a power of 2 and currently cannot be greater than 32.
 
 The {device} keyword can be used to tune parameters optimized for a
-specific accelerator, when using OpenCL.  For CUDA, the {device}
-keyword is ignored.  Currently, the device type is limited to NVIDIA
-Kepler, NVIDIA Fermi, AMD Cypress, or a generic device.  More devices
-may be added later.  The default device type can be specified when
-building LAMMPS with the GPU library, via settings in the
-lib/gpu/Makefile that is used.
+specific accelerator and platform when using OpenCL. OpenCL supports
+the concept of a [platform], which represents one or more devices that
+share the same driver (e.g. there would be a different platform for
+GPUs from different vendors or for CPU based accelerator support).
+In LAMMPS only one platform can be active at a time and by default
+the first platform with an accelerator is selected. This is equivalent
+to using a platform ID of -1. The platform ID is a number corresponding
+to the output of the ocl_get_devices tool. The platform ID is passed
+to the GPU library, by prefixing the {device} keyword with that number
+separated by a colon. For CUDA, the {device} keyword is ignored.
+Currently, the device tuning support is limited to NVIDIA Kepler, NVIDIA
+Fermi, AMD Cypress, Intel x86_64 CPU, Intel Xeon Phi, or a generic device.
+More devices may be added later.  The default device type can be
+specified when building LAMMPS with the GPU library, via setting a
+variable in the lib/gpu/Makefile that is used.
+
+In addition, a device type {custom} is available, which is followed by
+13 comma separated numbers, which allows to set those tweakable parameters
+from the package command. It can be combined with the (colon separated)
+platform id. The individual settings are:
+
+MEM_THREADS
+THREADS_PER_ATOM
+THREADS_PER_CHARGE
+BLOCK_PAIR
+MAX_SHARED_TYPES
+BLOCK_NBOR_BUILD
+BLOCK_BIO_PAIR
+BLOCK_ELLIPSE
+WARP_SIZE
+PPPM_BLOCK_1D
+BLOCK_CELL_2D
+BLOCK_CELL_ID
+MAX_BIO_SHARED_TYPES :ul
 
 The {blocksize} keyword allows you to tweak the number of threads used
 per thread block. This number should be a multiple of 32 (for GPUs)
diff --git a/lib/gpu/geryon/ocl_device.h b/lib/gpu/geryon/ocl_device.h
index 2b2367545e..14455e38a5 100644
--- a/lib/gpu/geryon/ocl_device.h
+++ b/lib/gpu/geryon/ocl_device.h
@@ -165,8 +165,8 @@ class UCL_Device {
   /// Get the current OpenCL device name
   inline std::string name() { return name(_device); }
   /// Get the OpenCL device name
-  inline std::string name(const int i)
-    { return std::string(_properties[i].name); }
+  inline std::string name(const int i) {
+    return std::string(_properties[i].name); }
 
   /// Get a string telling the type of the current device
   inline std::string device_type_name() { return device_type_name(_device); }
@@ -281,7 +281,7 @@ class UCL_Device {
   inline cl_device_id & cl_device() { return _cl_device; }
 
   /// Select the platform that has accelerators
-  inline void set_platform_accelerator(int pid=-1);
+  inline int set_platform_accelerator(int pid=-1);
 
  private:
   int _num_platforms;          // Number of platforms
@@ -324,6 +324,7 @@ UCL_Device::~UCL_Device() {
 
 void UCL_Device::clear() {
   _properties.clear();
+  _cl_devices.clear();
   if (_device>-1) {
     for (size_t i=0; i<_cq.size(); i++) {
       CL_DESTRUCT_CALL(clReleaseCommandQueue(_cq.back()));
@@ -520,8 +521,6 @@ int UCL_Device::device_type(const int i) {
 
 // Set the CUDA device to the specified device number
 int UCL_Device::set(int num) {
-  clear();
-
   cl_device_id *device_list = new cl_device_id[_num_devices];
   cl_uint n;
   CL_SAFE_CALL(clGetDeviceIDs(_cl_platform,CL_DEVICE_TYPE_ALL,_num_devices,
@@ -612,7 +611,7 @@ void UCL_Device::print_all(std::ostream &out) {
 
 // Select the platform that is associated with accelerators
 // if pid < 0, select the first platform
-void UCL_Device::set_platform_accelerator(int pid) {
+int UCL_Device::set_platform_accelerator(int pid) {
   if (pid < 0) {
     int found = 0;
     for (int n=0; n<_num_platforms; n++) {
@@ -625,10 +624,11 @@ void UCL_Device::set_platform_accelerator(int pid) {
           break;
         }
       }
-      if (found) break;
+      if (found) return UCL_SUCCESS;
     }
+    return UCL_ERROR;
   } else {
-    set_platform(pid);
+    return set_platform(pid);
   }
 }
 
diff --git a/lib/gpu/lal_device.cpp b/lib/gpu/lal_device.cpp
index 0ea128a5b3..7f54432a74 100644
--- a/lib/gpu/lal_device.cpp
+++ b/lib/gpu/lal_device.cpp
@@ -34,8 +34,8 @@ using namespace LAMMPS_AL;
 
 template <class numtyp, class acctyp>
 DeviceT::Device() : _init_count(0), _device_init(false),
-                                  _gpu_mode(GPU_FORCE), _first_device(0),
-                                  _last_device(0), _compiled(false) {
+                    _gpu_mode(GPU_FORCE), _first_device(0),
+                    _last_device(0), _platform_id(-1), _compiled(false) {
 }
 
 template <class numtyp, class acctyp>
@@ -67,6 +67,17 @@ int DeviceT::init_device(MPI_Comm world, MPI_Comm replica, const int first_gpu,
   _particle_split=p_split;
   _cell_size=cell_size;
   _block_pair=block_pair;
+  // support selecting platform though "package device" keyword.
+  // "0:generic" will select platform 0 and tune for generic device
+  // "1:fermi" will select platform 1 and tune for Nvidia Fermi gpu
+  if (ocl_vendor) {
+    char *sep = NULL;
+    if ((sep = strstr(ocl_vendor,":"))) {
+      *sep = '\0';
+      _platform_id = atoi(ocl_vendor);
+      ocl_vendor = sep+1;
+    }
+  }
 
   // Get the rank/size within the world
   MPI_Comm_rank(_comm_world,&_world_me);
@@ -135,6 +146,9 @@ int DeviceT::init_device(MPI_Comm world, MPI_Comm replica, const int first_gpu,
     return -7;
   #endif
 
+  if (gpu->set_platform_accelerator(_platform_id)!=UCL_SUCCESS)
+    return -12;
+
   if (gpu->set(my_gpu)!=UCL_SUCCESS)
     return -6;
 
@@ -191,13 +205,15 @@ int DeviceT::set_ocl_params(char *ocl_vendor) {
     _ocl_vendor_string="-DUSE_OPENCL";
     int token_count=0;
     std::string params[13];
-    char *pch = strtok(ocl_vendor,"\" ");
+    char *pch = strtok(ocl_vendor,",");
+    pch = strtok(NULL,",");
+    if (pch == NULL) return -11;
     while (pch != NULL) {
       if (token_count==13)
         return -11;
       params[token_count]=pch;
       token_count++;
-      pch = strtok(NULL,"\" ");
+      pch = strtok(NULL,",");
     }
     _ocl_vendor_string+=" -DMEM_THREADS="+params[0]+
                         " -DTHREADS_PER_ATOM="+params[1]+
@@ -656,7 +672,7 @@ int DeviceT::compile_kernels() {
   dev_program=new UCL_Program(*gpu);
   int success=dev_program->load_string(device,compile_string().c_str());
   if (success!=UCL_SUCCESS)
-    return -4;
+    return -6;
   k_zero.set_function(*dev_program,"kernel_zero");
   k_info.set_function(*dev_program,"kernel_info");
   _compiled=true;
diff --git a/lib/gpu/lal_device.h b/lib/gpu/lal_device.h
index 95e9f2a430..695b0a62f9 100644
--- a/lib/gpu/lal_device.h
+++ b/lib/gpu/lal_device.h
@@ -292,7 +292,7 @@ class Device {
   MPI_Comm _comm_world, _comm_replica, _comm_gpu;
   int _procs_per_gpu, _gpu_rank, _world_me, _world_size, _replica_me,
       _replica_size;
-  int _gpu_mode, _first_device, _last_device, _nthreads;
+  int _gpu_mode, _first_device, _last_device, _platform_id, _nthreads;
   double _particle_split;
   double _cpu_full;
   double _ptx_arch;
diff --git a/src/GPU/gpu_extra.h b/src/GPU/gpu_extra.h
index 56a4f15f1b..111d13c563 100644
--- a/src/GPU/gpu_extra.h
+++ b/src/GPU/gpu_extra.h
@@ -58,6 +58,9 @@ namespace GPU_EXTRA {
       else if (all_success == -11)
         error->all(FLERR,
                    "Invalid custom OpenCL parameter string.");
+      else if (all_success == -12)
+        error->all(FLERR,
+                   "Invalid OpenCL platform ID.");
       else
         error->all(FLERR,"Unknown error in GPU library");
     }
-- 
GitLab


From 223de57401ff2547715e24b44226eba5599946ed Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Sat, 21 Jul 2018 00:14:31 -0500
Subject: [PATCH 072/243] Added set_platform_accelerator() for nvd_device.h for
 OpenCL compatibility

---
 lib/gpu/geryon/nvd_device.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lib/gpu/geryon/nvd_device.h b/lib/gpu/geryon/nvd_device.h
index 2d2a751f85..129bdbbdef 100644
--- a/lib/gpu/geryon/nvd_device.h
+++ b/lib/gpu/geryon/nvd_device.h
@@ -260,6 +260,9 @@ class UCL_Device {
   /// List all devices along with all properties
   inline void print_all(std::ostream &out);
 
+  /// Select the platform that has accelerators (for compatibility with OpenCL)
+  inline int set_platform_accelerator(int pid=-1) { return UCL_SUCCESS; }
+
  private:
   int _device, _num_devices;
   std::vector<NVDProperties> _properties;
-- 
GitLab


From 01c27194d4de20ab3002091fe20d396495019e66 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Sat, 21 Jul 2018 00:18:30 -0500
Subject: [PATCH 073/243] Fixes for lal_neighbor.cpp for get_host() and for
 time_kernel

---
 lib/gpu/lal_neighbor.cpp | 4 ++--
 lib/gpu/lal_neighbor.h   | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/gpu/lal_neighbor.cpp b/lib/gpu/lal_neighbor.cpp
index 04e08c3e9c..d264a933a1 100644
--- a/lib/gpu/lal_neighbor.cpp
+++ b/lib/gpu/lal_neighbor.cpp
@@ -281,7 +281,7 @@ void Neighbor::get_host(const int inum, int *ilist, int *numj,
   }
   UCL_D_Vec<int> acc_view;
   acc_view.view_offset(inum,dev_nbor,inum*2);
-  ucl_copy(acc_view,host_acc,true);
+  ucl_copy(acc_view,host_acc,inum*2,true);
 
   UCL_H_Vec<int> host_view;
   host_view.alloc(_max_atoms,*dev,UCL_READ_WRITE);
@@ -364,7 +364,7 @@ void Neighbor::get_host3(const int inum, const int nlist, int *ilist, int *numj,
   }
   UCL_D_Vec<int> acc_view;
   acc_view.view_offset(inum,dev_nbor,inum*2);
-  ucl_copy(acc_view,host_acc,true);
+  ucl_copy(acc_view,host_acc,inum*2,true);
   time_nbor.stop();
 
   if (_use_packing==false) {
diff --git a/lib/gpu/lal_neighbor.h b/lib/gpu/lal_neighbor.h
index 05168834c6..01f7b02798 100644
--- a/lib/gpu/lal_neighbor.h
+++ b/lib/gpu/lal_neighbor.h
@@ -110,7 +110,7 @@ class Neighbor {
       }
       if (_time_device) {
         time_nbor.add_to_total();
-        time_kernel.add_to_total();
+        if (_use_packing==false) time_kernel.add_to_total();
         if (_gpu_nbor==2) {
           time_hybrid1.add_to_total();
           time_hybrid2.add_to_total();
-- 
GitLab


From 94da4be922532f15aa159b3fa60e95e81ac89874 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Sat, 21 Jul 2018 13:50:10 -0500
Subject: [PATCH 074/243] Fixed bugs for tersoff gpu styles for OpenCL builds

---
 lib/gpu/lal_tersoff.cpp     | 2 +-
 lib/gpu/lal_tersoff_mod.cpp | 2 +-
 lib/gpu/lal_tersoff_zbl.cpp | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/gpu/lal_tersoff.cpp b/lib/gpu/lal_tersoff.cpp
index a63d286d9c..af1e286520 100644
--- a/lib/gpu/lal_tersoff.cpp
+++ b/lib/gpu/lal_tersoff.cpp
@@ -272,7 +272,7 @@ void TersoffT::loop(const bool _eflag, const bool _vflag, const int evatom) {
                    &map, &elem2param, &_nelements, &_nparams, &_zetaij,
                    &this->nbor->dev_nbor, &this->_nbor_data->begin(),
                    &this->dev_short_nbor,
-                   &_eflag, &this->_ainum, &nbor_pitch, &this->_threads_per_atom);
+                   &eflag, &this->_ainum, &nbor_pitch, &this->_threads_per_atom);
 
   ainum=this->ans->inum();
   nbor_pitch=this->nbor->nbor_pitch();
diff --git a/lib/gpu/lal_tersoff_mod.cpp b/lib/gpu/lal_tersoff_mod.cpp
index c37c07f1a1..dc25fdadff 100644
--- a/lib/gpu/lal_tersoff_mod.cpp
+++ b/lib/gpu/lal_tersoff_mod.cpp
@@ -272,7 +272,7 @@ void TersoffMT::loop(const bool _eflag, const bool _vflag, const int evatom) {
                    &map, &elem2param, &_nelements, &_nparams, &_zetaij,
                    &this->nbor->dev_nbor, &this->_nbor_data->begin(),
                    &this->dev_short_nbor,
-                   &_eflag, &this->_ainum, &nbor_pitch, &this->_threads_per_atom);
+                   &eflag, &this->_ainum, &nbor_pitch, &this->_threads_per_atom);
 
   ainum=this->ans->inum();
   nbor_pitch=this->nbor->nbor_pitch();
diff --git a/lib/gpu/lal_tersoff_zbl.cpp b/lib/gpu/lal_tersoff_zbl.cpp
index 341f663030..7cd0d9e6b2 100644
--- a/lib/gpu/lal_tersoff_zbl.cpp
+++ b/lib/gpu/lal_tersoff_zbl.cpp
@@ -297,7 +297,7 @@ void TersoffZT::loop(const bool _eflag, const bool _vflag, const int evatom) {
                    &map, &elem2param, &_nelements, &_nparams, &_zetaij,
                    &this->nbor->dev_nbor, &this->_nbor_data->begin(),
                    &this->dev_short_nbor,
-                   &_eflag, &this->_ainum, &nbor_pitch, &this->_threads_per_atom);
+                   &eflag, &this->_ainum, &nbor_pitch, &this->_threads_per_atom);
 
   ainum=this->ans->inum();
   nbor_pitch=this->nbor->nbor_pitch();
-- 
GitLab


From d71e037c233fcd5e49bab5d71d472e9db1249e52 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Sun, 22 Jul 2018 11:27:14 -0500
Subject: [PATCH 075/243] Renamed dev_acc  to dev_ilist for better description
 and updated the 3-body styles accordingly; also fixed bugs with accessing
 dev_packed from the three_end kernel of tersoff/mod and tersoff/zbl gpu
 styles for OpenCL builds

---
 lib/gpu/lal_neighbor.cpp    | 11 ++++++-----
 lib/gpu/lal_neighbor.h      |  2 +-
 lib/gpu/lal_sw.cpp          |  4 ++--
 lib/gpu/lal_sw.cu           | 12 ++++++------
 lib/gpu/lal_tersoff.cpp     |  4 ++--
 lib/gpu/lal_tersoff.cu      | 12 ++++++------
 lib/gpu/lal_tersoff_mod.cpp |  4 ++--
 lib/gpu/lal_tersoff_mod.cu  | 22 +++++++++++-----------
 lib/gpu/lal_tersoff_zbl.cpp |  4 ++--
 lib/gpu/lal_tersoff_zbl.cu  | 22 +++++++++++-----------
 lib/gpu/lal_vashishta.cpp   |  4 ++--
 lib/gpu/lal_vashishta.cu    | 12 ++++++------
 12 files changed, 57 insertions(+), 56 deletions(-)

diff --git a/lib/gpu/lal_neighbor.cpp b/lib/gpu/lal_neighbor.cpp
index d264a933a1..c6fa1aa560 100644
--- a/lib/gpu/lal_neighbor.cpp
+++ b/lib/gpu/lal_neighbor.cpp
@@ -127,10 +127,11 @@ void Neighbor::alloc(bool &success) {
     dev_packed.clear();
     success=success && (dev_packed.alloc((_max_nbors+2)*_max_atoms,*dev,
                                          _packed_permissions)==UCL_SUCCESS);
-    dev_acc.clear();
-    success=success && (dev_acc.alloc(_max_atoms,*dev,
+    dev_ilist.clear();
+    success=success && (dev_ilist.alloc(_max_atoms,*dev,
                                       UCL_READ_WRITE)==UCL_SUCCESS);
-    _c_bytes+=dev_packed.row_bytes()+dev_acc.row_bytes();
+                                      dev_ilist.clear();
+    _c_bytes+=dev_packed.row_bytes()+dev_ilist.row_bytes();
   }
   if (_max_host>0) {
     nbor_host.clear();
@@ -197,7 +198,7 @@ void Neighbor::clear() {
 
     host_packed.clear();
     host_acc.clear();
-    dev_acc.clear();
+    dev_ilist.clear();
     dev_nbor.clear();
     nbor_host.clear();
     dev_packed.clear();
@@ -289,7 +290,7 @@ void Neighbor::get_host(const int inum, int *ilist, int *numj,
     int i=ilist[ii];
     host_view[i] = ii;
   }
-  ucl_copy(dev_acc,host_view,true);
+  ucl_copy(dev_ilist,host_view,true);
 
   time_nbor.stop();
 
diff --git a/lib/gpu/lal_neighbor.h b/lib/gpu/lal_neighbor.h
index 01f7b02798..996deaff6d 100644
--- a/lib/gpu/lal_neighbor.h
+++ b/lib/gpu/lal_neighbor.h
@@ -200,7 +200,7 @@ class Neighbor {
   /// Host storage for nbor counts (row 1) & accumulated neighbor counts (row2)
   UCL_H_Vec<int> host_acc;
   /// Device storage for accessing atom indices from the neighbor list (3-body)
-  UCL_D_Vec<int> dev_acc;
+  UCL_D_Vec<int> dev_ilist;
 
   // ----------------- Data for GPU Neighbor Calculation ---------------
 
diff --git a/lib/gpu/lal_sw.cpp b/lib/gpu/lal_sw.cpp
index 24984e4878..46b6382a60 100644
--- a/lib/gpu/lal_sw.cpp
+++ b/lib/gpu/lal_sw.cpp
@@ -243,7 +243,7 @@ void SWT::loop(const bool _eflag, const bool _vflag, const int evatom) {
     this->k_three_end_vatom.run(&this->atom->x, &sw1, &sw2, &sw3,
                           &map, &elem2param, &_nelements,
                           &this->nbor->dev_nbor, &this->_nbor_data->begin(),
-                          &this->nbor->dev_acc, &this->dev_short_nbor,
+                          &this->nbor->dev_ilist, &this->dev_short_nbor,
                           &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum,
                           &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor);
 
@@ -252,7 +252,7 @@ void SWT::loop(const bool _eflag, const bool _vflag, const int evatom) {
     this->k_three_end.run(&this->atom->x, &sw1, &sw2, &sw3,
                           &map, &elem2param, &_nelements,
                           &this->nbor->dev_nbor, &this->_nbor_data->begin(),
-                          &this->nbor->dev_acc, &this->dev_short_nbor,
+                          &this->nbor->dev_ilist, &this->dev_short_nbor,
                           &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum,
                           &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor);
 
diff --git a/lib/gpu/lal_sw.cu b/lib/gpu/lal_sw.cu
index 517de70691..3b6de5a683 100644
--- a/lib/gpu/lal_sw.cu
+++ b/lib/gpu/lal_sw.cu
@@ -544,7 +544,7 @@ __kernel void k_sw_three_end(const __global numtyp4 *restrict x_,
                              const int nelements,
                              const __global int * dev_nbor,
                              const __global int * dev_packed,
-                             const __global int * dev_acc,
+                             const __global int * dev_ilist,
                              const __global int * dev_short_nbor,
                              __global acctyp4 *restrict ans,
                              __global acctyp *restrict engv,
@@ -614,13 +614,13 @@ __kernel void k_sw_three_end(const __global numtyp4 *restrict x_,
       int nbor_k,numk;
       if (dev_nbor==dev_packed) {
         if (gpu_nbor) nbor_k=j+nbor_pitch;
-        else nbor_k=dev_acc[j]+nbor_pitch;
+        else nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch+fast_mul(j,t_per_atom-1);
         k_end=nbor_k+fast_mul(numk/t_per_atom,n_stride)+(numk & (t_per_atom-1));
         nbor_k+=offset_k;
       } else {
-        nbor_k=dev_acc[j]+nbor_pitch;
+        nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch;
         nbor_k=dev_nbor[nbor_k];
@@ -698,7 +698,7 @@ __kernel void k_sw_three_end_vatom(const __global numtyp4 *restrict x_,
                              const int nelements,
                              const __global int * dev_nbor,
                              const __global int * dev_packed,
-                             const __global int * dev_acc,
+                             const __global int * dev_ilist,
                              const __global int * dev_short_nbor,
                              __global acctyp4 *restrict ans,
                              __global acctyp *restrict engv,
@@ -768,13 +768,13 @@ __kernel void k_sw_three_end_vatom(const __global numtyp4 *restrict x_,
       int nbor_k,numk;
       if (dev_nbor==dev_packed) {
         if (gpu_nbor) nbor_k=j+nbor_pitch;
-        else nbor_k=dev_acc[j]+nbor_pitch;
+        else nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch+fast_mul(j,t_per_atom-1);
         k_end=nbor_k+fast_mul(numk/t_per_atom,n_stride)+(numk & (t_per_atom-1));
         nbor_k+=offset_k;
       } else {
-        nbor_k=dev_acc[j]+nbor_pitch;
+        nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch;
         nbor_k=dev_nbor[nbor_k];
diff --git a/lib/gpu/lal_tersoff.cpp b/lib/gpu/lal_tersoff.cpp
index af1e286520..ef55b98a2d 100644
--- a/lib/gpu/lal_tersoff.cpp
+++ b/lib/gpu/lal_tersoff.cpp
@@ -311,7 +311,7 @@ void TersoffT::loop(const bool _eflag, const bool _vflag, const int evatom) {
     this->k_three_end_vatom.run(&this->atom->x, &ts1, &ts2, &ts4, &cutsq,
                           &map, &elem2param, &_nelements, &_nparams, &_zetaij,
                           &this->nbor->dev_nbor, &this->_nbor_data->begin(),
-                          &this->nbor->dev_acc, &this->dev_short_nbor,
+                          &this->nbor->dev_ilist, &this->dev_short_nbor,
                           &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum,
                           &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor);
 
@@ -320,7 +320,7 @@ void TersoffT::loop(const bool _eflag, const bool _vflag, const int evatom) {
     this->k_three_end.run(&this->atom->x, &ts1, &ts2, &ts4, &cutsq,
                           &map, &elem2param, &_nelements, &_nparams, &_zetaij,
                           &this->nbor->dev_nbor, &this->_nbor_data->begin(),
-                          &this->nbor->dev_acc, &this->dev_short_nbor,
+                          &this->nbor->dev_ilist, &this->dev_short_nbor,
                           &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum,
                           &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor);
   }
diff --git a/lib/gpu/lal_tersoff.cu b/lib/gpu/lal_tersoff.cu
index cec0ccc443..836f05660d 100644
--- a/lib/gpu/lal_tersoff.cu
+++ b/lib/gpu/lal_tersoff.cu
@@ -696,7 +696,7 @@ __kernel void k_tersoff_three_end(const __global numtyp4 *restrict x_,
                                   const __global acctyp4 *restrict zetaij,
                                   const __global int * dev_nbor,
                                   const __global int * dev_packed,
-                                  const __global int * dev_acc,
+                                  const __global int * dev_ilist,
                                   const __global int * dev_short_nbor,
                                   __global acctyp4 *restrict ans,
                                   __global acctyp *restrict engv,
@@ -777,13 +777,13 @@ __kernel void k_tersoff_three_end(const __global numtyp4 *restrict x_,
       int nbor_k,numk;
       if (dev_nbor==dev_packed) {
         if (gpu_nbor) nbor_k=j+nbor_pitch;
-        else nbor_k=dev_acc[j]+nbor_pitch;
+        else nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch+fast_mul(j,t_per_atom-1);
         k_end=nbor_k+fast_mul(numk/t_per_atom,n_stride)+(numk & (t_per_atom-1));
         nbor_k+=offset_k;
       } else {
-        nbor_k=dev_acc[j]+nbor_pitch;
+        nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch;
         nbor_k=dev_nbor[nbor_k];
@@ -941,7 +941,7 @@ __kernel void k_tersoff_three_end_vatom(const __global numtyp4 *restrict x_,
                                         const __global acctyp4 *restrict zetaij,
                                         const __global int * dev_nbor,
                                         const __global int * dev_packed,
-                                        const __global int * dev_acc,
+                                        const __global int * dev_ilist,
                                         const __global int * dev_short_nbor,
                                         __global acctyp4 *restrict ans,
                                         __global acctyp *restrict engv,
@@ -1022,13 +1022,13 @@ __kernel void k_tersoff_three_end_vatom(const __global numtyp4 *restrict x_,
       int nbor_k,numk;
       if (dev_nbor==dev_packed) {
         if (gpu_nbor) nbor_k=j+nbor_pitch;
-        else nbor_k=dev_acc[j]+nbor_pitch;
+        else nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch+fast_mul(j,t_per_atom-1);
         k_end=nbor_k+fast_mul(numk/t_per_atom,n_stride)+(numk & (t_per_atom-1));
         nbor_k+=offset_k;
       } else {
-        nbor_k=dev_acc[j]+nbor_pitch;
+        nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch;
         nbor_k=dev_nbor[nbor_k];
diff --git a/lib/gpu/lal_tersoff_mod.cpp b/lib/gpu/lal_tersoff_mod.cpp
index dc25fdadff..3cbb488cab 100644
--- a/lib/gpu/lal_tersoff_mod.cpp
+++ b/lib/gpu/lal_tersoff_mod.cpp
@@ -311,7 +311,7 @@ void TersoffMT::loop(const bool _eflag, const bool _vflag, const int evatom) {
     this->k_three_end_vatom.run(&this->atom->x, &ts1, &ts2, &ts4, &ts5, &cutsq,
                           &map, &elem2param, &_nelements, &_nparams, &_zetaij,
                           &this->nbor->dev_nbor, &this->_nbor_data->begin(),
-                          &this->nbor->dev_acc, &this->dev_short_nbor,
+                          &this->nbor->dev_ilist, &this->dev_short_nbor,
                           &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum,
                           &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor);
 
@@ -320,7 +320,7 @@ void TersoffMT::loop(const bool _eflag, const bool _vflag, const int evatom) {
     this->k_three_end.run(&this->atom->x, &ts1, &ts2, &ts4, &ts5, &cutsq,
                           &map, &elem2param, &_nelements, &_nparams, &_zetaij,
                           &this->nbor->dev_nbor, &this->_nbor_data->begin(),
-                          &this->nbor->dev_acc, &this->dev_short_nbor,
+                          &this->nbor->dev_ilist, &this->dev_short_nbor,
                           &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum,
                           &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor);
   }
diff --git a/lib/gpu/lal_tersoff_mod.cu b/lib/gpu/lal_tersoff_mod.cu
index 576359b514..dfb94c4145 100644
--- a/lib/gpu/lal_tersoff_mod.cu
+++ b/lib/gpu/lal_tersoff_mod.cu
@@ -272,7 +272,7 @@ __kernel void k_tersoff_mod_zeta(const __global numtyp4 *restrict x_,
 
   if (ii<inum) {
     int nbor_j, nbor_end, i, numj;
-    const int* nbor_mem=dev_packed;
+    const __global int* nbor_mem=dev_packed;
     int offset_j=offset/t_per_atom;
     nbor_info(dev_nbor,dev_packed,nbor_pitch,t_per_atom,ii,offset_j,i,numj,
               n_stride,nbor_end,nbor_j);
@@ -432,7 +432,7 @@ __kernel void k_tersoff_mod_repulsive(const __global numtyp4 *restrict x_,
 
   if (ii<inum) {
     int nbor, nbor_end, i, numj;
-    const int* nbor_mem=dev_packed;
+    const __global int* nbor_mem=dev_packed;
     nbor_info(dev_nbor,dev_packed,nbor_pitch,t_per_atom,ii,offset,i,numj,
               n_stride,nbor_end,nbor);
 
@@ -547,7 +547,7 @@ __kernel void k_tersoff_mod_three_center(const __global numtyp4 *restrict x_,
 
   if (ii<inum) {
     int i, numj, nbor_j, nbor_end;
-    const int* nbor_mem=dev_packed;
+    const __global int* nbor_mem=dev_packed;
     int offset_j=offset/t_per_atom;
     nbor_info(dev_nbor,dev_packed,nbor_pitch,t_per_atom,ii,offset_j,i,numj,
               n_stride,nbor_end,nbor_j);
@@ -702,7 +702,7 @@ __kernel void k_tersoff_mod_three_end(const __global numtyp4 *restrict x_,
                                   const __global acctyp4 *restrict zetaij,
                                   const __global int * dev_nbor,
                                   const __global int * dev_packed,
-                                  const __global int * dev_acc,
+                                  const __global int * dev_ilist,
                                   const __global int * dev_short_nbor,
                                   __global acctyp4 *restrict ans,
                                   __global acctyp *restrict engv,
@@ -740,7 +740,7 @@ __kernel void k_tersoff_mod_three_end(const __global numtyp4 *restrict x_,
 
   if (ii<inum) {
     int i, numj, nbor_j, nbor_end, k_end;
-    const int* nbor_mem=dev_packed;
+    const __global int* nbor_mem=dev_packed;
     int offset_j=offset/t_per_atom;
     nbor_info(dev_nbor,dev_packed,nbor_pitch,t_per_atom,ii,offset_j,i,numj,
               n_stride,nbor_end,nbor_j);
@@ -785,13 +785,13 @@ __kernel void k_tersoff_mod_three_end(const __global numtyp4 *restrict x_,
       int nbor_k,numk;
       if (dev_nbor==dev_packed) {
         if (gpu_nbor) nbor_k=j+nbor_pitch;
-        else nbor_k=dev_acc[j]+nbor_pitch;
+        else nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch+fast_mul(j,t_per_atom-1);
         k_end=nbor_k+fast_mul(numk/t_per_atom,n_stride)+(numk & (t_per_atom-1));
         nbor_k+=offset_k;
       } else {
-        nbor_k=dev_acc[j]+nbor_pitch;
+        nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch;
         nbor_k=dev_nbor[nbor_k];
@@ -956,7 +956,7 @@ __kernel void k_tersoff_mod_three_end_vatom(const __global numtyp4 *restrict x_,
                                         const __global acctyp4 *restrict zetaij,
                                         const __global int * dev_nbor,
                                         const __global int * dev_packed,
-                                        const __global int * dev_acc,
+                                        const __global int * dev_ilist,
                                         const __global int * dev_short_nbor,
                                         __global acctyp4 *restrict ans,
                                         __global acctyp *restrict engv,
@@ -994,7 +994,7 @@ __kernel void k_tersoff_mod_three_end_vatom(const __global numtyp4 *restrict x_,
 
   if (ii<inum) {
     int i, numj, nbor_j, nbor_end, k_end;
-    const int* nbor_mem = dev_packed;
+    const __global int* nbor_mem = dev_packed;
     int offset_j=offset/t_per_atom;
     nbor_info(dev_nbor,dev_packed,nbor_pitch,t_per_atom,ii,offset_j,i,numj,
               n_stride,nbor_end,nbor_j);
@@ -1039,13 +1039,13 @@ __kernel void k_tersoff_mod_three_end_vatom(const __global numtyp4 *restrict x_,
       int nbor_k,numk;
       if (dev_nbor==dev_packed) {
         if (gpu_nbor) nbor_k=j+nbor_pitch;
-        else nbor_k=dev_acc[j]+nbor_pitch;
+        else nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch+fast_mul(j,t_per_atom-1);
         k_end=nbor_k+fast_mul(numk/t_per_atom,n_stride)+(numk & (t_per_atom-1));
         nbor_k+=offset_k;
       } else {
-        nbor_k=dev_acc[j]+nbor_pitch;
+        nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch;
         nbor_k=dev_nbor[nbor_k];
diff --git a/lib/gpu/lal_tersoff_zbl.cpp b/lib/gpu/lal_tersoff_zbl.cpp
index 7cd0d9e6b2..ebf67285ed 100644
--- a/lib/gpu/lal_tersoff_zbl.cpp
+++ b/lib/gpu/lal_tersoff_zbl.cpp
@@ -337,7 +337,7 @@ void TersoffZT::loop(const bool _eflag, const bool _vflag, const int evatom) {
     this->k_three_end_vatom.run(&this->atom->x, &ts1, &ts2, &ts4, &cutsq,
                           &map, &elem2param, &_nelements, &_nparams, &_zetaij,
                           &this->nbor->dev_nbor, &this->_nbor_data->begin(),
-                          &this->nbor->dev_acc, &this->dev_short_nbor,
+                          &this->nbor->dev_ilist, &this->dev_short_nbor,
                           &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum,
                           &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor);
 
@@ -346,7 +346,7 @@ void TersoffZT::loop(const bool _eflag, const bool _vflag, const int evatom) {
     this->k_three_end.run(&this->atom->x, &ts1, &ts2, &ts4, &cutsq,
                           &map, &elem2param, &_nelements, &_nparams, &_zetaij,
                           &this->nbor->dev_nbor, &this->_nbor_data->begin(),
-                          &this->nbor->dev_acc, &this->dev_short_nbor,
+                          &this->nbor->dev_ilist, &this->dev_short_nbor,
                           &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum,
                           &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor);
   }
diff --git a/lib/gpu/lal_tersoff_zbl.cu b/lib/gpu/lal_tersoff_zbl.cu
index e8bb017f59..73ff51c704 100644
--- a/lib/gpu/lal_tersoff_zbl.cu
+++ b/lib/gpu/lal_tersoff_zbl.cu
@@ -278,7 +278,7 @@ __kernel void k_tersoff_zbl_zeta(const __global numtyp4 *restrict x_,
 
   if (ii<inum) {
     int nbor_j, nbor_end, i, numj;
-    const int* nbor_mem=dev_packed;
+    const __global int* nbor_mem=dev_packed;
     int offset_j=offset/t_per_atom;
     nbor_info(dev_nbor,dev_packed,nbor_pitch,t_per_atom,ii,offset_j,i,numj,
               n_stride,nbor_end,nbor_j);
@@ -445,7 +445,7 @@ __kernel void k_tersoff_zbl_repulsive(const __global numtyp4 *restrict x_,
 
   if (ii<inum) {
     int nbor, nbor_end, i, numj;
-    const int* nbor_mem=dev_packed;
+    const __global int* nbor_mem=dev_packed;
     nbor_info(dev_nbor,dev_packed,nbor_pitch,t_per_atom,ii,offset,i,numj,
               n_stride,nbor_end,nbor);
 
@@ -563,7 +563,7 @@ __kernel void k_tersoff_zbl_three_center(const __global numtyp4 *restrict x_,
 
   if (ii<inum) {
     int i, numj, nbor_j, nbor_end;
-    const int* nbor_mem=dev_packed;
+    const __global int* nbor_mem=dev_packed;
     int offset_j=offset/t_per_atom;
     nbor_info(dev_nbor,dev_packed,nbor_pitch,t_per_atom,ii,offset_j,i,numj,
               n_stride,nbor_end,nbor_j);
@@ -714,7 +714,7 @@ __kernel void k_tersoff_zbl_three_end(const __global numtyp4 *restrict x_,
                                   const __global acctyp4 *restrict zetaij,
                                   const __global int * dev_nbor,
                                   const __global int * dev_packed,
-                                  const __global int * dev_acc,
+                                  const __global int * dev_ilist,
                                   const __global int * dev_short_nbor,
                                   __global acctyp4 *restrict ans,
                                   __global acctyp *restrict engv,
@@ -750,7 +750,7 @@ __kernel void k_tersoff_zbl_three_end(const __global numtyp4 *restrict x_,
 
   if (ii<inum) {
     int i, numj, nbor_j, nbor_end, k_end;
-    const int* nbor_mem=dev_packed;
+    const __global int* nbor_mem=dev_packed;
     int offset_j=offset/t_per_atom;
     nbor_info(dev_nbor,dev_packed,nbor_pitch,t_per_atom,ii,offset_j,i,numj,
               n_stride,nbor_end,nbor_j);
@@ -795,13 +795,13 @@ __kernel void k_tersoff_zbl_three_end(const __global numtyp4 *restrict x_,
       int nbor_k,numk;
       if (dev_nbor==dev_packed) {
         if (gpu_nbor) nbor_k=j+nbor_pitch;
-        else nbor_k=dev_acc[j]+nbor_pitch;
+        else nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch+fast_mul(j,t_per_atom-1);
         k_end=nbor_k+fast_mul(numk/t_per_atom,n_stride)+(numk & (t_per_atom-1));
         nbor_k+=offset_k;
       } else {
-        nbor_k=dev_acc[j]+nbor_pitch;
+        nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch;
         nbor_k=dev_nbor[nbor_k];
@@ -959,7 +959,7 @@ __kernel void k_tersoff_zbl_three_end_vatom(const __global numtyp4 *restrict x_,
                                         const __global acctyp4 *restrict zetaij,
                                         const __global int * dev_nbor,
                                         const __global int * dev_packed,
-                                        const __global int * dev_acc,
+                                        const __global int * dev_ilist,
                                         const __global int * dev_short_nbor,
                                         __global acctyp4 *restrict ans,
                                         __global acctyp *restrict engv,
@@ -995,7 +995,7 @@ __kernel void k_tersoff_zbl_three_end_vatom(const __global numtyp4 *restrict x_,
 
   if (ii<inum) {
     int i, numj, nbor_j, nbor_end, k_end;
-    const int* nbor_mem = dev_packed;
+    const __global int* nbor_mem = dev_packed;
     int offset_j=offset/t_per_atom;
     nbor_info(dev_nbor,dev_packed,nbor_pitch,t_per_atom,ii,offset_j,i,numj,
               n_stride,nbor_end,nbor_j);
@@ -1040,13 +1040,13 @@ __kernel void k_tersoff_zbl_three_end_vatom(const __global numtyp4 *restrict x_,
       int nbor_k,numk;
       if (dev_nbor==dev_packed) {
         if (gpu_nbor) nbor_k=j+nbor_pitch;
-        else nbor_k=dev_acc[j]+nbor_pitch;
+        else nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch+fast_mul(j,t_per_atom-1);
         k_end=nbor_k+fast_mul(numk/t_per_atom,n_stride)+(numk & (t_per_atom-1));
         nbor_k+=offset_k;
       } else {
-        nbor_k=dev_acc[j]+nbor_pitch;
+        nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch;
         nbor_k=dev_nbor[nbor_k];
diff --git a/lib/gpu/lal_vashishta.cpp b/lib/gpu/lal_vashishta.cpp
index d03ac992bd..5a01a9bd46 100644
--- a/lib/gpu/lal_vashishta.cpp
+++ b/lib/gpu/lal_vashishta.cpp
@@ -278,7 +278,7 @@ void VashishtaT::loop(const bool _eflag, const bool _vflag, const int evatom) {
     this->k_three_end_vatom.run(&this->atom->x, &param1, &param2, &param3, &param4, &param5,
                           &map, &elem2param, &_nelements,
                           &this->nbor->dev_nbor, &this->_nbor_data->begin(),
-                          &this->nbor->dev_acc, &this->dev_short_nbor,
+                          &this->nbor->dev_ilist, &this->dev_short_nbor,
                           &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum,
                           &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor);
   } else {
@@ -286,7 +286,7 @@ void VashishtaT::loop(const bool _eflag, const bool _vflag, const int evatom) {
     this->k_three_end.run(&this->atom->x, &param1, &param2, &param3, &param4, &param5,
                           &map, &elem2param, &_nelements,
                           &this->nbor->dev_nbor, &this->_nbor_data->begin(),
-                          &this->nbor->dev_acc, &this->dev_short_nbor,
+                          &this->nbor->dev_ilist, &this->dev_short_nbor,
                           &end_ans->force, &end_ans->engv, &eflag, &vflag, &ainum,
                           &nbor_pitch, &this->_threads_per_atom, &this->_gpu_nbor);
   }
diff --git a/lib/gpu/lal_vashishta.cu b/lib/gpu/lal_vashishta.cu
index d2e8bb1496..0da46c3b53 100644
--- a/lib/gpu/lal_vashishta.cu
+++ b/lib/gpu/lal_vashishta.cu
@@ -554,7 +554,7 @@ __kernel void k_vashishta_three_end(const __global numtyp4 *restrict x_,
                              const int nelements,
                              const __global int * dev_nbor,
                              const __global int * dev_packed,
-                             const __global int * dev_acc,
+                             const __global int * dev_ilist,
                              const __global int * dev_short_nbor,
                              __global acctyp4 *restrict ans,
                              __global acctyp *restrict engv,
@@ -623,13 +623,13 @@ __kernel void k_vashishta_three_end(const __global numtyp4 *restrict x_,
       int nbor_k,numk;
       if (dev_nbor==dev_packed) {
         if (gpu_nbor) nbor_k=j+nbor_pitch;
-        else nbor_k=dev_acc[j]+nbor_pitch;
+        else nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch+fast_mul(j,t_per_atom-1);
         k_end=nbor_k+fast_mul(numk/t_per_atom,n_stride)+(numk & (t_per_atom-1));
         nbor_k+=offset_k;
       } else {
-        nbor_k=dev_acc[j]+nbor_pitch;
+        nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch;
         nbor_k=dev_nbor[nbor_k];
@@ -709,7 +709,7 @@ __kernel void k_vashishta_three_end_vatom(const __global numtyp4 *restrict x_,
                              const int nelements,
                              const __global int * dev_nbor,
                              const __global int * dev_packed,
-                             const __global int * dev_acc,
+                             const __global int * dev_ilist,
                              const __global int * dev_short_nbor,
                              __global acctyp4 *restrict ans,
                              __global acctyp *restrict engv,
@@ -778,13 +778,13 @@ __kernel void k_vashishta_three_end_vatom(const __global numtyp4 *restrict x_,
       int nbor_k,numk;
       if (dev_nbor==dev_packed) {
         if (gpu_nbor) nbor_k=j+nbor_pitch;
-        else nbor_k=dev_acc[j]+nbor_pitch;
+        else nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch+fast_mul(j,t_per_atom-1);
         k_end=nbor_k+fast_mul(numk/t_per_atom,n_stride)+(numk & (t_per_atom-1));
         nbor_k+=offset_k;
       } else {
-        nbor_k=dev_acc[j]+nbor_pitch;
+        nbor_k=dev_ilist[j]+nbor_pitch;
         numk=dev_nbor[nbor_k];
         nbor_k+=nbor_pitch;
         nbor_k=dev_nbor[nbor_k];
-- 
GitLab


From b612c7ee75662dc3530e0a112063486b0f3d080c Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Sun, 22 Jul 2018 13:15:01 -0500
Subject: [PATCH 076/243] Fixed a copy-paste bug in lal_neighbor.cpp for neigh
 no

---
 lib/gpu/lal_neighbor.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/lib/gpu/lal_neighbor.cpp b/lib/gpu/lal_neighbor.cpp
index c6fa1aa560..3e128bcf57 100644
--- a/lib/gpu/lal_neighbor.cpp
+++ b/lib/gpu/lal_neighbor.cpp
@@ -130,7 +130,6 @@ void Neighbor::alloc(bool &success) {
     dev_ilist.clear();
     success=success && (dev_ilist.alloc(_max_atoms,*dev,
                                       UCL_READ_WRITE)==UCL_SUCCESS);
-                                      dev_ilist.clear();
     _c_bytes+=dev_packed.row_bytes()+dev_ilist.row_bytes();
   }
   if (_max_host>0) {
-- 
GitLab


From 644888d03c495258655518d9cf40f51e79acb033 Mon Sep 17 00:00:00 2001
From: Trung Nguyen <ndactrung@gmail.com>
Date: Sun, 22 Jul 2018 15:12:45 -0500
Subject: [PATCH 077/243] Fixed bugs with time_q and time_quat not calling
 start() and stop() when _charge and/or _rot in Atom are true for OpenCL
 builds

---
 lib/gpu/lal_atom.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/gpu/lal_atom.h b/lib/gpu/lal_atom.h
index f6a0b109f2..57880d7ca9 100644
--- a/lib/gpu/lal_atom.h
+++ b/lib/gpu/lal_atom.h
@@ -322,10 +322,12 @@ class Atom {
 
   // Copy charges to device asynchronously
   inline void add_q_data() {
+    time_q.start();
     if (_q_avail==false) {
       q.update_device(_nall,true);
       _q_avail=true;
     }
+    time_q.stop();
   }
 
   // Cast quaternions to write buffer
@@ -347,10 +349,12 @@ class Atom {
   // Copy quaternions to device
   /** Copies nall()*4 elements **/
   inline void add_quat_data() {
+    time_quat.start();
     if (_quat_avail==false) {
       quat.update_device(_nall*4,true);
       _quat_avail=true;
     }
+    time_quat.stop();
   }
 
   /// Cast velocities and tags to write buffer
-- 
GitLab


From 40dcfa44c9a0f545e9e33432bb06e471a5023de7 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Mon, 23 Jul 2018 08:35:40 -0600
Subject: [PATCH 078/243] new checksum for LATTE download

---
 lib/latte/Install.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/latte/Install.py b/lib/latte/Install.py
index e1ed9d4eaa..3b211858dd 100644
--- a/lib/latte/Install.py
+++ b/lib/latte/Install.py
@@ -40,7 +40,7 @@ version = '1.2.1'
 checksums = { \
         '1.1.0' : '533635721ee222d0ed2925a18fb5b294', \
         '1.2.0' : '68bf0db879da5e068a71281020239ae7', \
-        '1.2.1' : 'bed76e7e76c545c36dd848a8f1fd35eb' \
+        '1.2.1' : '85ac414fdada2d04619c8f936344df14', \
         }
 
 # print error message or help
-- 
GitLab


From 35ffa0a214d25b5a6f6d6bc60563b7e7507b33fe Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Mon, 23 Jul 2018 12:36:29 -0400
Subject: [PATCH 079/243] update MD5SUM entry in CMake build system

---
 cmake/CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index bf57398c71..60a0f5d48f 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -332,7 +332,7 @@ if(PKG_LATTE)
     include(ExternalProject)
     ExternalProject_Add(latte_build
       URL https://github.com/lanl/LATTE/archive/v1.2.1.tar.gz
-      URL_MD5 bed76e7e76c545c36dd848a8f1fd35eb
+      URL_MD5 85ac414fdada2d04619c8f936344df14
       SOURCE_SUBDIR cmake
       CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}
       )
-- 
GitLab


From 2ac3953e17b94bb16f402185eaa8904809aeeb01 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Mon, 23 Jul 2018 12:37:05 -0400
Subject: [PATCH 080/243] update src/Purge.list to cleanly remove obsolete
 files

---
 src/Purge.list | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/Purge.list b/src/Purge.list
index 402fc409e6..cd4eb17dab 100644
--- a/src/Purge.list
+++ b/src/Purge.list
@@ -24,6 +24,9 @@ style_nstencil.h
 style_ntopo.h
 # other auto-generated files
 lmpinstalledpkgs.h
+# renamed on 20 July 2018
+pair_body.h
+pair_body.cpp
 # deleted on 4 April 2018
 pair_kim_version.h
 # deleted on 15 December 2017
-- 
GitLab


From 923ae041dcfe0fdebbb146ec9a9b71fa8eba5a55 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Mon, 23 Jul 2018 15:52:42 -0400
Subject: [PATCH 081/243] (temporary) workaround for memory leaks with OpenCL
 and MPI for upcoming stable release

---
 lib/gpu/lal_device.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/gpu/lal_device.cpp b/lib/gpu/lal_device.cpp
index 7f54432a74..6b4d0ab2a5 100644
--- a/lib/gpu/lal_device.cpp
+++ b/lib/gpu/lal_device.cpp
@@ -130,8 +130,16 @@ int DeviceT::init_device(MPI_Comm world, MPI_Comm replica, const int first_gpu,
 
   // Time on the device only if 1 proc per gpu
   _time_device=true;
+
+#if 0
+  // XXX: the following setting triggers a memory leak with OpenCL and MPI
+  //      setting _time_device=true for all processes doesn't seem to be a
+  //      problem with either (no segfault, no (large) memory leak.
+  //      thus keeping this disabled for now. may need to review later.
+  //      2018-07-23 <akohlmey@gmail.com>
   if (_procs_per_gpu>1)
     _time_device=false;
+#endif
 
   // Set up a per device communicator
   MPI_Comm_split(node_comm,my_gpu,0,&_comm_gpu);
-- 
GitLab


From eee0df45dd1307223ddde73ec74b42feb4729e7f Mon Sep 17 00:00:00 2001
From: Marshall McDonnell <mcdonnellmt@ornl.gov>
Date: Tue, 24 Jul 2018 09:26:06 -0400
Subject: [PATCH 082/243] Updated fix gcmc docs for tail correction note

---
 doc/src/fix_gcmc.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/src/fix_gcmc.txt b/doc/src/fix_gcmc.txt
index 38f0fb95ce..191bc32b14 100644
--- a/doc/src/fix_gcmc.txt
+++ b/doc/src/fix_gcmc.txt
@@ -349,7 +349,7 @@ in the context of NVT dynamics.
 NOTE: If the density of the cell is initially very small or zero, and
 increases to a much larger density after a period of equilibration,
 then certain quantities that are only calculated once at the start
-(kspace parameters, tail corrections) may no longer be accurate.  The
+(kspace parameters) may no longer be accurate.  The
 solution is to start a new simulation after the equilibrium density
 has been reached.
 
-- 
GitLab


From 57ad197b7d2a3e0adeab565f9dc74d84650d9412 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 24 Jul 2018 10:48:06 -0400
Subject: [PATCH 083/243] port nh fixes to KOKKOS

---
 src/KOKKOS/fix_nh_kokkos.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/KOKKOS/fix_nh_kokkos.cpp b/src/KOKKOS/fix_nh_kokkos.cpp
index 679690ea82..347177b7f4 100644
--- a/src/KOKKOS/fix_nh_kokkos.cpp
+++ b/src/KOKKOS/fix_nh_kokkos.cpp
@@ -148,7 +148,7 @@ void FixNHKokkos<DeviceType>::setup(int vflag)
 
   if (pstat_flag) {
     double kt = boltz * t_target;
-    double nkt = atom->natoms * kt;
+    double nkt = (atom->natoms + 1) * kt;
 
     for (int i = 0; i < 3; i++)
       if (p_flag[i])
-- 
GitLab


From e37ee02eedbfc5ee117caa2e8217f11737270dbf Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 24 Jul 2018 11:19:00 -0400
Subject: [PATCH 084/243] port nh fixes to USER-BOCS package

---
 src/USER-BOCS/fix_bocs.cpp | 41 ++++++++++++++++++++++++++------------
 1 file changed, 28 insertions(+), 13 deletions(-)

diff --git a/src/USER-BOCS/fix_bocs.cpp b/src/USER-BOCS/fix_bocs.cpp
index 37e128f556..7fb8a27110 100644
--- a/src/USER-BOCS/fix_bocs.cpp
+++ b/src/USER-BOCS/fix_bocs.cpp
@@ -846,7 +846,7 @@ void FixBocs::setup(int vflag)
 
   if (pstat_flag) {
     double kt = boltz * t_target;
-    double nkt = atom->natoms * kt;
+    double nkt = (atom->natoms + 1) * kt;
 
     for (int i = 0; i < 3; i++)
       if (p_flag[i])
@@ -1508,7 +1508,7 @@ double FixBocs::compute_scalar()
   double volume;
   double energy;
   double kt = boltz * t_target;
-  double lkt_press = kt;
+  double lkt_press = 0.0;
   int ich;
   if (dimension == 3) volume = domain->xprd * domain->yprd * domain->zprd;
   else volume = domain->xprd * domain->yprd;
@@ -1539,15 +1539,21 @@ double FixBocs::compute_scalar()
   //       sum is over barostatted dimensions
 
   if (pstat_flag) {
-    for (i = 0; i < 3; i++)
-      if (p_flag[i])
+    for (i = 0; i < 3; i++) {
+      if (p_flag[i]) {
         energy += 0.5*omega_dot[i]*omega_dot[i]*omega_mass[i] +
           p_hydro*(volume-vol0) / (pdim*nktv2p);
+        lkt_press += kt;
+      }
+    }
 
     if (pstyle == TRICLINIC) {
-      for (i = 3; i < 6; i++)
-        if (p_flag[i])
+      for (i = 3; i < 6; i++) {
+        if (p_flag[i]) {
           energy += 0.5*omega_dot[i]*omega_dot[i]*omega_mass[i];
+          lkt_press += kt;
+        }
+      }
     }
 
     // extra contributions from thermostat chain for barostat
@@ -1880,15 +1886,14 @@ void FixBocs::nhc_temp_integrate()
 
 void FixBocs::nhc_press_integrate()
 {
-  int ich,i;
+  int ich,i,pdof;
   double expfac,factor_etap,kecurrent;
   double kt = boltz * t_target;
-  double lkt_press = kt;
 
   // Update masses, to preserve initial freq, if flag set
 
   if (omega_mass_flag) {
-    double nkt = atom->natoms * kt;
+    double nkt = (atom->natoms + 1) * kt;
     for (int i = 0; i < 3; i++)
       if (p_flag[i])
         omega_mass[i] = nkt/(p_freq[i]*p_freq[i]);
@@ -1912,14 +1917,24 @@ void FixBocs::nhc_press_integrate()
   }
 
   kecurrent = 0.0;
-  for (i = 0; i < 3; i++)
-    if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i];
+  pdof = 0;
+  for (i = 0; i < 3; i++) {
+    if (p_flag[i]) {
+      kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i];
+      pdof++;
+    }
+  }
 
   if (pstyle == TRICLINIC) {
-    for (i = 3; i < 6; i++)
-      if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i];
+    for (i = 3; i < 6; i++) {
+      if (p_flag[i]) {
+        kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i];
+        pdof++;
+      }
+    }
   }
 
+  double lkt_press = pdof * kt;
   etap_dotdot[0] = (kecurrent - lkt_press)/etap_mass[0];
 
   double ncfac = 1.0/nc_pchain;
-- 
GitLab


From da1be29278a7a9e623fdd76478cd572a789f77f5 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Tue, 24 Jul 2018 14:31:55 -0600
Subject: [PATCH 085/243] 2nd try at incremental doc page reorg, Section_tools

---
 doc/src/Manual.txt |   4 +-
 doc/src/Tools.txt  | 527 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 529 insertions(+), 2 deletions(-)
 create mode 100644 doc/src/Tools.txt

diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index e69797d9ec..d6d46570c1 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -116,7 +116,7 @@ it gives quick access to documentation for all LAMMPS commands.
    Section_howto
    Section_example
    Section_perf
-   Section_tools
+   Tools
    Section_modify
    Section_python
    Section_errors
@@ -210,7 +210,7 @@ END_RST -->
   6.27 "Drude induced dipoles"_howto_27 :ule,b
 "Example problems"_Section_example.html :l
 "Performance & scalability"_Section_perf.html :l
-"Additional tools"_Section_tools.html :l
+"Auxiliary tools"_Tools.html :l
 "Modifying & extending LAMMPS"_Section_modify.html :l
   10.1 "Atom styles"_mod_1 :ulb,b
   10.2 "Bond, angle, dihedral, improper potentials"_mod_2 :b
diff --git a/doc/src/Tools.txt b/doc/src/Tools.txt
new file mode 100644
index 0000000000..8fc371c4ef
--- /dev/null
+++ b/doc/src/Tools.txt
@@ -0,0 +1,527 @@
+"Previous Section"_Section_perf.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Section_modify.html :c
+
+<!-- future sequence of sections:
+"Previous Section"_Python.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Modify.html :c
+-->
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands.html#comm)
+
+:line
+
+Auxiliary tools :h3
+
+LAMMPS is designed to be a computational kernel for performing
+molecular dynamics computations.  Additional pre- and post-processing
+steps are often necessary to setup and analyze a simulation.  A list
+of such tools can be found on the "LAMMPS webpage"_lws at these links:
+
+"Pre/Post processing"_http://lammps.sandia.gov/prepost.html
+"Offsite LAMMPS packages & tools"_http://lammps.sandia.gov/offsite.html
+"Pizza.py toolkit"_pizza :ul
+
+The last link for "Pizza.py"_pizza is a Python-based tool developed at
+Sandia which provides tools for doing setup, analysis, plotting, and
+visualization for LAMMPS simulations.
+
+"link(pizza,http://pizza.sandia.gov)
+:link(python,http://www.python.org)
+
+Additional tools included in the LAMMPS distribution are described on
+this page.
+
+Note that many users write their own setup or analysis tools or use
+other existing codes and convert their output to a LAMMPS input format
+or vice versa.  The tools listed here are included in the LAMMPS
+distribution as examples of auxiliary tools.  Some of them are not
+actively supported by the LAMMPS developers, as they were contributed
+by LAMMPS users.  If you have problems using them, we can direct you
+to the authors.
+
+The source code for each of these codes is in the tools sub-directory
+of the LAMMPS distribution.  There is a Makefile (which you may need
+to edit for your platform) which will build several of the tools which
+reside in that directory.  Most of them are larger packages in their
+own sub-directories with their own Makefiles and/or README files.
+
+"amber2lmp"_#amber
+"binary2txt"_#binary
+"ch2lmp"_#charmm
+"chain"_#chain
+"colvars"_#colvars
+"createatoms"_#createatoms
+"doxygen"_#doxygen
+"drude"_#drude
+"eam database"_#eamdb
+"eam generate"_#eamgn
+"eff"_#eff
+"emacs"_#emacs
+"fep"_#fep
+"i-pi"_#ipi
+"ipp"_#ipp
+"kate"_#kate
+"lmp2arc"_#arc
+"lmp2cfg"_#cfg
+"matlab"_#matlab
+"micelle2d"_#micelle
+"moltemplate"_#moltemplate
+"msi2lmp"_#msi
+"phonon"_#phonon
+"polybond"_#polybond
+"pymol_asphere"_#pymol
+"python"_#pythontools
+"reax"_#reax_tool
+"smd"_#smd
+"vim"_#vim
+"xmgrace"_#xmgrace :ul
+
+:line
+:line
+
+amber2lmp tool :h4,link(amber)
+
+The amber2lmp sub-directory contains two Python scripts for converting
+files back-and-forth between the AMBER MD code and LAMMPS.  See the
+README file in amber2lmp for more information.
+
+These tools were written by Keir Novik while he was at Queen Mary
+University of London.  Keir is no longer there and cannot support
+these tools which are out-of-date with respect to the current LAMMPS
+version (and maybe with respect to AMBER as well).  Since we don't use
+these tools at Sandia, you'll need to experiment with them and make
+necessary modifications yourself.
+
+:line
+
+binary2txt tool :h4,link(binary)
+
+The file binary2txt.cpp converts one or more binary LAMMPS dump file
+into ASCII text files.  The syntax for running the tool is
+
+binary2txt file1 file2 ... :pre
+
+which creates file1.txt, file2.txt, etc.  This tool must be compiled
+on a platform that can read the binary file created by a LAMMPS run,
+since binary files are not compatible across all platforms.
+
+:line
+
+ch2lmp tool :h4,link(charmm)
+
+The ch2lmp sub-directory contains tools for converting files
+back-and-forth between the CHARMM MD code and LAMMPS.
+
+They are intended to make it easy to use CHARMM as a builder and as a
+post-processor for LAMMPS. Using charmm2lammps.pl, you can convert a
+PDB file with associated CHARMM info, including CHARMM force field
+data, into its LAMMPS equivalent. Support for the CMAP correction of
+CHARMM22 and later is available as an option. This tool can also add
+solvent water molecules and Na+ or Cl- ions to the system.
+Using lammps2pdb.pl you can convert LAMMPS atom dumps into PDB files.
+
+See the README file in the ch2lmp sub-directory for more information.
+
+These tools were created by Pieter in't Veld (pjintve at sandia.gov)
+and Paul Crozier (pscrozi at sandia.gov) at Sandia.
+
+CMAP support added and tested by Xiaohu Hu (hux2 at ornl.gov) and
+Robert A. Latour (latourr at clemson.edu), David Hyde-Volpe, and
+Tigran Abramyan, (Clemson University) and
+Chris Lorenz (chris.lorenz at kcl.ac.uk), King's College London.
+
+:line
+
+chain tool :h4,link(chain)
+
+The file chain.f creates a LAMMPS data file containing bead-spring
+polymer chains and/or monomer solvent atoms.  It uses a text file
+containing chain definition parameters as an input.  The created
+chains and solvent atoms can strongly overlap, so LAMMPS needs to run
+the system initially with a "soft" pair potential to un-overlap it.
+The syntax for running the tool is
+
+chain < def.chain > data.file :pre
+
+See the def.chain or def.chain.ab files in the tools directory for
+examples of definition files.  This tool was used to create the
+system for the "chain benchmark"_Section_perf.html.
+
+:line
+
+colvars tools :h4,link(colvars)
+
+The colvars directory contains a collection of tools for postprocessing
+data produced by the colvars collective variable library.
+To compile the tools, edit the makefile for your system and run "make".
+
+Please report problems and issues the colvars library and its tools
+at: https://github.com/colvars/colvars/issues
+
+abf_integrate:
+
+MC-based integration of multidimensional free energy gradient
+Version 20110511
+
+Syntax: ./abf_integrate < filename > \[-n < nsteps >\] \[-t < temp >\] \[-m \[0|1\] (metadynamics)\] \[-h < hill_height >\] \[-f < variable_hill_factor >\] :pre
+
+The LAMMPS interface to the colvars collective variable library, as
+well as these tools, were created by Axel Kohlmeyer (akohlmey at
+gmail.com) at ICTP, Italy.
+
+:line
+
+createatoms tool :h4,link(createatoms)
+
+The tools/createatoms directory contains a Fortran program called
+createAtoms.f which can generate a variety of interesting crystal
+structures and geometries and output the resulting list of atom
+coordinates in LAMMPS or other formats.
+
+See the included Manual.pdf for details.
+
+The tool is authored by Xiaowang Zhou (Sandia), xzhou at sandia.gov.
+
+:line
+
+doxygen tool :h4,link(doxygen)
+
+The tools/doxygen directory contains a shell script called
+doxygen.sh which can generate a call graph and API lists using
+the "Doxygen software"_http://doxygen.org.
+
+See the included README file for details.
+
+The tool is authored by Nandor Tamaskovics, numericalfreedom at googlemail.com.
+
+:line
+
+drude tool :h4,link(drude)
+
+The tools/drude directory contains a Python script called
+polarizer.py which can add Drude oscillators to a LAMMPS
+data file in the required format.
+
+See the header of the polarizer.py file for details.
+
+The tool is authored by Agilio Padua and Alain Dequidt: agilio.padua
+at univ-bpclermont.fr, alain.dequidt at univ-bpclermont.fr
+
+:line
+
+eam database tool :h4,link(eamdb)
+
+The tools/eam_database directory contains a Fortran program that will
+generate EAM alloy setfl potential files for any combination of 16
+elements: Cu, Ag, Au, Ni, Pd, Pt, Al, Pb, Fe, Mo, Ta, W, Mg, Co, Ti,
+Zr.  The files can then be used with the "pair_style
+eam/alloy"_pair_eam.html command.
+
+The tool is authored by Xiaowang Zhou (Sandia), xzhou at sandia.gov,
+and is based on his paper:
+
+X. W. Zhou, R. A. Johnson, and H. N. G. Wadley, Phys. Rev. B, 69,
+144113 (2004).
+
+:line
+
+eam generate tool :h4,link(eamgn)
+
+The tools/eam_generate directory contains several one-file C programs
+that convert an analytic formula into a tabulated "embedded atom
+method (EAM)"_pair_eam.html setfl potential file.  The potentials they
+produce are in the potentials directory, and can be used with the
+"pair_style eam/alloy"_pair_eam.html command.
+
+The source files and potentials were provided by Gerolf Ziegenhain
+(gerolf at ziegenhain.com).
+
+:line
+
+eff tool :h4,link(eff)
+
+The tools/eff directory contains various scripts for generating
+structures and post-processing output for simulations using the
+electron force field (eFF).
+
+These tools were provided by Andres Jaramillo-Botero at CalTech
+(ajaramil at wag.caltech.edu).
+
+:line
+
+emacs tool :h4,link(emacs)
+
+The tools/emacs directory contains a Lips add-on file for Emacs that
+enables a lammps-mode for editing of input scripts when using Emacs,
+with various highlighting options setup.
+
+These tools were provided by Aidan Thompson at Sandia
+(athomps at sandia.gov).
+
+:line
+
+fep tool :h4,link(fep)
+
+The tools/fep directory contains Python scripts useful for
+post-processing results from performing free-energy perturbation
+simulations using the USER-FEP package.
+
+The scripts were contributed by Agilio Padua (Universite Blaise
+Pascal Clermont-Ferrand), agilio.padua at univ-bpclermont.fr.
+
+See README file in the tools/fep directory.
+
+:line
+
+i-pi tool :h4,link(ipi)
+
+The tools/i-pi directory contains a version of the i-PI package, with
+all the LAMMPS-unrelated files removed.  It is provided so that it can
+be used with the "fix ipi"_fix_ipi.html command to perform
+path-integral molecular dynamics (PIMD).
+
+The i-PI package was created and is maintained by Michele Ceriotti,
+michele.ceriotti at gmail.com, to interface to a variety of molecular
+dynamics codes.
+
+See the tools/i-pi/manual.pdf file for an overview of i-PI, and the
+"fix ipi"_fix_ipi.html doc page for further details on running PIMD
+calculations with LAMMPS.
+
+:line
+
+ipp tool :h4,link(ipp)
+
+The tools/ipp directory contains a Perl script ipp which can be used
+to facilitate the creation of a complicated file (say, a lammps input
+script or tools/createatoms input file) using a template file.
+
+ipp was created and is maintained by Reese Jones (Sandia), rjones at
+sandia.gov.
+
+See two examples in the tools/ipp directory.  One of them is for the
+tools/createatoms tool's input file.
+
+:line
+
+kate tool :h4,link(kate)
+
+The file in the tools/kate directory is an add-on to the Kate editor
+in the KDE suite that allow syntax highlighting of LAMMPS input
+scripts.  See the README.txt file for details.
+
+The file was provided by Alessandro Luigi Sellerio
+(alessandro.sellerio at ieni.cnr.it).
+
+:line
+
+lmp2arc tool :h4,link(arc)
+
+The lmp2arc sub-directory contains a tool for converting LAMMPS output
+files to the format for Accelrys' Insight MD code (formerly
+MSI/Biosym and its Discover MD code).  See the README file for more
+information.
+
+This tool was written by John Carpenter (Cray), Michael Peachey
+(Cray), and Steve Lustig (Dupont).  John is now at the Mayo Clinic
+(jec at mayo.edu), but still fields questions about the tool.
+
+This tool was updated for the current LAMMPS C++ version by Jeff
+Greathouse at Sandia (jagreat at sandia.gov).
+
+:line
+
+lmp2cfg tool :h4,link(cfg)
+
+The lmp2cfg sub-directory contains a tool for converting LAMMPS output
+files into a series of *.cfg files which can be read into the
+"AtomEye"_http://mt.seas.upenn.edu/Archive/Graphics/A visualizer.  See
+the README file for more information.
+
+This tool was written by Ara Kooser at Sandia (askoose at sandia.gov).
+
+:line
+
+matlab tool :h4,link(matlab)
+
+The matlab sub-directory contains several "MATLAB"_matlabhome scripts for
+post-processing LAMMPS output.  The scripts include readers for log
+and dump files, a reader for EAM potential files, and a converter that
+reads LAMMPS dump files and produces CFG files that can be visualized
+with the "AtomEye"_http://mt.seas.upenn.edu/Archive/Graphics/A
+visualizer.
+
+See the README.pdf file for more information.
+
+These scripts were written by Arun Subramaniyan at Purdue Univ
+(asubrama at purdue.edu).
+
+:link(matlabhome,http://www.mathworks.com)
+
+:line
+
+micelle2d tool :h4,link(micelle)
+
+The file micelle2d.f creates a LAMMPS data file containing short lipid
+chains in a monomer solution.  It uses a text file containing lipid
+definition parameters as an input.  The created molecules and solvent
+atoms can strongly overlap, so LAMMPS needs to run the system
+initially with a "soft" pair potential to un-overlap it.  The syntax
+for running the tool is
+
+micelle2d < def.micelle2d > data.file :pre
+
+See the def.micelle2d file in the tools directory for an example of a
+definition file.  This tool was used to create the system for the
+"micelle example"_Section_example.html.
+
+:line
+
+moltemplate tool :h4,link(moltemplate)
+
+The moltemplate sub-directory contains a Python-based tool for
+building molecular systems based on a text-file description, and
+creating LAMMPS data files that encode their molecular topology as
+lists of bonds, angles, dihedrals, etc.  See the README.TXT file for
+more information.
+
+This tool was written by Andrew Jewett (jewett.aij at gmail.com), who
+supports it.  It has its own WWW page at
+"http://moltemplate.org"_http://moltemplate.org.
+
+:line
+
+msi2lmp tool :h4,link(msi)
+
+The msi2lmp sub-directory contains a tool for creating LAMMPS template
+input and data files from BIOVIA's Materias Studio files (formerly Accelrys'
+Insight MD code, formerly MSI/Biosym and its Discover MD code).
+
+This tool was written by John Carpenter (Cray), Michael Peachey
+(Cray), and Steve Lustig (Dupont). Several people contributed changes
+to remove bugs and adapt its output to changes in LAMMPS.
+
+This tool has several known limitations and is no longer under active
+development, so there are no changes except for the occasional bugfix.
+
+See the README file in the tools/msi2lmp folder for more information.
+
+:line
+
+phonon tool :h4,link(phonon)
+
+The phonon sub-directory contains a post-processing tool useful for
+analyzing the output of the "fix phonon"_fix_phonon.html command in
+the USER-PHONON package.
+
+See the README file for instruction on building the tool and what
+library it needs.  And see the examples/USER/phonon directory
+for example problems that can be post-processed with this tool.
+
+This tool was written by Ling-Ti Kong at Shanghai Jiao Tong
+University.
+
+:line
+
+polybond tool :h4,link(polybond)
+
+The polybond sub-directory contains a Python-based tool useful for
+performing "programmable polymer bonding".  The Python file
+lmpsdata.py provides a "Lmpsdata" class with various methods which can
+be invoked by a user-written Python script to create data files with
+complex bonding topologies.
+
+See the Manual.pdf for details and example scripts.
+
+This tool was written by Zachary Kraus at Georgia Tech.
+
+:line
+
+pymol_asphere tool :h4,link(pymol)
+
+The pymol_asphere sub-directory contains a tool for converting a
+LAMMPS dump file that contains orientation info for ellipsoidal
+particles into an input file for the "PyMol visualization
+package"_pymolhome or its "open source variant"_pymolopen.
+
+:link(pymolhome,http://www.pymol.org)
+:link(pymolopen,http://sourceforge.net/scm/?type=svn&group_id=4546)
+
+Specifically, the tool triangulates the ellipsoids so they can be
+viewed as true ellipsoidal particles within PyMol.  See the README and
+examples directory within pymol_asphere for more information.
+
+This tool was written by Mike Brown at Sandia.
+
+:line
+
+python tool :h4,link(pythontools)
+
+The python sub-directory contains several Python scripts
+that perform common LAMMPS post-processing tasks, such as:
+
+extract thermodynamic info from a log file as columns of numbers
+plot two columns of thermodynamic info from a log file using GnuPlot
+sort the snapshots in a dump file by atom ID
+convert multiple "NEB"_neb.html dump files into one dump file for viz
+convert dump files into XYZ, CFG, or PDB format for viz by other packages :ul
+
+These are simple scripts built on "Pizza.py"_pizza modules.  See the
+README for more info on Pizza.py and how to use these scripts.
+
+:line
+
+reax tool :h4,link(reax_tool)
+
+The reax sub-directory contains stand-alond codes that can
+post-process the output of the "fix reax/bonds"_fix_reax_bonds.html
+command from a LAMMPS simulation using "ReaxFF"_pair_reax.html.  See
+the README.txt file for more info.
+
+These tools were written by Aidan Thompson at Sandia.
+
+:line
+
+smd tool :h4,link(smd)
+
+The smd sub-directory contains a C++ file dump2vtk_tris.cpp and
+Makefile which can be compiled and used to convert triangle output
+files created by the Smooth-Mach Dynamics (USER-SMD) package into a
+VTK-compatible unstructured grid file.  It could then be read in and
+visualized by VTK.
+
+See the header of dump2vtk.cpp for more details.
+
+This tool was written by the USER-SMD package author, Georg
+Ganzenmuller at the Fraunhofer-Institute for High-Speed Dynamics,
+Ernst Mach Institute in Germany (georg.ganzenmueller at emi.fhg.de).
+
+:line
+
+vim tool :h4,link(vim)
+
+The files in the tools/vim directory are add-ons to the VIM editor
+that allow easier editing of LAMMPS input scripts.  See the README.txt
+file for details.
+
+These files were provided by Gerolf Ziegenhain (gerolf at
+ziegenhain.com)
+
+:line
+
+xmgrace tool :h4,link(xmgrace)
+
+The files in the tools/xmgrace directory can be used to plot the
+thermodynamic data in LAMMPS log files via the xmgrace plotting
+package.  There are several tools in the directory that can be used in
+post-processing mode.  The lammpsplot.cpp file can be compiled and
+used to create plots from the current state of a running LAMMPS
+simulation.
+
+See the README file for details.
+
+These files were provided by Vikas Varshney (vv0210 at gmail.com)
-- 
GitLab


From d83d05088fa284a0608d8cace4f7ac0be6d1482b Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Tue, 24 Jul 2018 14:33:27 -0600
Subject: [PATCH 086/243] remove replaced file

---
 doc/src/Section_tools.txt | 520 --------------------------------------
 1 file changed, 520 deletions(-)
 delete mode 100644 doc/src/Section_tools.txt

diff --git a/doc/src/Section_tools.txt b/doc/src/Section_tools.txt
deleted file mode 100644
index 7cc07cbec5..0000000000
--- a/doc/src/Section_tools.txt
+++ /dev/null
@@ -1,520 +0,0 @@
-"Previous Section"_Section_perf.html - "LAMMPS WWW Site"_lws - "LAMMPS
-Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Section_modify.html :c
-
-:link(lws,http://lammps.sandia.gov)
-:link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
-
-:line
-
-9. Additional tools :h2
-
-LAMMPS is designed to be a computational kernel for performing
-molecular dynamics computations.  Additional pre- and post-processing
-steps are often necessary to setup and analyze a simulation. A
-list of such tools can be found on the LAMMPS home page
-at "http://lammps.sandia.gov/prepost.html"_http://lammps.sandia.gov/prepost.html
-
-A few additional tools are provided with the LAMMPS distribution
-and are described in this section.
-
-Our group has also written and released a separate toolkit called
-"Pizza.py"_pizza which provides tools for doing setup, analysis,
-plotting, and visualization for LAMMPS simulations.  Pizza.py is
-written in "Python"_python and is available for download from "the
-Pizza.py WWW site"_pizza.
-
-:link(pizza,http://www.sandia.gov/~sjplimp/pizza.html)
-:link(python,http://www.python.org)
-
-Note that many users write their own setup or analysis tools or use
-other existing codes and convert their output to a LAMMPS input format
-or vice versa.  The tools listed here are included in the LAMMPS
-distribution as examples of auxiliary tools.  Some of them are not
-actively supported by Sandia, as they were contributed by LAMMPS
-users.  If you have problems using them, we can direct you to the
-authors.
-
-The source code for each of these codes is in the tools sub-directory
-of the LAMMPS distribution.  There is a Makefile (which you may need
-to edit for your platform) which will build several of the tools which
-reside in that directory.  Most of them are larger packages in their
-own sub-directories with their own Makefiles and/or README files.
-
-"amber2lmp"_#amber
-"binary2txt"_#binary
-"ch2lmp"_#charmm
-"chain"_#chain
-"colvars"_#colvars
-"createatoms"_#createatoms
-"doxygen"_#doxygen
-"drude"_#drude
-"eam database"_#eamdb
-"eam generate"_#eamgn
-"eff"_#eff
-"emacs"_#emacs
-"fep"_#fep
-"i-pi"_#ipi
-"ipp"_#ipp
-"kate"_#kate
-"lmp2arc"_#arc
-"lmp2cfg"_#cfg
-"matlab"_#matlab
-"micelle2d"_#micelle
-"moltemplate"_#moltemplate
-"msi2lmp"_#msi
-"phonon"_#phonon
-"polybond"_#polybond
-"pymol_asphere"_#pymol
-"python"_#pythontools
-"reax"_#reax_tool
-"smd"_#smd
-"vim"_#vim
-"xmgrace"_#xmgrace
-
-:line
-
-amber2lmp tool :h3,link(amber)
-
-The amber2lmp sub-directory contains two Python scripts for converting
-files back-and-forth between the AMBER MD code and LAMMPS.  See the
-README file in amber2lmp for more information.
-
-These tools were written by Keir Novik while he was at Queen Mary
-University of London.  Keir is no longer there and cannot support
-these tools which are out-of-date with respect to the current LAMMPS
-version (and maybe with respect to AMBER as well).  Since we don't use
-these tools at Sandia, you'll need to experiment with them and make
-necessary modifications yourself.
-
-:line
-
-binary2txt tool :h3,link(binary)
-
-The file binary2txt.cpp converts one or more binary LAMMPS dump file
-into ASCII text files.  The syntax for running the tool is
-
-binary2txt file1 file2 ... :pre
-
-which creates file1.txt, file2.txt, etc.  This tool must be compiled
-on a platform that can read the binary file created by a LAMMPS run,
-since binary files are not compatible across all platforms.
-
-:line
-
-ch2lmp tool :h3,link(charmm)
-
-The ch2lmp sub-directory contains tools for converting files
-back-and-forth between the CHARMM MD code and LAMMPS.
-
-They are intended to make it easy to use CHARMM as a builder and as a
-post-processor for LAMMPS. Using charmm2lammps.pl, you can convert a
-PDB file with associated CHARMM info, including CHARMM force field
-data, into its LAMMPS equivalent. Support for the CMAP correction of
-CHARMM22 and later is available as an option. This tool can also add
-solvent water molecules and Na+ or Cl- ions to the system.
-Using lammps2pdb.pl you can convert LAMMPS atom dumps into PDB files.
-
-See the README file in the ch2lmp sub-directory for more information.
-
-These tools were created by Pieter in't Veld (pjintve at sandia.gov)
-and Paul Crozier (pscrozi at sandia.gov) at Sandia.
-
-CMAP support added and tested by Xiaohu Hu (hux2 at ornl.gov) and
-Robert A. Latour (latourr at clemson.edu), David Hyde-Volpe, and
-Tigran Abramyan, (Clemson University) and
-Chris Lorenz (chris.lorenz at kcl.ac.uk), King's College London.
-
-:line
-
-chain tool :h3,link(chain)
-
-The file chain.f creates a LAMMPS data file containing bead-spring
-polymer chains and/or monomer solvent atoms.  It uses a text file
-containing chain definition parameters as an input.  The created
-chains and solvent atoms can strongly overlap, so LAMMPS needs to run
-the system initially with a "soft" pair potential to un-overlap it.
-The syntax for running the tool is
-
-chain < def.chain > data.file :pre
-
-See the def.chain or def.chain.ab files in the tools directory for
-examples of definition files.  This tool was used to create the
-system for the "chain benchmark"_Section_perf.html.
-
-:line
-
-colvars tools :h3,link(colvars)
-
-The colvars directory contains a collection of tools for postprocessing
-data produced by the colvars collective variable library.
-To compile the tools, edit the makefile for your system and run "make".
-
-Please report problems and issues the colvars library and its tools
-at: https://github.com/colvars/colvars/issues
-
-abf_integrate:
-
-MC-based integration of multidimensional free energy gradient
-Version 20110511
-
-Syntax: ./abf_integrate < filename > \[-n < nsteps >\] \[-t < temp >\] \[-m \[0|1\] (metadynamics)\] \[-h < hill_height >\] \[-f < variable_hill_factor >\] :pre
-
-The LAMMPS interface to the colvars collective variable library, as
-well as these tools, were created by Axel Kohlmeyer (akohlmey at
-gmail.com) at ICTP, Italy.
-
-:line
-
-createatoms tool :h3,link(createatoms)
-
-The tools/createatoms directory contains a Fortran program called
-createAtoms.f which can generate a variety of interesting crystal
-structures and geometries and output the resulting list of atom
-coordinates in LAMMPS or other formats.
-
-See the included Manual.pdf for details.
-
-The tool is authored by Xiaowang Zhou (Sandia), xzhou at sandia.gov.
-
-:line
-
-doxygen tool :h3,link(doxygen)
-
-The tools/doxygen directory contains a shell script called
-doxygen.sh which can generate a call graph and API lists using
-the "Doxygen software"_http://doxygen.org.
-
-See the included README file for details.
-
-The tool is authored by Nandor Tamaskovics, numericalfreedom at googlemail.com.
-
-:line
-
-drude tool :h3,link(drude)
-
-The tools/drude directory contains a Python script called
-polarizer.py which can add Drude oscillators to a LAMMPS
-data file in the required format.
-
-See the header of the polarizer.py file for details.
-
-The tool is authored by Agilio Padua and Alain Dequidt: agilio.padua
-at univ-bpclermont.fr, alain.dequidt at univ-bpclermont.fr
-
-:line
-
-eam database tool :h3,link(eamdb)
-
-The tools/eam_database directory contains a Fortran program that will
-generate EAM alloy setfl potential files for any combination of 16
-elements: Cu, Ag, Au, Ni, Pd, Pt, Al, Pb, Fe, Mo, Ta, W, Mg, Co, Ti,
-Zr.  The files can then be used with the "pair_style
-eam/alloy"_pair_eam.html command.
-
-The tool is authored by Xiaowang Zhou (Sandia), xzhou at sandia.gov,
-and is based on his paper:
-
-X. W. Zhou, R. A. Johnson, and H. N. G. Wadley, Phys. Rev. B, 69,
-144113 (2004).
-
-:line
-
-eam generate tool :h3,link(eamgn)
-
-The tools/eam_generate directory contains several one-file C programs
-that convert an analytic formula into a tabulated "embedded atom
-method (EAM)"_pair_eam.html setfl potential file.  The potentials they
-produce are in the potentials directory, and can be used with the
-"pair_style eam/alloy"_pair_eam.html command.
-
-The source files and potentials were provided by Gerolf Ziegenhain
-(gerolf at ziegenhain.com).
-
-:line
-
-eff tool :h3,link(eff)
-
-The tools/eff directory contains various scripts for generating
-structures and post-processing output for simulations using the
-electron force field (eFF).
-
-These tools were provided by Andres Jaramillo-Botero at CalTech
-(ajaramil at wag.caltech.edu).
-
-:line
-
-emacs tool :h3,link(emacs)
-
-The tools/emacs directory contains a Lips add-on file for Emacs that
-enables a lammps-mode for editing of input scripts when using Emacs,
-with various highlighting options setup.
-
-These tools were provided by Aidan Thompson at Sandia
-(athomps at sandia.gov).
-
-:line
-
-fep tool :h3,link(fep)
-
-The tools/fep directory contains Python scripts useful for
-post-processing results from performing free-energy perturbation
-simulations using the USER-FEP package.
-
-The scripts were contributed by Agilio Padua (Universite Blaise
-Pascal Clermont-Ferrand), agilio.padua at univ-bpclermont.fr.
-
-See README file in the tools/fep directory.
-
-:line
-
-i-pi tool :h3,link(ipi)
-
-The tools/i-pi directory contains a version of the i-PI package, with
-all the LAMMPS-unrelated files removed.  It is provided so that it can
-be used with the "fix ipi"_fix_ipi.html command to perform
-path-integral molecular dynamics (PIMD).
-
-The i-PI package was created and is maintained by Michele Ceriotti,
-michele.ceriotti at gmail.com, to interface to a variety of molecular
-dynamics codes.
-
-See the tools/i-pi/manual.pdf file for an overview of i-PI, and the
-"fix ipi"_fix_ipi.html doc page for further details on running PIMD
-calculations with LAMMPS.
-
-:line
-
-ipp tool :h3,link(ipp)
-
-The tools/ipp directory contains a Perl script ipp which can be used
-to facilitate the creation of a complicated file (say, a lammps input
-script or tools/createatoms input file) using a template file.
-
-ipp was created and is maintained by Reese Jones (Sandia), rjones at
-sandia.gov.
-
-See two examples in the tools/ipp directory.  One of them is for the
-tools/createatoms tool's input file.
-
-:line
-
-kate tool :h3,link(kate)
-
-The file in the tools/kate directory is an add-on to the Kate editor
-in the KDE suite that allow syntax highlighting of LAMMPS input
-scripts.  See the README.txt file for details.
-
-The file was provided by Alessandro Luigi Sellerio
-(alessandro.sellerio at ieni.cnr.it).
-
-:line
-
-lmp2arc tool :h3,link(arc)
-
-The lmp2arc sub-directory contains a tool for converting LAMMPS output
-files to the format for Accelrys' Insight MD code (formerly
-MSI/Biosym and its Discover MD code).  See the README file for more
-information.
-
-This tool was written by John Carpenter (Cray), Michael Peachey
-(Cray), and Steve Lustig (Dupont).  John is now at the Mayo Clinic
-(jec at mayo.edu), but still fields questions about the tool.
-
-This tool was updated for the current LAMMPS C++ version by Jeff
-Greathouse at Sandia (jagreat at sandia.gov).
-
-:line
-
-lmp2cfg tool :h3,link(cfg)
-
-The lmp2cfg sub-directory contains a tool for converting LAMMPS output
-files into a series of *.cfg files which can be read into the
-"AtomEye"_http://mt.seas.upenn.edu/Archive/Graphics/A visualizer.  See
-the README file for more information.
-
-This tool was written by Ara Kooser at Sandia (askoose at sandia.gov).
-
-:line
-
-matlab tool :h3,link(matlab)
-
-The matlab sub-directory contains several "MATLAB"_matlabhome scripts for
-post-processing LAMMPS output.  The scripts include readers for log
-and dump files, a reader for EAM potential files, and a converter that
-reads LAMMPS dump files and produces CFG files that can be visualized
-with the "AtomEye"_http://mt.seas.upenn.edu/Archive/Graphics/A
-visualizer.
-
-See the README.pdf file for more information.
-
-These scripts were written by Arun Subramaniyan at Purdue Univ
-(asubrama at purdue.edu).
-
-:link(matlabhome,http://www.mathworks.com)
-
-:line
-
-micelle2d tool :h3,link(micelle)
-
-The file micelle2d.f creates a LAMMPS data file containing short lipid
-chains in a monomer solution.  It uses a text file containing lipid
-definition parameters as an input.  The created molecules and solvent
-atoms can strongly overlap, so LAMMPS needs to run the system
-initially with a "soft" pair potential to un-overlap it.  The syntax
-for running the tool is
-
-micelle2d < def.micelle2d > data.file :pre
-
-See the def.micelle2d file in the tools directory for an example of a
-definition file.  This tool was used to create the system for the
-"micelle example"_Section_example.html.
-
-:line
-
-moltemplate tool :h3,link(moltemplate)
-
-The moltemplate sub-directory contains a Python-based tool for
-building molecular systems based on a text-file description, and
-creating LAMMPS data files that encode their molecular topology as
-lists of bonds, angles, dihedrals, etc.  See the README.TXT file for
-more information.
-
-This tool was written by Andrew Jewett (jewett.aij at gmail.com), who
-supports it.  It has its own WWW page at
-"http://moltemplate.org"_http://moltemplate.org.
-
-:line
-
-msi2lmp tool :h3,link(msi)
-
-The msi2lmp sub-directory contains a tool for creating LAMMPS template
-input and data files from BIOVIA's Materias Studio files (formerly Accelrys'
-Insight MD code, formerly MSI/Biosym and its Discover MD code).
-
-This tool was written by John Carpenter (Cray), Michael Peachey
-(Cray), and Steve Lustig (Dupont). Several people contributed changes
-to remove bugs and adapt its output to changes in LAMMPS.
-
-This tool has several known limitations and is no longer under active
-development, so there are no changes except for the occasional bugfix.
-
-See the README file in the tools/msi2lmp folder for more information.
-
-:line
-
-phonon tool :h3,link(phonon)
-
-The phonon sub-directory contains a post-processing tool useful for
-analyzing the output of the "fix phonon"_fix_phonon.html command in
-the USER-PHONON package.
-
-See the README file for instruction on building the tool and what
-library it needs.  And see the examples/USER/phonon directory
-for example problems that can be post-processed with this tool.
-
-This tool was written by Ling-Ti Kong at Shanghai Jiao Tong
-University.
-
-:line
-
-polybond tool :h3,link(polybond)
-
-The polybond sub-directory contains a Python-based tool useful for
-performing "programmable polymer bonding".  The Python file
-lmpsdata.py provides a "Lmpsdata" class with various methods which can
-be invoked by a user-written Python script to create data files with
-complex bonding topologies.
-
-See the Manual.pdf for details and example scripts.
-
-This tool was written by Zachary Kraus at Georgia Tech.
-
-:line
-
-pymol_asphere tool :h3,link(pymol)
-
-The pymol_asphere sub-directory contains a tool for converting a
-LAMMPS dump file that contains orientation info for ellipsoidal
-particles into an input file for the "PyMol visualization
-package"_pymolhome or its "open source variant"_pymolopen.
-
-:link(pymolhome,http://www.pymol.org)
-:link(pymolopen,http://sourceforge.net/scm/?type=svn&group_id=4546)
-
-Specifically, the tool triangulates the ellipsoids so they can be
-viewed as true ellipsoidal particles within PyMol.  See the README and
-examples directory within pymol_asphere for more information.
-
-This tool was written by Mike Brown at Sandia.
-
-:line
-
-python tool :h3,link(pythontools)
-
-The python sub-directory contains several Python scripts
-that perform common LAMMPS post-processing tasks, such as:
-
-extract thermodynamic info from a log file as columns of numbers
-plot two columns of thermodynamic info from a log file using GnuPlot
-sort the snapshots in a dump file by atom ID
-convert multiple "NEB"_neb.html dump files into one dump file for viz
-convert dump files into XYZ, CFG, or PDB format for viz by other packages :ul
-
-These are simple scripts built on "Pizza.py"_pizza modules.  See the
-README for more info on Pizza.py and how to use these scripts.
-
-:line
-
-reax tool :h3,link(reax_tool)
-
-The reax sub-directory contains stand-alond codes that can
-post-process the output of the "fix reax/bonds"_fix_reax_bonds.html
-command from a LAMMPS simulation using "ReaxFF"_pair_reax.html.  See
-the README.txt file for more info.
-
-These tools were written by Aidan Thompson at Sandia.
-
-:line
-
-smd tool :h3,link(smd)
-
-The smd sub-directory contains a C++ file dump2vtk_tris.cpp and
-Makefile which can be compiled and used to convert triangle output
-files created by the Smooth-Mach Dynamics (USER-SMD) package into a
-VTK-compatible unstructured grid file.  It could then be read in and
-visualized by VTK.
-
-See the header of dump2vtk.cpp for more details.
-
-This tool was written by the USER-SMD package author, Georg
-Ganzenmuller at the Fraunhofer-Institute for High-Speed Dynamics,
-Ernst Mach Institute in Germany (georg.ganzenmueller at emi.fhg.de).
-
-:line
-
-vim tool :h3,link(vim)
-
-The files in the tools/vim directory are add-ons to the VIM editor
-that allow easier editing of LAMMPS input scripts.  See the README.txt
-file for details.
-
-These files were provided by Gerolf Ziegenhain (gerolf at
-ziegenhain.com)
-
-:line
-
-xmgrace tool :h3,link(xmgrace)
-
-The files in the tools/xmgrace directory can be used to plot the
-thermodynamic data in LAMMPS log files via the xmgrace plotting
-package.  There are several tools in the directory that can be used in
-post-processing mode.  The lammpsplot.cpp file can be compiled and
-used to create plots from the current state of a running LAMMPS
-simulation.
-
-See the README file for details.
-
-These files were provided by Vikas Varshney (vv0210 at gmail.com)
-
-- 
GitLab


From 8385f5666bef66882a3d5d7aebd41593db0e6900 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Tue, 24 Jul 2018 14:43:48 -0600
Subject: [PATCH 087/243] link changes for new Tools.html

---
 doc/src/Section_howto.txt  | 18 +++++++++---------
 doc/src/Section_intro.txt  | 18 +++++++++---------
 doc/src/Section_modify.txt |  4 ++--
 doc/src/Section_perf.txt   |  4 +++-
 doc/src/dump.txt           | 18 +++++++++---------
 5 files changed, 32 insertions(+), 30 deletions(-)

diff --git a/doc/src/Section_howto.txt b/doc/src/Section_howto.txt
index 2784858f02..a46b29c73b 100644
--- a/doc/src/Section_howto.txt
+++ b/doc/src/Section_howto.txt
@@ -188,9 +188,9 @@ used in the CHARMM, AMBER, and DREIDING force fields.  Setting
 coefficients is done in the input data file via the
 "read_data"_read_data.html command or in the input script with
 commands like "pair_coeff"_pair_coeff.html or
-"bond_coeff"_bond_coeff.html.  See "Section 9"_Section_tools.html
-for additional tools that can use CHARMM or AMBER to assign force
-field coefficients and convert their output into LAMMPS input.
+"bond_coeff"_bond_coeff.html.  See the "Tools"_Tools.html doc page for
+additional tools that can use CHARMM or AMBER to assign force field
+coefficients and convert their output into LAMMPS input.
 
 See "(MacKerell)"_#howto-MacKerell for a description of the CHARMM force
 field.  See "(Cornell)"_#howto-Cornell for a description of the AMBER force
@@ -762,12 +762,12 @@ simulations can be visualized (and analyzed) in a variety of ways.
 LAMMPS snapshots are created by the "dump"_dump.html command which can
 create files in several formats. The native LAMMPS dump format is a
 text file (see "dump atom" or "dump custom") which can be visualized
-by several popular visualization tools. The "dump image"_dump_image.html
-and "dump movie"_dump_image.html styles can output internally rendered
-images and convert a sequence of them to a movie during the MD run.
-Several programs included with LAMMPS as auxiliary tools can convert
-between LAMMPS format files and other formats.
-See the "Section 9"_Section_tools.html doc page for details.
+by several popular visualization tools. The "dump
+image"_dump_image.html and "dump movie"_dump_image.html styles can
+output internally rendered images and convert a sequence of them to a
+movie during the MD run.  Several programs included with LAMMPS as
+auxiliary tools can convert between LAMMPS format files and other
+formats.  See the "Tools"_Tools.html doc page for details.
 
 A Python-based toolkit distributed by our group can read native LAMMPS
 dump files, including custom dump files with additional columns of
diff --git a/doc/src/Section_intro.txt b/doc/src/Section_intro.txt
index 67293b2ee3..fd1d702d0b 100644
--- a/doc/src/Section_intro.txt
+++ b/doc/src/Section_intro.txt
@@ -234,8 +234,8 @@ Multi-replica models :h4
 
 Pre- and post-processing :h4
 
-Various pre- and post-processing serial tools are packaged
-with LAMMPS; see these "doc pages"_Section_tools.html. :ulb,l
+Various pre- and post-processing serial tools are packaged with
+LAMMPS; see the "Tools"_Tools.html doc page for details. :ulb,l
 
 Our group has also written and released a separate toolkit called
 "Pizza.py"_pizza which provides tools for doing setup, analysis,
@@ -296,9 +296,9 @@ visualize your MD simulation
 plot your output data :ul
 
 A few tools for pre- and post-processing tasks are provided as part of
-the LAMMPS package; they are described in "this
-section"_Section_tools.html.  However, many people use other codes or
-write their own tools for these tasks.
+the LAMMPS package; they are described on the "Tools"_Tools.html doc
+page.  However, many people use other codes or write their own tools
+for these tasks.
 
 As noted above, our group has also written and released a separate
 toolkit called "Pizza.py"_pizza which addresses some of the listed
@@ -327,8 +327,8 @@ topology information and hundreds of force-field coefficients must
 typically be specified.  We suggest you use a program like
 "CHARMM"_charmm or "AMBER"_amber or other molecular builders to setup
 such problems and dump its information to a file.  You can then
-reformat the file as LAMMPS input.  Some of the tools in "this
-section"_Section_tools.html can assist in this process.
+reformat the file as LAMMPS input.  Some of the tools described on the
+"Tools"_Tools.html doc page can assist in this process.
 
 Similarly, LAMMPS creates output files in a simple format.  Most users
 post-process these files with their own analysis tools or re-format
@@ -442,8 +442,8 @@ directory. :l
 
 The tools sub-directory of the LAMMPS distribution has various
 stand-alone codes for pre- and post-processing of LAMMPS data.  More
-details are given in "Section 9"_Section_tools.html.  If you write
-a new tool that users will find useful, it can be added to the LAMMPS
+details are given on the "Tools"_Tools.html doc page.  If you write a
+new tool that users will find useful, it can be added to the LAMMPS
 distribution. :l
 
 LAMMPS is designed to be easy to extend with new code for features
diff --git a/doc/src/Section_modify.txt b/doc/src/Section_modify.txt
index f1d55758c8..6948ac062a 100644
--- a/doc/src/Section_modify.txt
+++ b/doc/src/Section_modify.txt
@@ -1,5 +1,5 @@
- "Previous Section"_Section_tools.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+ "Previous Section"_Tools.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc - "Next
 Section"_Section_python.html :c
 
 :link(lws,http://lammps.sandia.gov)
diff --git a/doc/src/Section_perf.txt b/doc/src/Section_perf.txt
index 9998cb0d9a..56b1d7dd04 100644
--- a/doc/src/Section_perf.txt
+++ b/doc/src/Section_perf.txt
@@ -1,4 +1,6 @@
-"Previous Section"_Section_example.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_tools.html :c
+"Previous Section"_Section_example.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Tools.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/dump.txt b/doc/src/dump.txt
index 438ff1d4e0..d130846519 100644
--- a/doc/src/dump.txt
+++ b/doc/src/dump.txt
@@ -1,4 +1,4 @@
- "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -184,10 +184,10 @@ file and in what format.  Settings made via the
 individual values and the file itself.
 
 The {atom}, {local}, and {custom} styles create files in a simple text
-format that is self-explanatory when viewing a dump file.  Many of the
-LAMMPS "post-processing tools"_Section_tools.html, including
-"Pizza.py"_http://www.sandia.gov/~sjplimp/pizza.html, work with this
-format, as does the "rerun"_rerun.html command.
+format that is self-explanatory when viewing a dump file.  Some of the
+LAMMPS post-processing tools described on the "Tools"_Tools.html doc
+page, including "Pizza.py"_http://www.sandia.gov/~sjplimp/pizza.html,
+work with this format, as does the "rerun"_rerun.html command.
 
 For post-processing purposes the {atom}, {local}, and {custom} text
 files are self-describing in the following sense.
@@ -413,10 +413,10 @@ If the filename ends with ".bin", the dump file (or files, if "*" or
 will be about the same size as a text version, but will typically
 write out much faster.  Of course, when post-processing, you will need
 to convert it back to text format (see the "binary2txt
-tool"_Section_tools.html#binary) or write your own code to read the
-binary file.  The format of the binary file can be understood by
-looking at the tools/binary2txt.cpp file.  This option is only
-available for the {atom} and {custom} styles.
+tool"_Tools.html#binary) or write your own code to read the binary
+file.  The format of the binary file can be understood by looking at
+the tools/binary2txt.cpp file.  This option is only available for the
+{atom} and {custom} styles.
 
 If the filename ends with ".gz", the dump file (or files, if "*" or "%"
 is also used) is written in gzipped format.  A gzipped dump file will
-- 
GitLab


From c3661272f17cbb0b0aed0cfb6bcbe8cb5f365d5c Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 24 Jul 2018 19:55:39 -0400
Subject: [PATCH 088/243] re-allow commands after an exception was caught
 inside a run.

after an exception "all bets are off",
i.e. the user should be allowed to do anything to recover.
through setting Update::whichflag to 0, the guard against running commands during a run is removed.
---
 src/error.cpp | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/error.cpp b/src/error.cpp
index d516050385..3feaf1d1ac 100644
--- a/src/error.cpp
+++ b/src/error.cpp
@@ -16,6 +16,7 @@
 #include <cstring>
 #include "error.h"
 #include "universe.h"
+#include "update.h"
 #include "output.h"
 #include "input.h"
 
@@ -69,6 +70,10 @@ void Error::universe_all(const char *file, int line, const char *str)
   if (universe->ulogfile) fclose(universe->ulogfile);
 
 #ifdef LAMMPS_EXCEPTIONS
+
+  // allow commands if an exception was caught in a run
+  update->whichflag = 0;
+
   char msg[100];
   sprintf(msg, "ERROR: %s (%s:%d)\n", str, file, line);
   throw LAMMPSException(msg);
@@ -90,6 +95,10 @@ void Error::universe_one(const char *file, int line, const char *str)
             universe->me,str,truncpath(file),line);
 
 #ifdef LAMMPS_EXCEPTIONS
+
+  // allow commands if an exception was caught in a run
+  update->whichflag = 0;
+
   char msg[100];
   sprintf(msg, "ERROR: %s (%s:%d)\n", str, file, line);
   throw LAMMPSAbortException(msg, universe->uworld);
@@ -137,6 +146,10 @@ void Error::all(const char *file, int line, const char *str)
   }
 
 #ifdef LAMMPS_EXCEPTIONS
+
+  // allow commands if an exception was caught in a run
+  update->whichflag = 0;
+
   char msg[100];
   sprintf(msg, "ERROR: %s (%s:%d)\n", str, file, line);
 
@@ -183,6 +196,10 @@ void Error::one(const char *file, int line, const char *str)
               universe->me,str,truncpath(file),line);
 
 #ifdef LAMMPS_EXCEPTIONS
+
+  // allow commands if an exception was caught in a run
+  update->whichflag = 0;
+
   char msg[100];
   sprintf(msg, "ERROR on proc %d: %s (%s:%d)\n", me, str, file, line);
   throw LAMMPSAbortException(msg, world);
-- 
GitLab


From 678df2498acbf439d1eee9a02070f9a2956f49c9 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 25 Jul 2018 09:32:02 -0400
Subject: [PATCH 089/243] Updated lammps.book

---
 doc/src/lammps.book | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index 06f4bf3718..fe8eb13161 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -14,7 +14,7 @@ accelerate_opt.html
 Section_howto.html
 Section_example.html
 Section_perf.html
-Section_tools.html
+Tools.html
 Section_modify.html
 Section_python.html
 Section_errors.html
-- 
GitLab


From 7ac3f08eec6c17c5666bbaa0083a0c8f7569e6ab Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 25 Jul 2018 09:39:18 -0400
Subject: [PATCH 090/243] Fix typo

---
 doc/src/Tools.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/src/Tools.txt b/doc/src/Tools.txt
index 8fc371c4ef..859bb9d50c 100644
--- a/doc/src/Tools.txt
+++ b/doc/src/Tools.txt
@@ -29,7 +29,7 @@ The last link for "Pizza.py"_pizza is a Python-based tool developed at
 Sandia which provides tools for doing setup, analysis, plotting, and
 visualization for LAMMPS simulations.
 
-"link(pizza,http://pizza.sandia.gov)
+:link(pizza,http://pizza.sandia.gov)
 :link(python,http://www.python.org)
 
 Additional tools included in the LAMMPS distribution are described on
-- 
GitLab


From 80d85841af82b105ea2b6bd5afe35b765dee7df3 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 25 Jul 2018 08:15:25 -0600
Subject: [PATCH 091/243] one more tweak on a link

---
 doc/src/Tools.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/src/Tools.txt b/doc/src/Tools.txt
index 859bb9d50c..0674e3cfcc 100644
--- a/doc/src/Tools.txt
+++ b/doc/src/Tools.txt
@@ -10,7 +10,7 @@ Section"_Modify.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Commands.html#comm)
+:link(lc,Section_commands.html#comm)
 
 :line
 
-- 
GitLab


From 22c9258b8e78f74c50ced55c88307d3ed5d55d0b Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 25 Jul 2018 09:27:13 -0600
Subject: [PATCH 092/243] doc changes for Examples and Modify sections

---
 doc/src/{Section_example.txt => Examples.txt} |  16 +-
 doc/src/Manual.txt                            |  39 +-
 doc/src/Modify.txt                            |  76 ++
 doc/src/Modify_atom.txt                       |  90 ++
 doc/src/Modify_body.txt                       |  35 +
 doc/src/Modify_bond.txt                       |  33 +
 doc/src/Modify_command.txt                    |  27 +
 doc/src/Modify_compute.txt                    |  49 ++
 doc/src/Modify_contribute.txt                 | 210 +++++
 doc/src/Modify_dump.txt                       |  35 +
 doc/src/Modify_fix.txt                        | 107 +++
 doc/src/Modify_kspace.txt                     |  25 +
 doc/src/Modify_min.txt                        |  23 +
 doc/src/Modify_overview.txt                   | 101 +++
 doc/src/Modify_pair.txt                       |  33 +
 doc/src/Modify_region.txt                     |  25 +
 doc/src/Modify_thermo.txt                     |  35 +
 doc/src/Modify_variable.txt                   |  46 +
 doc/src/Section_commands.txt                  |   8 +-
 doc/src/Section_howto.txt                     |  35 +-
 doc/src/Section_intro.txt                     |  17 +-
 doc/src/Section_modify.txt                    | 827 ------------------
 doc/src/Section_packages.txt                  |   3 +-
 doc/src/Section_perf.txt                      |   6 +-
 doc/src/Section_python.txt                    |   4 +-
 doc/src/Tools.txt                             |   4 +-
 doc/src/atom_style.txt                        |   2 +-
 doc/src/body.txt                              |   4 +-
 doc/src/compute.txt                           |   4 +-
 doc/src/compute_chunk_atom.txt                |   4 +-
 doc/src/compute_global_atom.txt               |   8 +-
 doc/src/compute_reduce.txt                    |   8 +-
 doc/src/compute_slice.txt                     |   4 +-
 doc/src/dump.txt                              |   6 +-
 doc/src/dump_image.txt                        |   6 +-
 doc/src/fix.txt                               |   6 +-
 doc/src/fix_ave_atom.txt                      |   6 +-
 doc/src/fix_ave_chunk.txt                     |   4 +-
 doc/src/fix_ave_correlate.txt                 |   4 +-
 doc/src/fix_ave_histo.txt                     |  12 +-
 doc/src/fix_ave_time.txt                      |   4 +-
 doc/src/fix_controller.txt                    |   4 +-
 doc/src/fix_property_atom.txt                 |   6 +-
 doc/src/fix_vector.txt                        |   4 +-
 doc/src/lammps.book                           |   4 +-
 doc/src/run.txt                               |   5 +-
 doc/src/thermo_style.txt                      |  11 +-
 doc/src/tutorial_github.txt                   |   4 +-
 48 files changed, 1063 insertions(+), 966 deletions(-)
 rename doc/src/{Section_example.txt => Examples.txt} (94%)
 create mode 100644 doc/src/Modify.txt
 create mode 100644 doc/src/Modify_atom.txt
 create mode 100644 doc/src/Modify_body.txt
 create mode 100644 doc/src/Modify_bond.txt
 create mode 100644 doc/src/Modify_command.txt
 create mode 100644 doc/src/Modify_compute.txt
 create mode 100644 doc/src/Modify_contribute.txt
 create mode 100644 doc/src/Modify_dump.txt
 create mode 100644 doc/src/Modify_fix.txt
 create mode 100644 doc/src/Modify_kspace.txt
 create mode 100644 doc/src/Modify_min.txt
 create mode 100644 doc/src/Modify_overview.txt
 create mode 100644 doc/src/Modify_pair.txt
 create mode 100644 doc/src/Modify_region.txt
 create mode 100644 doc/src/Modify_thermo.txt
 create mode 100644 doc/src/Modify_variable.txt
 delete mode 100644 doc/src/Section_modify.txt

diff --git a/doc/src/Section_example.txt b/doc/src/Examples.txt
similarity index 94%
rename from doc/src/Section_example.txt
rename to doc/src/Examples.txt
index a2a9940f48..4935c96257 100644
--- a/doc/src/Section_example.txt
+++ b/doc/src/Examples.txt
@@ -1,4 +1,12 @@
-"Previous Section"_Section_howto.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_perf.html :c
+"Previous Section"_Section_howto.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Section_perf.html :c
+
+<!-- future sequence of sections:
+"Previous Section"_Speed.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Python.html :c
+-->
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -6,7 +14,7 @@
 
 :line
 
-7. Example problems :h2
+Example scripts :h3
 
 The LAMMPS distribution includes an examples sub-directory with many
 sample problems.  Many are 2d models that run quickly are are
@@ -46,7 +54,7 @@ Lists of both kinds of directories are given below.
 
 :line
 
-Lowercase directories :h3
+Lowercase directories :h4
 
 accelerate: run with various acceleration options (OpenMP, GPU, Phi)
 airebo:   polyethylene with AIREBO potential
@@ -122,7 +130,7 @@ browser.
 
 :line
 
-Uppercase directories :h3
+Uppercase directories :h4
 
 ASPHERE: various aspherical particle models, using ellipsoids, rigid bodies, line/triangle particles, etc
 COUPLE: examples of how to use LAMMPS as a library
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index d6d46570c1..18ae1c4b61 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -114,10 +114,10 @@ it gives quick access to documentation for all LAMMPS commands.
    Section_packages
    Section_accelerate
    Section_howto
-   Section_example
+   Examples
    Section_perf
    Tools
-   Section_modify
+   Modify
    Section_python
    Section_errors
    Section_history
@@ -208,25 +208,10 @@ END_RST -->
   6.25 "Polarizable models"_howto_25 :b
   6.26 "Adiabatic core/shell model"_howto_26 :b
   6.27 "Drude induced dipoles"_howto_27 :ule,b
-"Example problems"_Section_example.html :l
+"Example scripts"_Examples.html :l
 "Performance & scalability"_Section_perf.html :l
 "Auxiliary tools"_Tools.html :l
-"Modifying & extending LAMMPS"_Section_modify.html :l
-  10.1 "Atom styles"_mod_1 :ulb,b
-  10.2 "Bond, angle, dihedral, improper potentials"_mod_2 :b
-  10.3 "Compute styles"_mod_3 :b
-  10.4 "Dump styles"_mod_4 :b
-  10.5 "Dump custom output options"_mod_5 :b
-  10.6 "Fix styles"_mod_6 :b
-  10.7 "Input script commands"_mod_7 :b
-  10.8 "Kspace computations"_mod_8 :b
-  10.9 "Minimization styles"_mod_9 :b
-  10.10 "Pairwise potentials"_mod_10 :b
-  10.11 "Region styles"_mod_11 :b
-  10.12 "Body styles"_mod_12 :b
-  10.13 "Thermodynamic output options"_mod_13 :b
-  10.14 "Variable options"_mod_14 :b
-  10.15 "Submitting new features for inclusion in LAMMPS"_mod_15 :ule,b
+"Modify & extend LAMMPS"_Modify.html :l
 "Python interface"_Section_python.html :l
   11.1 "Overview of running LAMMPS from Python"_py_1 :ulb,b
   11.2 "Overview of using Python from a LAMMPS script"_py_2 :b
@@ -302,22 +287,6 @@ END_RST -->
 :link(howto_26,Section_howto.html#howto_26)
 :link(howto_27,Section_howto.html#howto_27)
 
-:link(mod_1,Section_modify.html#mod_1)
-:link(mod_2,Section_modify.html#mod_2)
-:link(mod_3,Section_modify.html#mod_3)
-:link(mod_4,Section_modify.html#mod_4)
-:link(mod_5,Section_modify.html#mod_5)
-:link(mod_6,Section_modify.html#mod_6)
-:link(mod_7,Section_modify.html#mod_7)
-:link(mod_8,Section_modify.html#mod_8)
-:link(mod_9,Section_modify.html#mod_9)
-:link(mod_10,Section_modify.html#mod_10)
-:link(mod_11,Section_modify.html#mod_11)
-:link(mod_12,Section_modify.html#mod_12)
-:link(mod_13,Section_modify.html#mod_13)
-:link(mod_14,Section_modify.html#mod_14)
-:link(mod_15,Section_modify.html#mod_15)
-
 :link(py_1,Section_python.html#py_1)
 :link(py_2,Section_python.html#py_2)
 :link(py_3,Section_python.html#py_3)
diff --git a/doc/src/Modify.txt b/doc/src/Modify.txt
new file mode 100644
index 0000000000..f7d94c89e9
--- /dev/null
+++ b/doc/src/Modify.txt
@@ -0,0 +1,76 @@
+"Previous Section"_Tools.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Section_python.html :c
+
+<!-- future sequence of sections:
+"Previous Section"_Tools.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Errors.html :c
+-->
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Modify & extend LAMMPS :h3
+
+LAMMPS is designed in a modular fashion so as to be easy to modify and
+extend with new functionality.  In fact, about 95% of its source code
+is add-on files.  These doc pages give basic instructions on how to do
+this.
+
+If you add a new feature to LAMMPS and think it will be of interest to
+general users, we encourage you to submit it for inclusion in LAMMPS
+as a pull request on our "GitHub
+site"_https://github.com/lammps/lammps, after reading the "Modify
+contribute"_Modify_contribute.html doc page.
+
+<!-- RST
+
+.. toctree::
+
+   Modify_overview
+   Modify_contribute
+
+   Modify_atom
+   Modify_pair
+   Modify_bond
+   Modify_compute
+   Modify_fix
+   Modify_command
+
+   Modify_dump
+   Modify_kspace
+   Modify_min
+   Modify_region
+   Modify_body
+
+   Modify_thermo
+   Modify_variable
+
+END_RST -->
+
+<!-- HTML_ONLY -->
+
+"Overview"_Modify_overview.html
+"Submitting new features for inclusion in LAMMPS"_Modify_contribute.html :all(b)
+
+"Atom styles"_Modify_atom.html
+"Pair styles"_Modify_pair.html
+"Bond, angle, dihedral, improper styles"_Modify_bond.html
+"Compute styles"_Modify_compute.html
+"Fix styles"_Modify_fix.html
+"Input script command styles"_Modify_command.html :all(b)
+
+"Dump styles"_Modify_dump.html
+"Kspace styles"_Modify_kspace.html
+"Minimization styles"_Modify_min.html
+"Region styles"_Modify_region.html
+"Body styles"_Modify_body.html :all(b)
+
+"Thermodynamic output options"_Modify_thermo.html
+"Variable options"_Modify_variable.html :all(b)
+
+<!-- END_HTML_ONLY -->
diff --git a/doc/src/Modify_atom.txt b/doc/src/Modify_atom.txt
new file mode 100644
index 0000000000..afa1c319d2
--- /dev/null
+++ b/doc/src/Modify_atom.txt
@@ -0,0 +1,90 @@
+"Higher level section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Atom styles :h3
+
+Classes that define an "atom style"_atom_style.html are derived from
+the AtomVec class and managed by the Atom class.  The atom style
+determines what attributes are associated with an atom.  A new atom
+style can be created if one of the existing atom styles does not
+define all the attributes you need to store and communicate with
+atoms.
+
+Atom_vec_atomic.cpp is a simple example of an atom style.
+
+Here is a brief description of methods you define in your new derived
+class.  See atom_vec.h for details.
+
+init: one time setup (optional)
+grow: re-allocate atom arrays to longer lengths (required)
+grow_reset: make array pointers in Atom and AtomVec classes consistent (required)
+copy: copy info for one atom to another atom's array locations (required)
+pack_comm: store an atom's info in a buffer communicated every timestep (required)
+pack_comm_vel: add velocity info to communication buffer (required)
+pack_comm_hybrid: store extra info unique to this atom style (optional)
+unpack_comm: retrieve an atom's info from the buffer (required)
+unpack_comm_vel: also retrieve velocity info (required)
+unpack_comm_hybrid: retrieve extra info unique to this atom style (optional)
+pack_reverse: store an atom's info in a buffer communicating partial forces  (required)
+pack_reverse_hybrid: store extra info unique to this atom style (optional)
+unpack_reverse: retrieve an atom's info from the buffer (required)
+unpack_reverse_hybrid: retrieve extra info unique to this atom style (optional)
+pack_border: store an atom's info in a buffer communicated on neighbor re-builds (required)
+pack_border_vel: add velocity info to buffer (required)
+pack_border_hybrid: store extra info unique to this atom style (optional)
+unpack_border: retrieve an atom's info from the buffer (required)
+unpack_border_vel: also retrieve velocity info (required)
+unpack_border_hybrid: retrieve extra info unique to this atom style (optional)
+pack_exchange: store all an atom's info to migrate to another processor (required)
+unpack_exchange: retrieve an atom's info from the buffer (required)
+size_restart: number of restart quantities associated with proc's atoms (required)
+pack_restart: pack atom quantities into a buffer (required)
+unpack_restart: unpack atom quantities from a buffer (required)
+create_atom: create an individual atom of this style (required)
+data_atom: parse an atom line from the data file (required)
+data_atom_hybrid: parse additional atom info unique to this atom style (optional)
+data_vel: parse one line of velocity information from data file (optional)
+data_vel_hybrid: parse additional velocity data unique to this atom style (optional)
+memory_usage: tally memory allocated by atom arrays (required) :tb(s=:)
+
+The constructor of the derived class sets values for several variables
+that you must set when defining a new atom style, which are documented
+in atom_vec.h.  New atom arrays are defined in atom.cpp.  Search for
+the word "customize" and you will find locations you will need to
+modify.
+
+NOTE: It is possible to add some attributes, such as a molecule ID, to
+atom styles that do not have them via the "fix
+property/atom"_fix_property_atom.html command.  This command also
+allows new custom attributes consisting of extra integer or
+floating-point values to be added to atoms.  See the "fix
+property/atom"_fix_property_atom.html doc page for examples of cases
+where this is useful and details on how to initialize, access, and
+output the custom values.
+
+New "pair styles"_pair_style.html, "fixes"_fix.html, or
+"computes"_compute.html can be added to LAMMPS, as discussed below.
+The code for these classes can use the per-atom properties defined by
+fix property/atom.  The Atom class has a find_custom() method that is
+useful in this context:
+
+int index = atom->find_custom(char *name, int &flag); :pre
+
+The "name" of a custom attribute, as specified in the "fix
+property/atom"_fix_property_atom.html command, is checked to verify
+that it exists and its index is returned.  The method also sets flag =
+0/1 depending on whether it is an integer or floating-point attribute.
+The vector of values associated with the attribute can then be
+accessed using the returned index as
+
+int *ivector = atom->ivector\[index\];
+double *dvector = atom->dvector\[index\]; :pre
+
+Ivector or dvector are vectors of length Nlocal = # of owned atoms,
+which store the attributes of individual atoms.
diff --git a/doc/src/Modify_body.txt b/doc/src/Modify_body.txt
new file mode 100644
index 0000000000..b1dc8130cd
--- /dev/null
+++ b/doc/src/Modify_body.txt
@@ -0,0 +1,35 @@
+"Higher level section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Body styles :h3
+
+Classes that define body particles are derived from the Body class.
+Body particles can represent complex entities, such as surface meshes
+of discrete points, collections of sub-particles, deformable objects,
+etc.
+
+See "Section 6.14"_Section_howto.html#howto_14 of the manual for
+an overview of using body particles and the "body"_body.html doc page
+for details on the various body styles LAMMPS supports.  New styles
+can be created to add new kinds of body particles to LAMMPS.
+
+Body_nparticle.cpp is an example of a body particle that is treated as
+a rigid body containing N sub-particles.
+
+Here is a brief description of methods you define in your new derived
+class.  See body.h for details.
+
+data_body: process a line from the Bodies section of a data file
+noutrow: number of sub-particles output is generated for
+noutcol: number of values per-sub-particle output is generated for
+output: output values for the Mth sub-particle
+pack_comm_body: body attributes to communicate every timestep
+unpack_comm_body: unpacking of those attributes
+pack_border_body: body attributes to communicate when reneighboring is done
+unpack_border_body: unpacking of those attributes :tb(s=:)
diff --git a/doc/src/Modify_bond.txt b/doc/src/Modify_bond.txt
new file mode 100644
index 0000000000..f0828a0c3b
--- /dev/null
+++ b/doc/src/Modify_bond.txt
@@ -0,0 +1,33 @@
+"Higher level section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Bond, angle, dihedral, improper styles :h3
+
+Classes that compute molecular interactions are derived from the Bond,
+Angle, Dihedral, and Improper classes.  New styles can be created to
+add new potentials to LAMMPS.
+
+Bond_harmonic.cpp is the simplest example of a bond style.  Ditto for
+the harmonic forms of the angle, dihedral, and improper style
+commands.
+
+Here is a brief description of common methods you define in your
+new derived class.  See bond.h, angle.h, dihedral.h, and improper.h
+for details and specific additional methods.
+
+init: check if all coefficients are set, calls {init_style} (optional)
+init_style: check if style specific conditions are met (optional)
+compute: compute the molecular interactions (required)
+settings: apply global settings for all types (optional)
+coeff: set coefficients for one type (required)
+equilibrium_distance: length of bond, used by SHAKE (required, bond only)
+equilibrium_angle: opening of angle, used by SHAKE (required, angle only)
+write & read_restart: writes/reads coeffs to restart files (required)
+single: force and energy of a single bond or angle (required, bond or angle only)
+memory_usage: tally memory allocated by the style (optional) :tb(s=:)
diff --git a/doc/src/Modify_command.txt b/doc/src/Modify_command.txt
new file mode 100644
index 0000000000..6fc9aad1fc
--- /dev/null
+++ b/doc/src/Modify_command.txt
@@ -0,0 +1,27 @@
+"Higher level section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Input script command style :h3
+
+New commands can be added to LAMMPS input scripts by adding new
+classes that have a "command" method.  For example, the create_atoms,
+read_data, velocity, and run commands are all implemented in this
+fashion.  When such a command is encountered in the LAMMPS input
+script, LAMMPS simply creates a class with the corresponding name,
+invokes the "command" method of the class, and passes it the arguments
+from the input script.  The command method can perform whatever
+operations it wishes on LAMMPS data structures.
+
+The single method your new class must define is as follows:
+
+command: operations performed by the new command :tb(s=:)
+
+Of course, the new class can define other methods and variables as
+needed.
+
diff --git a/doc/src/Modify_compute.txt b/doc/src/Modify_compute.txt
new file mode 100644
index 0000000000..b02b8a983e
--- /dev/null
+++ b/doc/src/Modify_compute.txt
@@ -0,0 +1,49 @@
+"Higher level section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Compute styles :h3
+
+Classes that compute scalar and vector quantities like temperature
+and the pressure tensor, as well as classes that compute per-atom
+quantities like kinetic energy and the centro-symmetry parameter
+are derived from the Compute class.  New styles can be created
+to add new calculations to LAMMPS.
+
+Compute_temp.cpp is a simple example of computing a scalar
+temperature.  Compute_ke_atom.cpp is a simple example of computing
+per-atom kinetic energy.
+
+Here is a brief description of methods you define in your new derived
+class.  See compute.h for details.
+
+init: perform one time setup (required)
+init_list: neighbor list setup, if needed (optional)
+compute_scalar: compute a scalar quantity (optional)
+compute_vector: compute a vector of quantities (optional)
+compute_peratom: compute one or more quantities per atom (optional)
+compute_local: compute one or more quantities per processor (optional)
+pack_comm: pack a buffer with items to communicate (optional)
+unpack_comm: unpack the buffer (optional)
+pack_reverse: pack a buffer with items to reverse communicate (optional)
+unpack_reverse: unpack the buffer (optional)
+remove_bias: remove velocity bias from one atom (optional)
+remove_bias_all: remove velocity bias from all atoms in group (optional)
+restore_bias: restore velocity bias for one atom after remove_bias (optional)
+restore_bias_all: same as before, but for all atoms in group (optional)
+pair_tally_callback: callback function for {tally}-style computes (optional).
+memory_usage: tally memory usage (optional) :tb(s=:)
+
+Tally-style computes are a special case, as their computation is done
+in two stages: the callback function is registered with the pair style
+and then called from the Pair::ev_tally() function, which is called for
+each pair after force and energy has been computed for this pair. Then
+the tallied values are retrieved with the standard compute_scalar or
+compute_vector or compute_peratom methods. The USER-TALLY package
+provides {examples}_compute_tally.html for utilizing this mechanism.
+
diff --git a/doc/src/Modify_contribute.txt b/doc/src/Modify_contribute.txt
new file mode 100644
index 0000000000..80795b5e20
--- /dev/null
+++ b/doc/src/Modify_contribute.txt
@@ -0,0 +1,210 @@
+"Higher level section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Submitting new features for inclusion in LAMMPS :h3
+
+We encourage users to submit new features or modifications for LAMMPS
+to "the core developers"_http://lammps.sandia.gov/authors.html so they
+can be added to the LAMMPS distribution. The preferred way to manage
+and coordinate this is as of Fall 2016 via the LAMMPS project on
+"GitHub"_https://github.com/lammps/lammps. An alternative is to
+contact the LAMMPS developers or the indicated developer of a package
+or feature directly and send in your contribution via e-mail.
+
+For any larger modifications or programming project, you are
+encouraged to contact the LAMMPS developers ahead of time, in order to
+discuss implementation strategies and coding guidelines, that will
+make it easier to integrate your contribution and result in less work
+for everybody involved. You are also encouraged to search through the
+list of "open issues on
+GitHub"_https://github.com/lammps/lammps/issues and submit a new issue
+for a planned feature, so you would not duplicate the work of others
+(and possibly get scooped by them) or have your work duplicated by
+others.
+
+How quickly your contribution will be integrated depends largely on
+how much effort it will cause to integrate and test it, how much it
+requires changes to the core codebase, and of how much interest it is
+to the larger LAMMPS community.  Please see below for a checklist of
+typical requirements. Once you have prepared everything, see "this
+tutorial"_tutorial_github.html for instructions on how to submit your
+changes or new files through a GitHub pull request. If you prefer to
+submit patches or full files, you should first make certain, that your
+code works correctly with the latest patch-level version of LAMMPS and
+contains all bugfixes from it. Then create a gzipped tar file of all
+changed or added files or a corresponding patch file using 'diff -u'
+or 'diff -c' and compress it with gzip. Please only use gzip
+compression, as this works well on all platforms.
+
+If the new features/files are broadly useful we may add them as core
+files to LAMMPS or as part of a "standard
+package"_Section_start.html#start_3.  Else we will add them as a
+user-contributed file or package.  Examples of user packages are in
+src sub-directories that start with USER.  The USER-MISC package is
+simply a collection of (mostly) unrelated single files, which is the
+simplest way to have your contribution quickly added to the LAMMPS
+distribution.  You can see a list of the both standard and user
+packages by typing "make package" in the LAMMPS src directory.
+
+Note that by providing us files to release, you are agreeing to make
+them open-source, i.e. we can release them under the terms of the GPL,
+used as a license for the rest of LAMMPS.  See "Section
+1.4"_Section_intro.html#intro_4 for details.
+
+With user packages and files, all we are really providing (aside from
+the fame and fortune that accompanies having your name in the source
+code and on the "Authors page"_http://lammps.sandia.gov/authors.html
+of the "LAMMPS WWW site"_lws), is a means for you to distribute your
+work to the LAMMPS user community, and a mechanism for others to
+easily try out your new feature.  This may help you find bugs or make
+contact with new collaborators.  Note that you're also implicitly
+agreeing to support your code which means answer questions, fix bugs,
+and maintain it if LAMMPS changes in some way that breaks it (an
+unusual event).
+
+NOTE: If you prefer to actively develop and support your add-on
+feature yourself, then you may wish to make it available for download
+from your own website, as a user package that LAMMPS users can add to
+their copy of LAMMPS.  See the "Offsite LAMMPS packages and
+tools"_http://lammps.sandia.gov/offsite.html page of the LAMMPS web
+site for examples of groups that do this.  We are happy to advertise
+your package and web site from that page.  Simply email the
+"developers"_http://lammps.sandia.gov/authors.html with info about
+your package and we will post it there.
+
+The previous sections of this doc page describe how to add new "style"
+files of various kinds to LAMMPS.  Packages are simply collections of
+one or more new class files which are invoked as a new style within a
+LAMMPS input script.  If designed correctly, these additions typically
+do not require changes to the main core of LAMMPS; they are simply
+add-on files.  If you think your new feature requires non-trivial
+changes in core LAMMPS files, you'll need to "communicate with the
+developers"_http://lammps.sandia.gov/authors.html, since we may or may
+not want to make those changes.  An example of a trivial change is
+making a parent-class method "virtual" when you derive a new child
+class from it.
+
+Here is a checklist of steps you need to follow to submit a single file
+or user package for our consideration.  Following these steps will save
+both you and us time. See existing files in packages in the src dir for
+examples. If you are uncertain, please ask.
+
+All source files you provide must compile with the most current
+version of LAMMPS with multiple configurations. In particular you
+need to test compiling LAMMPS from scratch with -DLAMMPS_BIGBIG
+set in addition to the default -DLAMMPS_SMALLBIG setting. Your code
+will need to work correctly in serial and in parallel using MPI. :ulb,l
+
+For consistency with the rest of LAMMPS and especially, if you want
+your contribution(s) to be added to main LAMMPS code or one of its
+standard packages, it needs to be written in a style compatible with
+other LAMMPS source files. This means: 2-character indentation per
+level, [no tabs], no lines over 80 characters. I/O is done via
+the C-style stdio library, class header files should not import any
+system headers outside <stdio.h>, STL containers should be avoided
+in headers, and forward declarations used where possible or needed.
+All added code should be placed into the LAMMPS_NS namespace or a
+sub-namespace; global or static variables should be avoided, as they
+conflict with the modular nature of LAMMPS and the C++ class structure.
+Header files must [not] import namespaces with {using}.
+This all is so the developers can more easily understand, integrate,
+and maintain your contribution and reduce conflicts with other parts
+of LAMMPS.  This basically means that the code accesses data
+structures, performs its operations, and is formatted similar to other
+LAMMPS source files, including the use of the error class for error
+and warning messages. :l
+
+If you want your contribution to be added as a user-contributed
+feature, and it's a single file (actually a *.cpp and *.h file) it can
+rapidly be added to the USER-MISC directory.  Send us the one-line
+entry to add to the USER-MISC/README file in that dir, along with the
+2 source files.  You can do this multiple times if you wish to
+contribute several individual features.  :l
+
+If you want your contribution to be added as a user-contribution and
+it is several related features, it is probably best to make it a user
+package directory with a name like USER-FOO.  In addition to your new
+files, the directory should contain a README text file.  The README
+should contain your name and contact information and a brief
+description of what your new package does.  If your files depend on
+other LAMMPS style files also being installed (e.g. because your file
+is a derived class from the other LAMMPS class), then an Install.sh
+file is also needed to check for those dependencies.  See other README
+and Install.sh files in other USER directories as examples.  Send us a
+tarball of this USER-FOO directory. :l
+
+Your new source files need to have the LAMMPS copyright, GPL notice,
+and your name and email address at the top, like other
+user-contributed LAMMPS source files.  They need to create a class
+that is inside the LAMMPS namespace.  If the file is for one of the
+
+USER packages, including USER-MISC, then we are not as picky about the
+coding style (see above).  I.e. the files do not need to be in the
+same stylistic format and syntax as other LAMMPS files, though that
+would be nice for developers as well as users who try to read your
+code. :l
+
+You [must] also create a [documentation] file for each new command or
+style you are adding to LAMMPS. For simplicity and convenience, the
+documentation of groups of closely related commands or styles may be
+combined into a single file.  This will be one file for a single-file
+feature.  For a package, it might be several files.  These are simple
+text files with a specific markup language, that are then auto-converted
+to HTML and PDF. The tools for this conversion are included in the
+source distribution, and the translation can be as simple as doing
+"make html pdf" in the doc folder.
+Thus the documentation source files must be in the same format and
+style as other *.txt files in the lammps/doc/src directory for similar
+commands and styles; use one or more of them as a starting point.
+A description of the markup can also be found in
+lammps/doc/utils/txt2html/README.html
+As appropriate, the text files can include links to equations
+(see doc/Eqs/*.tex for examples, we auto-create the associated JPG
+files), or figures (see doc/JPG for examples), or even additional PDF
+files with further details (see doc/PDF for examples).  The doc page
+should also include literature citations as appropriate; see the
+bottom of doc/fix_nh.txt for examples and the earlier part of the same
+file for how to format the cite itself.  The "Restrictions" section of
+the doc page should indicate that your command is only available if
+LAMMPS is built with the appropriate USER-MISC or USER-FOO package.
+See other user package doc files for examples of how to do this. The
+prerequisite for building the HTML format files are Python 3.x and
+virtualenv, the requirement for generating the PDF format manual
+is the "htmldoc"_http://www.htmldoc.org/ software. Please run at least
+"make html" and carefully inspect and proofread the resulting HTML format
+doc page before submitting your code. :l
+
+For a new package (or even a single command) you should include one or
+more example scripts demonstrating its use.  These should run in no
+more than a couple minutes, even on a single processor, and not require
+large data files as input.  See directories under examples/USER for
+examples of input scripts other users provided for their packages.
+These example inputs are also required for validating memory accesses
+and testing for memory leaks with valgrind :l
+
+If there is a paper of yours describing your feature (either the
+algorithm/science behind the feature itself, or its initial usage, or
+its implementation in LAMMPS), you can add the citation to the *.cpp
+source file.  See src/USER-EFF/atom_vec_electron.cpp for an example.
+A LaTeX citation is stored in a variable at the top of the file and a
+single line of code that references the variable is added to the
+constructor of the class.  Whenever a user invokes your feature from
+their input script, this will cause LAMMPS to output the citation to a
+log.cite file and prompt the user to examine the file.  Note that you
+should only use this for a paper you or your group authored.
+E.g. adding a cite in the code for a paper by Nose and Hoover if you
+write a fix that implements their integrator is not the intended
+usage.  That kind of citation should just be in the doc page you
+provide. :l
+:ule
+
+Finally, as a general rule-of-thumb, the more clear and
+self-explanatory you make your documentation and README files, and the
+easier you make it for people to get started, e.g. by providing example
+scripts, the more likely it is that users will try out your new feature.
diff --git a/doc/src/Modify_dump.txt b/doc/src/Modify_dump.txt
new file mode 100644
index 0000000000..9667a1b1fc
--- /dev/null
+++ b/doc/src/Modify_dump.txt
@@ -0,0 +1,35 @@
+"Higher level section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Dump styles :h2
+
+Classes that dump per-atom info to files are derived from the Dump
+class.  To dump new quantities or in a new format, a new derived dump
+class can be added, but it is typically simpler to modify the
+DumpCustom class contained in the dump_custom.cpp file.
+
+Dump_atom.cpp is a simple example of a derived dump class.
+
+Here is a brief description of methods you define in your new derived
+class.  See dump.h for details.
+
+write_header: write the header section of a snapshot of atoms
+count: count the number of lines a processor will output
+pack: pack a proc's output data into a buffer
+write_data: write a proc's data to a file :tb(s=:)
+
+See the "dump"_dump.html command and its {custom} style for a list of
+keywords for atom information that can already be dumped by
+DumpCustom.  It includes options to dump per-atom info from Compute
+classes, so adding a new derived Compute class is one way to calculate
+new quantities to dump.
+
+Note that new keywords for atom properties are not typically
+added to the "dump custom"_dump.html command.  Instead they are added
+to the "compute property/atom"_compute_property_atom.html command.
diff --git a/doc/src/Modify_fix.txt b/doc/src/Modify_fix.txt
new file mode 100644
index 0000000000..ba985475cc
--- /dev/null
+++ b/doc/src/Modify_fix.txt
@@ -0,0 +1,107 @@
+"Higher level section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Fix styles :h3
+
+In LAMMPS, a "fix" is any operation that is computed during
+timestepping that alters some property of the system.  Essentially
+everything that happens during a simulation besides force computation,
+neighbor list construction, and output, is a "fix".  This includes
+time integration (update of coordinates and velocities), force
+constraints or boundary conditions (SHAKE or walls), and diagnostics
+(compute a diffusion coefficient).  New styles can be created to add
+new options to LAMMPS.
+
+Fix_setforce.cpp is a simple example of setting forces on atoms to
+prescribed values.  There are dozens of fix options already in LAMMPS;
+choose one as a template that is similar to what you want to
+implement.
+
+Here is a brief description of methods you can define in your new
+derived class.  See fix.h for details.
+
+setmask: determines when the fix is called during the timestep (required)
+init: initialization before a run (optional)
+setup_pre_exchange: called before atom exchange in setup (optional)
+setup_pre_force: called before force computation in setup (optional)
+setup: called immediately before the 1st timestep and after forces are computed (optional)
+min_setup_pre_force: like setup_pre_force, but for minimizations instead of MD runs (optional)
+min_setup: like setup, but for minimizations instead of MD runs (optional)
+initial_integrate: called at very beginning of each timestep (optional)
+pre_exchange: called before atom exchange on re-neighboring steps (optional)
+pre_neighbor: called before neighbor list build (optional)
+pre_force: called before pair & molecular forces are computed (optional)
+post_force: called after pair & molecular forces are computed and communicated (optional)
+final_integrate: called at end of each timestep (optional)
+end_of_step: called at very end of timestep (optional)
+write_restart: dumps fix info to restart file (optional)
+restart: uses info from restart file to re-initialize the fix (optional)
+grow_arrays: allocate memory for atom-based arrays used by fix (optional)
+copy_arrays: copy atom info when an atom migrates to a new processor (optional)
+pack_exchange: store atom's data in a buffer (optional)
+unpack_exchange: retrieve atom's data from a buffer (optional)
+pack_restart: store atom's data for writing to restart file (optional)
+unpack_restart: retrieve atom's data from a restart file buffer (optional)
+size_restart: size of atom's data (optional)
+maxsize_restart: max size of atom's data (optional)
+setup_pre_force_respa: same as setup_pre_force, but for rRESPA (optional)
+initial_integrate_respa: same as initial_integrate, but for rRESPA (optional)
+post_integrate_respa: called after the first half integration step is done in rRESPA (optional)
+pre_force_respa: same as pre_force, but for rRESPA (optional)
+post_force_respa: same as post_force, but for rRESPA (optional)
+final_integrate_respa: same as final_integrate, but for rRESPA (optional)
+min_pre_force: called after pair & molecular forces are computed in minimizer (optional)
+min_post_force: called after pair & molecular forces are computed and communicated in minimizer (optional)
+min_store: store extra data for linesearch based minimization on a LIFO stack (optional)
+min_pushstore: push the minimization LIFO stack one element down (optional)
+min_popstore: pop the minimization LIFO stack one element up (optional)
+min_clearstore: clear minimization LIFO stack (optional)
+min_step: reset or move forward on line search minimization (optional)
+min_dof: report number of degrees of freedom {added} by this fix in minimization (optional)
+max_alpha: report maximum allowed step size during linesearch minimization (optional)
+pack_comm: pack a buffer to communicate a per-atom quantity (optional)
+unpack_comm: unpack a buffer to communicate a per-atom quantity (optional)
+pack_reverse_comm: pack a buffer to reverse communicate a per-atom quantity (optional)
+unpack_reverse_comm: unpack a buffer to reverse communicate a per-atom quantity (optional)
+dof: report number of degrees of freedom {removed} by this fix during MD (optional)
+compute_scalar: return a global scalar property that the fix computes (optional)
+compute_vector: return a component of a vector property that the fix computes (optional)
+compute_array: return a component of an array property that the fix computes (optional)
+deform: called when the box size is changed (optional)
+reset_target: called when a change of the target temperature is requested during a run (optional)
+reset_dt: is called when a change of the time step is requested during a run (optional)
+modify_param: called when a fix_modify request is executed (optional)
+memory_usage: report memory used by fix (optional)
+thermo: compute quantities for thermodynamic output (optional) :tb(s=:)
+
+Typically, only a small fraction of these methods are defined for a
+particular fix.  Setmask is mandatory, as it determines when the fix
+will be invoked during the timestep.  Fixes that perform time
+integration ({nve}, {nvt}, {npt}) implement initial_integrate() and
+final_integrate() to perform velocity Verlet updates.  Fixes that
+constrain forces implement post_force().
+
+Fixes that perform diagnostics typically implement end_of_step().  For
+an end_of_step fix, one of your fix arguments must be the variable
+"nevery" which is used to determine when to call the fix and you must
+set this variable in the constructor of your fix.  By convention, this
+is the first argument the fix defines (after the ID, group-ID, style).
+
+If the fix needs to store information for each atom that persists from
+timestep to timestep, it can manage that memory and migrate the info
+with the atoms as they move from processors to processor by
+implementing the grow_arrays, copy_arrays, pack_exchange, and
+unpack_exchange methods.  Similarly, the pack_restart and
+unpack_restart methods can be implemented to store information about
+the fix in restart files.  If you wish an integrator or force
+constraint fix to work with rRESPA (see the "run_style"_run_style.html
+command), the initial_integrate, post_force_integrate, and
+final_integrate_respa methods can be implemented.  The thermo method
+enables a fix to contribute values to thermodynamic output, as printed
+quantities and/or to be summed to the potential energy of the system.
diff --git a/doc/src/Modify_kspace.txt b/doc/src/Modify_kspace.txt
new file mode 100644
index 0000000000..21407bf2e9
--- /dev/null
+++ b/doc/src/Modify_kspace.txt
@@ -0,0 +1,25 @@
+"Higher level section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Kspace styles :h3
+
+Classes that compute long-range Coulombic interactions via K-space
+representations (Ewald, PPPM) are derived from the KSpace class.  New
+styles can be created to add new K-space options to LAMMPS.
+
+Ewald.cpp is an example of computing K-space interactions.
+
+Here is a brief description of methods you define in your new derived
+class.  See kspace.h for details.
+
+init: initialize the calculation before a run
+setup: computation before the 1st timestep of a run
+compute: every-timestep computation
+memory_usage: tally of memory usage :tb(s=:)
+
diff --git a/doc/src/Modify_min.txt b/doc/src/Modify_min.txt
new file mode 100644
index 0000000000..5dcf0f1e67
--- /dev/null
+++ b/doc/src/Modify_min.txt
@@ -0,0 +1,23 @@
+"Higher level section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Minimization styles :h3
+
+Classes that perform energy minimization derived from the Min class.
+New styles can be created to add new minimization algorithms to
+LAMMPS.
+
+Min_cg.cpp is an example of conjugate gradient minimization.
+
+Here is a brief description of methods you define in your new derived
+class.  See min.h for details.
+
+init: initialize the minimization before a run
+run: perform the minimization
+memory_usage: tally of memory usage :tb(s=:)
diff --git a/doc/src/Modify_overview.txt b/doc/src/Modify_overview.txt
new file mode 100644
index 0000000000..f9964d964b
--- /dev/null
+++ b/doc/src/Modify_overview.txt
@@ -0,0 +1,101 @@
+"Higher level section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Overview :h3
+
+The best way to add a new feature to LAMMPS is to find a similar
+featureand look at the corresponding source and header files to figure
+out what it does.  You will need some knowledge of C++ to be able to
+understand the hi-level structure of LAMMPS and its class
+organization, but functions (class methods) that do actual
+computations are written in vanilla C-style code and operate on simple
+C-style data structures (vectors and arrays).
+
+Most of the new features described on the "Modify"_Modify.html doc
+page require you to write a new C++ derived class (except for
+exceptions described below, where you can make small edits to existing
+files).  Creating a new class requires 2 files, a source code file
+(*.cpp) and a header file (*.h).  The derived class must provide
+certain methods to work as a new option.  Depending on how different
+your new feature is compared to existing features, you can either
+derive from the base class itself, or from a derived class that
+already exists.  Enabling LAMMPS to invoke the new class is as simple
+as putting the two source files in the src dir and re-building LAMMPS.
+
+The advantage of C++ and its object-orientation is that all the code
+and variables needed to define the new feature are in the 2 files you
+write, and thus shouldn't make the rest of LAMMPS more complex or
+cause side-effect bugs.
+
+Here is a concrete example.  Suppose you write 2 files pair_foo.cpp
+and pair_foo.h that define a new class PairFoo that computes pairwise
+potentials described in the classic 1997 "paper"_#Foo by Foo, et al.
+If you wish to invoke those potentials in a LAMMPS input script with a
+command like
+
+pair_style foo 0.1 3.5 :pre
+
+then your pair_foo.h file should be structured as follows:
+
+#ifdef PAIR_CLASS
+PairStyle(foo,PairFoo)
+#else
+...
+(class definition for PairFoo)
+...
+#endif :pre
+
+where "foo" is the style keyword in the pair_style command, and
+PairFoo is the class name defined in your pair_foo.cpp and pair_foo.h
+files.
+
+When you re-build LAMMPS, your new pairwise potential becomes part of
+the executable and can be invoked with a pair_style command like the
+example above.  Arguments like 0.1 and 3.5 can be defined and
+processed by your new class.
+
+As illustrated by this pairwise example, many kinds of options are
+referred to in the LAMMPS documentation as the "style" of a particular
+command.
+
+The "Modify page"_Modify.html lists all the common styles in LAMMPS,
+and discusses the header file for the base class that these styles are
+derived from.  Public variables in that file are ones used and set by
+the derived classes which are also used by the base class.  Sometimes
+they are also used by the rest of LAMMPS.  Virtual functions in the
+base class header file which are set = 0 are ones you must define in
+your new derived class to give it the functionality LAMMPS expects.
+Virtual functions that are not set to 0 are functions you can
+optionally define.
+
+Additionally, new output options can be added directly to the
+thermo.cpp, dump_custom.cpp, and variable.cpp files.  These are also
+listed on the "Modify page"_Modify.html.
+
+Here are additional guidelines for modifying LAMMPS and adding new
+functionality:
+
+Think about whether what you want to do would be better as a pre- or
+post-processing step.  Many computations are more easily and more
+quickly done that way. :ulb,l
+
+Don't do anything within the timestepping of a run that isn't
+parallel.  E.g. don't accumulate a bunch of data on a single processor
+and analyze it.  You run the risk of seriously degrading the parallel
+efficiency. :l
+
+If your new feature reads arguments or writes output, make sure you
+follow the unit conventions discussed by the "units"_units.html
+command. :l
+:ule
+
+:line
+
+:link(Foo)
+[(Foo)] Foo, Morefoo, and Maxfoo, J of Classic Potentials, 75, 345 (1997).
diff --git a/doc/src/Modify_pair.txt b/doc/src/Modify_pair.txt
new file mode 100644
index 0000000000..8c234dc621
--- /dev/null
+++ b/doc/src/Modify_pair.txt
@@ -0,0 +1,33 @@
+"Higher level section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Pair styles :h3
+
+Classes that compute pairwise interactions are derived from the Pair
+class.  In LAMMPS, pairwise calculation include manybody potentials
+such as EAM or Tersoff where particles interact without a static bond
+topology.  New styles can be created to add new pair potentials to
+LAMMPS.
+
+Pair_lj_cut.cpp is a simple example of a Pair class, though it
+includes some optional methods to enable its use with rRESPA.
+
+Here is a brief description of the class methods in pair.h:
+
+compute: workhorse routine that computes pairwise interactions
+settings: reads the input script line with arguments you define
+coeff: set coefficients for one i,j type pair
+init_one: perform initialization for one i,j type pair
+init_style: initialization specific to this pair style
+write & read_restart: write/read i,j pair coeffs to restart files
+write & read_restart_settings: write/read global settings to restart files
+single: force and energy of a single pairwise interaction between 2 atoms
+compute_inner/middle/outer: versions of compute used by rRESPA :tb(s=:)
+
+The inner/middle/outer routines are optional.
diff --git a/doc/src/Modify_region.txt b/doc/src/Modify_region.txt
new file mode 100644
index 0000000000..9fbf359292
--- /dev/null
+++ b/doc/src/Modify_region.txt
@@ -0,0 +1,25 @@
+"Higher level section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Region styles :h3
+
+Classes that define geometric regions are derived from the Region
+class.  Regions are used elsewhere in LAMMPS to group atoms, delete
+atoms to create a void, insert atoms in a specified region, etc.  New
+styles can be created to add new region shapes to LAMMPS.
+
+Region_sphere.cpp is an example of a spherical region.
+
+Here is a brief description of methods you define in your new derived
+class.  See region.h for details.
+
+inside: determine whether a point is in the region
+surface_interior: determine if a point is within a cutoff distance inside of surc
+surface_exterior: determine if a point is within a cutoff distance outside of surf
+shape_update : change region shape if set by time-dependent variable :tb(s=:)
diff --git a/doc/src/Modify_thermo.txt b/doc/src/Modify_thermo.txt
new file mode 100644
index 0000000000..001a9f99e1
--- /dev/null
+++ b/doc/src/Modify_thermo.txt
@@ -0,0 +1,35 @@
+"Higher level section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Thermodynamic output options :h3
+
+There is one class that computes and prints thermodynamic information
+to the screen and log file; see the file thermo.cpp.
+
+There are two styles defined in thermo.cpp: "one" and "multi".  There
+is also a flexible "custom" style which allows the user to explicitly
+list keywords for quantities to print when thermodynamic info is
+output.  See the "thermo_style"_thermo_style.html command for a list
+of defined quantities.
+
+The thermo styles (one, multi, etc) are simply lists of keywords.
+Adding a new style thus only requires defining a new list of keywords.
+Search for the word "customize" with references to "thermo style" in
+thermo.cpp to see the two locations where code will need to be added.
+
+New keywords can also be added to thermo.cpp to compute new quantities
+for output.  Search for the word "customize" with references to
+"keyword" in thermo.cpp to see the several locations where code will
+need to be added.
+
+Note that the "thermo_style custom"_thermo.html command already allows
+for thermo output of quantities calculated by "fixes"_fix.html,
+"computes"_compute.html, and "variables"_variable.html.  Thus, it may
+be simpler to compute what you wish via one of those constructs, than
+by adding a new keyword to the thermo command.
diff --git a/doc/src/Modify_variable.txt b/doc/src/Modify_variable.txt
new file mode 100644
index 0000000000..3c5b29cd1a
--- /dev/null
+++ b/doc/src/Modify_variable.txt
@@ -0,0 +1,46 @@
+"Higher level section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Variable options :h3
+
+There is one class that computes and stores "variable"_variable.html
+information in LAMMPS; see the file variable.cpp.  The value
+associated with a variable can be periodically printed to the screen
+via the "print"_print.html, "fix print"_fix_print.html, or
+"thermo_style custom"_thermo_style.html commands.  Variables of style
+"equal" can compute complex equations that involve the following types
+of arguments:
+
+thermo keywords = ke, vol, atoms, ...
+other variables = v_a, v_myvar, ...
+math functions = div(x,y), mult(x,y), add(x,y), ...
+group functions = mass(group), xcm(group,x), ...
+atom values = x\[123\], y\[3\], vx\[34\], ...
+compute values = c_mytemp\[0\], c_thermo_press\[3\], ... :pre
+
+Adding keywords for the "thermo_style custom"_thermo_style.html
+command (which can then be accessed by variables) is discussed on the
+"Modify thermo"_Modify_thermo.html doc page.
+
+Adding a new math function of one or two arguments can be done by
+editing one section of the Variable::evaluate() method.  Search for
+the word "customize" to find the appropriate location.
+
+Adding a new group function can be done by editing one section of the
+Variable::evaluate() method.  Search for the word "customize" to find
+the appropriate location.  You may need to add a new method to the
+Group class as well (see the group.cpp file).
+
+Accessing a new atom-based vector can be done by editing one section
+of the Variable::evaluate() method.  Search for the word "customize"
+to find the appropriate location.
+
+Adding new "compute styles"_compute.html (whose calculated values can
+then be accessed by variables) is discussed on the "Modify
+compute"_Modify_compute.html doc page.
diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt
index 32308b36cb..a44013f5f1 100644
--- a/doc/src/Section_commands.txt
+++ b/doc/src/Section_commands.txt
@@ -204,10 +204,10 @@ allowed, but that should be sufficient for most use cases.
 3.3 Input script structure :h3,link(cmd_3)
 
 This section describes the structure of a typical LAMMPS input script.
-The "examples" directory in the LAMMPS distribution contains many
-sample input scripts; the corresponding problems are discussed in
-"Section 7"_Section_example.html, and animated on the "LAMMPS
-WWW Site"_lws.
+The examples directory in the LAMMPS distribution contains many sample
+input scripts; the corresponding problems are discussed on the
+"Examples"_Examples.html doc page, and animated on the "LAMMPS WWW
+Site"_lws.
 
 A LAMMPS input script typically has 4 parts:
 
diff --git a/doc/src/Section_howto.txt b/doc/src/Section_howto.txt
index a46b29c73b..0a31fc2b48 100644
--- a/doc/src/Section_howto.txt
+++ b/doc/src/Section_howto.txt
@@ -1,4 +1,4 @@
-"Previous Section"_Section_accelerate.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_example.html :c
+"Previous Section"_Section_accelerate.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Examples.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -40,7 +40,7 @@ This section describes how to perform common tasks using LAMMPS.
 6.28 "Magnetic spins"_#howto_28 :all(b)
 
 The example input scripts included in the LAMMPS distribution and
-highlighted in "Section 7"_Section_example.html also show how to
+highlighted on the "Examples"_Examples.html doc page also show how to
 setup and run various kinds of simulations.
 
 :line
@@ -672,10 +672,10 @@ this scenario, LAMMPS is the driver code.  During its timestepping,
 the fix is invoked, and can make library calls to the other code,
 which has been linked to LAMMPS as a library.  This is the way the
 "POEMS"_poems package that performs constrained rigid-body motion on
-groups of atoms is hooked to LAMMPS.  See the
-"fix poems"_fix_poems.html command for more details.  See "this
-section"_Section_modify.html of the documentation for info on how to add
-a new fix to LAMMPS.
+groups of atoms is hooked to LAMMPS.  See the "fix
+poems"_fix_poems.html command for more details.  See the
+"Modify"_Modify.html doc page for info on how to add a new fix to
+LAMMPS.
 
 :link(poems,http://www.rpi.edu/~anderk5/lab)
 
@@ -696,8 +696,8 @@ processors to start up another program).  In the latter case the
 stand-alone code could communicate with LAMMPS thru files that the
 command writes and reads.
 
-See "Section 10"_Section_modify.html of the documentation for how
-to add a new command to LAMMPS.
+See the "Modify"_Modify.html doc page for how to add a new command to
+LAMMPS.
 
 (3) Use LAMMPS as a library called by another code.  In this case the
 other code is the driver and calls LAMMPS as needed.  Or a wrapper
@@ -1057,7 +1057,7 @@ rigid bodies composed of finite-size particles :ul
 
 Example input scripts for these kinds of models are in the body,
 colloid, dipole, ellipse, line, peri, pour, and tri directories of the
-"examples directory"_Section_example.html in the LAMMPS distribution.
+"examples directory"_Examples.html in the LAMMPS distribution.
 
 Atom styles :h4
 
@@ -1302,8 +1302,8 @@ As discussed below, LAMMPS gives you a variety of ways to determine
 what quantities are computed and printed when the thermodynamics,
 dump, or fix commands listed above perform output.  Throughout this
 discussion, note that users can also "add their own computes and fixes
-to LAMMPS"_Section_modify.html which can then generate values that can
-then be output with these commands.
+to LAMMPS"_Modify.html which can then generate values that can then be
+output with these commands.
 
 The following sub-sections discuss different LAMMPS command related
 to output and the kind of data they operate on and produce:
@@ -1824,8 +1824,8 @@ At zero temperature, it is easy to estimate these derivatives by
 deforming the simulation box in one of the six directions using the
 "change_box"_change_box.html command and measuring the change in the
 stress tensor. A general-purpose script that does this is given in the
-examples/elastic directory described in "this
-section"_Section_example.html.
+examples/elastic directory described on the "Examples"_Examples.html
+doc page.
 
 Calculating elastic constants at finite temperature is more
 challenging, because it is necessary to run a simulation that perfoms
@@ -2322,11 +2322,10 @@ Note that this compute allows the per-atom output of other
 "computes"_compute.html, "fixes"_fix.html, and
 "variables"_variable.html to be used to define chunk IDs for each
 atom.  This means you can write your own compute or fix to output a
-per-atom quantity to use as chunk ID.  See
-"Section 10"_Section_modify.html of the documentation for how to
-do this.  You can also define a "per-atom variable"_variable.html in
-the input script that uses a formula to generate a chunk ID for each
-atom.
+per-atom quantity to use as chunk ID.  See the "Modify"_Modify.html
+doc page for how to do this.  You can also define a "per-atom
+variable"_variable.html in the input script that uses a formula to
+generate a chunk ID for each atom.
 
 Fix ave/chunk command: :h4
 
diff --git a/doc/src/Section_intro.txt b/doc/src/Section_intro.txt
index fd1d702d0b..fa2ab0e768 100644
--- a/doc/src/Section_intro.txt
+++ b/doc/src/Section_intro.txt
@@ -54,8 +54,8 @@ brief discussion of the open-source philosophy.
 
 LAMMPS is designed to be easy to modify or extend with new
 capabilities, such as new force fields, atom types, boundary
-conditions, or diagnostics.  See "Section 10"_Section_modify.html
-for more details.
+conditions, or diagnostics.  See the "Modify"_Modify.html doc page for
+more details.
 
 The current version of LAMMPS is written in C++.  Earlier versions
 were written in F77 and F90.  See
@@ -94,8 +94,8 @@ LAMMPS are listed in "this section"_#intro_5.
 This section highlights LAMMPS features, with pointers to specific
 commands which give more details.  If LAMMPS doesn't have your
 favorite interatomic potential, boundary condition, or atom type, see
-"Section 10"_Section_modify.html, which describes how you can add
-it to LAMMPS.
+the "Modify"_Modify.html doc page, which describes how you can add it
+to LAMMPS.
 
 General features :h4
 
@@ -334,8 +334,8 @@ Similarly, LAMMPS creates output files in a simple format.  Most users
 post-process these files with their own analysis tools or re-format
 them for input into other programs, including visualization packages.
 If you are convinced you need to compute something on-the-fly as
-LAMMPS runs, see "Section 10"_Section_modify.html for a discussion
-of how you can use the "dump"_dump.html and "compute"_compute.html and
+LAMMPS runs, see the "Modify"_Modify.html doc page for a discussion of
+how you can use the "dump"_dump.html and "compute"_compute.html and
 "fix"_fix.html commands to print out data of your choosing.  Keep in
 mind that complicated computations can slow down the molecular
 dynamics timestepping, particularly if the computations are not
@@ -448,9 +448,8 @@ distribution. :l
 
 LAMMPS is designed to be easy to extend with new code for features
 like potentials, boundary conditions, diagnostic computations, etc.
-"This section"_Section_modify.html gives details.  If you add a
-feature of general interest, it can be added to the LAMMPS
-distribution. :l
+The "Modify"_Modify.html doc page gives details.  If you add a feature
+of general interest, it can be added to the LAMMPS distribution. :l
 
 The Benchmark page of the "LAMMPS WWW Site"_lws lists LAMMPS
 performance on various platforms.  The files needed to run the
diff --git a/doc/src/Section_modify.txt b/doc/src/Section_modify.txt
deleted file mode 100644
index 6948ac062a..0000000000
--- a/doc/src/Section_modify.txt
+++ /dev/null
@@ -1,827 +0,0 @@
- "Previous Section"_Tools.html - "LAMMPS WWW Site"_lws - "LAMMPS
-Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Section_python.html :c
-
-:link(lws,http://lammps.sandia.gov)
-:link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
-
-:line
-
-10. Modifying & extending LAMMPS :h2
-
-This section describes how to customize LAMMPS by modifying
-and extending its source code.
-
-10.1 "Atom styles"_#mod_1
-10.2 "Bond, angle, dihedral, improper potentials"_#mod_2
-10.3 "Compute styles"_#mod_3
-10.4 "Dump styles"_#mod_4
-10.5 "Dump custom output options"_#mod_5
-10.6 "Fix styles"_#mod_6 which include integrators, \
-     temperature and pressure control, force constraints, \
-     boundary conditions, diagnostic output, etc
-10.7 "Input script commands"_#mod_7
-10.8 "Kspace computations"_#mod_8
-10.9 "Minimization styles"_#mod_9
-10.10 "Pairwise potentials"_#mod_10
-10.11 "Region styles"_#mod_11
-10.12 "Body styles"_#mod_12
-10.13 "Thermodynamic output options"_#mod_13
-10.14 "Variable options"_#mod_14
-10.15 "Submitting new features for inclusion in LAMMPS"_#mod_15 :all(b)
-
-LAMMPS is designed in a modular fashion so as to be easy to modify and
-extend with new functionality.  In fact, about 75% of its source code
-is files added in this fashion.
-
-In this section, changes and additions users can make are listed along
-with minimal instructions.  If you add a new feature to LAMMPS and
-think it will be of interest to general users, we encourage you to
-submit it to the developers for inclusion in the released version of
-LAMMPS.  Information about how to do this is provided
-"below"_#mod_14.
-
-The best way to add a new feature is to find a similar feature in
-LAMMPS and look at the corresponding source and header files to figure
-out what it does.  You will need some knowledge of C++ to be able to
-understand the hi-level structure of LAMMPS and its class
-organization, but functions (class methods) that do actual
-computations are written in vanilla C-style code and operate on simple
-C-style data structures (vectors and arrays).
-
-Most of the new features described in this section require you to
-write a new C++ derived class (except for exceptions described below,
-where you can make small edits to existing files).  Creating a new
-class requires 2 files, a source code file (*.cpp) and a header file
-(*.h).  The derived class must provide certain methods to work as a
-new option.  Depending on how different your new feature is compared
-to existing features, you can either derive from the base class
-itself, or from a derived class that already exists.  Enabling LAMMPS
-to invoke the new class is as simple as putting the two source
-files in the src dir and re-building LAMMPS.
-
-The advantage of C++ and its object-orientation is that all the code
-and variables needed to define the new feature are in the 2 files you
-write, and thus shouldn't make the rest of LAMMPS more complex or
-cause side-effect bugs.
-
-Here is a concrete example.  Suppose you write 2 files pair_foo.cpp
-and pair_foo.h that define a new class PairFoo that computes pairwise
-potentials described in the classic 1997 "paper"_#Foo by Foo, et al.
-If you wish to invoke those potentials in a LAMMPS input script with a
-command like
-
-pair_style foo 0.1 3.5 :pre
-
-then your pair_foo.h file should be structured as follows:
-
-#ifdef PAIR_CLASS
-PairStyle(foo,PairFoo)
-#else
-...
-(class definition for PairFoo)
-...
-#endif :pre
-
-where "foo" is the style keyword in the pair_style command, and
-PairFoo is the class name defined in your pair_foo.cpp and pair_foo.h
-files.
-
-When you re-build LAMMPS, your new pairwise potential becomes part of
-the executable and can be invoked with a pair_style command like the
-example above.  Arguments like 0.1 and 3.5 can be defined and
-processed by your new class.
-
-As illustrated by this pairwise example, many kinds of options are
-referred to in the LAMMPS documentation as the "style" of a particular
-command.
-
-The instructions below give the header file for the base class that
-these styles are derived from.  Public variables in that file are ones
-used and set by the derived classes which are also used by the base
-class.  Sometimes they are also used by the rest of LAMMPS.  Virtual
-functions in the base class header file which are set = 0 are ones you
-must define in your new derived class to give it the functionality
-LAMMPS expects.  Virtual functions that are not set to 0 are functions
-you can optionally define.
-
-Additionally, new output options can be added directly to the
-thermo.cpp, dump_custom.cpp, and variable.cpp files as explained
-below.
-
-Here are additional guidelines for modifying LAMMPS and adding new
-functionality:
-
-Think about whether what you want to do would be better as a pre- or
-post-processing step.  Many computations are more easily and more
-quickly done that way. :ulb,l
-
-Don't do anything within the timestepping of a run that isn't
-parallel.  E.g. don't accumulate a bunch of data on a single processor
-and analyze it.  You run the risk of seriously degrading the parallel
-efficiency. :l
-
-If your new feature reads arguments or writes output, make sure you
-follow the unit conventions discussed by the "units"_units.html
-command. :l
-
-If you add something you think is truly useful and doesn't impact
-LAMMPS performance when it isn't used, send an email to the
-"developers"_http://lammps.sandia.gov/authors.html.  We might be
-interested in adding it to the LAMMPS distribution.  See further
-details on this at the bottom of this page. :l
-:ule
-
-:line
-:line
-
-10.1 Atom styles :link(mod_1),h4
-
-Classes that define an "atom style"_atom_style.html are derived from
-the AtomVec class and managed by the Atom class.  The atom style
-determines what attributes are associated with an atom.  A new atom
-style can be created if one of the existing atom styles does not
-define all the attributes you need to store and communicate with
-atoms.
-
-Atom_vec_atomic.cpp is a simple example of an atom style.
-
-Here is a brief description of methods you define in your new derived
-class.  See atom_vec.h for details.
-
-init: one time setup (optional)
-grow: re-allocate atom arrays to longer lengths (required)
-grow_reset: make array pointers in Atom and AtomVec classes consistent (required)
-copy: copy info for one atom to another atom's array locations (required)
-pack_comm: store an atom's info in a buffer communicated every timestep (required)
-pack_comm_vel: add velocity info to communication buffer (required)
-pack_comm_hybrid: store extra info unique to this atom style (optional)
-unpack_comm: retrieve an atom's info from the buffer (required)
-unpack_comm_vel: also retrieve velocity info (required)
-unpack_comm_hybrid: retrieve extra info unique to this atom style (optional)
-pack_reverse: store an atom's info in a buffer communicating partial forces  (required)
-pack_reverse_hybrid: store extra info unique to this atom style (optional)
-unpack_reverse: retrieve an atom's info from the buffer (required)
-unpack_reverse_hybrid: retrieve extra info unique to this atom style (optional)
-pack_border: store an atom's info in a buffer communicated on neighbor re-builds (required)
-pack_border_vel: add velocity info to buffer (required)
-pack_border_hybrid: store extra info unique to this atom style (optional)
-unpack_border: retrieve an atom's info from the buffer (required)
-unpack_border_vel: also retrieve velocity info (required)
-unpack_border_hybrid: retrieve extra info unique to this atom style (optional)
-pack_exchange: store all an atom's info to migrate to another processor (required)
-unpack_exchange: retrieve an atom's info from the buffer (required)
-size_restart: number of restart quantities associated with proc's atoms (required)
-pack_restart: pack atom quantities into a buffer (required)
-unpack_restart: unpack atom quantities from a buffer (required)
-create_atom: create an individual atom of this style (required)
-data_atom: parse an atom line from the data file (required)
-data_atom_hybrid: parse additional atom info unique to this atom style (optional)
-data_vel: parse one line of velocity information from data file (optional)
-data_vel_hybrid: parse additional velocity data unique to this atom style (optional)
-memory_usage: tally memory allocated by atom arrays (required) :tb(s=:)
-
-The constructor of the derived class sets values for several variables
-that you must set when defining a new atom style, which are documented
-in atom_vec.h.  New atom arrays are defined in atom.cpp.  Search for
-the word "customize" and you will find locations you will need to
-modify.
-
-NOTE: It is possible to add some attributes, such as a molecule ID, to
-atom styles that do not have them via the "fix
-property/atom"_fix_property_atom.html command.  This command also
-allows new custom attributes consisting of extra integer or
-floating-point values to be added to atoms.  See the "fix
-property/atom"_fix_property_atom.html doc page for examples of cases
-where this is useful and details on how to initialize, access, and
-output the custom values.
-
-New "pair styles"_pair_style.html, "fixes"_fix.html, or
-"computes"_compute.html can be added to LAMMPS, as discussed below.
-The code for these classes can use the per-atom properties defined by
-fix property/atom.  The Atom class has a find_custom() method that is
-useful in this context:
-
-int index = atom->find_custom(char *name, int &flag); :pre
-
-The "name" of a custom attribute, as specified in the "fix
-property/atom"_fix_property_atom.html command, is checked to verify
-that it exists and its index is returned.  The method also sets flag =
-0/1 depending on whether it is an integer or floating-point attribute.
-The vector of values associated with the attribute can then be
-accessed using the returned index as
-
-int *ivector = atom->ivector\[index\];
-double *dvector = atom->dvector\[index\]; :pre
-
-Ivector or dvector are vectors of length Nlocal = # of owned atoms,
-which store the attributes of individual atoms.
-
-:line
-
-10.2 Bond, angle, dihedral, improper potentials :link(mod_2),h4
-
-Classes that compute molecular interactions are derived from the Bond,
-Angle, Dihedral, and Improper classes.  New styles can be created to
-add new potentials to LAMMPS.
-
-Bond_harmonic.cpp is the simplest example of a bond style.  Ditto for
-the harmonic forms of the angle, dihedral, and improper style
-commands.
-
-Here is a brief description of common methods you define in your
-new derived class.  See bond.h, angle.h, dihedral.h, and improper.h
-for details and specific additional methods.
-
-init: check if all coefficients are set, calls {init_style} (optional)
-init_style: check if style specific conditions are met (optional)
-compute: compute the molecular interactions (required)
-settings: apply global settings for all types (optional)
-coeff: set coefficients for one type (required)
-equilibrium_distance: length of bond, used by SHAKE (required, bond only)
-equilibrium_angle: opening of angle, used by SHAKE (required, angle only)
-write & read_restart: writes/reads coeffs to restart files (required)
-single: force and energy of a single bond or angle (required, bond or angle only)
-memory_usage: tally memory allocated by the style (optional) :tb(s=:)
-
-:line
-
-10.3 Compute styles :link(mod_3),h4
-
-Classes that compute scalar and vector quantities like temperature
-and the pressure tensor, as well as classes that compute per-atom
-quantities like kinetic energy and the centro-symmetry parameter
-are derived from the Compute class.  New styles can be created
-to add new calculations to LAMMPS.
-
-Compute_temp.cpp is a simple example of computing a scalar
-temperature.  Compute_ke_atom.cpp is a simple example of computing
-per-atom kinetic energy.
-
-Here is a brief description of methods you define in your new derived
-class.  See compute.h for details.
-
-init: perform one time setup (required)
-init_list: neighbor list setup, if needed (optional)
-compute_scalar: compute a scalar quantity (optional)
-compute_vector: compute a vector of quantities (optional)
-compute_peratom: compute one or more quantities per atom (optional)
-compute_local: compute one or more quantities per processor (optional)
-pack_comm: pack a buffer with items to communicate (optional)
-unpack_comm: unpack the buffer (optional)
-pack_reverse: pack a buffer with items to reverse communicate (optional)
-unpack_reverse: unpack the buffer (optional)
-remove_bias: remove velocity bias from one atom (optional)
-remove_bias_all: remove velocity bias from all atoms in group (optional)
-restore_bias: restore velocity bias for one atom after remove_bias (optional)
-restore_bias_all: same as before, but for all atoms in group (optional)
-pair_tally_callback: callback function for {tally}-style computes (optional).
-memory_usage: tally memory usage (optional) :tb(s=:)
-
-Tally-style computes are a special case, as their computation is done
-in two stages: the callback function is registered with the pair style
-and then called from the Pair::ev_tally() function, which is called for
-each pair after force and energy has been computed for this pair. Then
-the tallied values are retrieved with the standard compute_scalar or
-compute_vector or compute_peratom methods. The USER-TALLY package
-provides {examples}_compute_tally.html for utilizing this mechanism.
-
-:line
-
-10.4 Dump styles :link(mod_4),h4
-10.5 Dump custom output options :link(mod_5),h4
-
-Classes that dump per-atom info to files are derived from the Dump
-class.  To dump new quantities or in a new format, a new derived dump
-class can be added, but it is typically simpler to modify the
-DumpCustom class contained in the dump_custom.cpp file.
-
-Dump_atom.cpp is a simple example of a derived dump class.
-
-Here is a brief description of methods you define in your new derived
-class.  See dump.h for details.
-
-write_header: write the header section of a snapshot of atoms
-count: count the number of lines a processor will output
-pack: pack a proc's output data into a buffer
-write_data: write a proc's data to a file :tb(s=:)
-
-See the "dump"_dump.html command and its {custom} style for a list of
-keywords for atom information that can already be dumped by
-DumpCustom.  It includes options to dump per-atom info from Compute
-classes, so adding a new derived Compute class is one way to calculate
-new quantities to dump.
-
-Alternatively, you can add new keywords to the dump custom command.
-Search for the word "customize" in dump_custom.cpp to see the
-half-dozen or so locations where code will need to be added.
-
-:line
-
-10.6 Fix styles :link(mod_6),h4
-
-In LAMMPS, a "fix" is any operation that is computed during
-timestepping that alters some property of the system.  Essentially
-everything that happens during a simulation besides force computation,
-neighbor list construction, and output, is a "fix".  This includes
-time integration (update of coordinates and velocities), force
-constraints or boundary conditions (SHAKE or walls), and diagnostics
-(compute a diffusion coefficient).  New styles can be created to add
-new options to LAMMPS.
-
-Fix_setforce.cpp is a simple example of setting forces on atoms to
-prescribed values.  There are dozens of fix options already in LAMMPS;
-choose one as a template that is similar to what you want to
-implement.
-
-Here is a brief description of methods you can define in your new
-derived class.  See fix.h for details.
-
-setmask: determines when the fix is called during the timestep (required)
-init: initialization before a run (optional)
-setup_pre_exchange: called before atom exchange in setup (optional)
-setup_pre_force: called before force computation in setup (optional)
-setup: called immediately before the 1st timestep and after forces are computed (optional)
-min_setup_pre_force: like setup_pre_force, but for minimizations instead of MD runs (optional)
-min_setup: like setup, but for minimizations instead of MD runs (optional)
-initial_integrate: called at very beginning of each timestep (optional)
-pre_exchange: called before atom exchange on re-neighboring steps (optional)
-pre_neighbor: called before neighbor list build (optional)
-pre_force: called before pair & molecular forces are computed (optional)
-post_force: called after pair & molecular forces are computed and communicated (optional)
-final_integrate: called at end of each timestep (optional)
-end_of_step: called at very end of timestep (optional)
-write_restart: dumps fix info to restart file (optional)
-restart: uses info from restart file to re-initialize the fix (optional)
-grow_arrays: allocate memory for atom-based arrays used by fix (optional)
-copy_arrays: copy atom info when an atom migrates to a new processor (optional)
-pack_exchange: store atom's data in a buffer (optional)
-unpack_exchange: retrieve atom's data from a buffer (optional)
-pack_restart: store atom's data for writing to restart file (optional)
-unpack_restart: retrieve atom's data from a restart file buffer (optional)
-size_restart: size of atom's data (optional)
-maxsize_restart: max size of atom's data (optional)
-setup_pre_force_respa: same as setup_pre_force, but for rRESPA (optional)
-initial_integrate_respa: same as initial_integrate, but for rRESPA (optional)
-post_integrate_respa: called after the first half integration step is done in rRESPA (optional)
-pre_force_respa: same as pre_force, but for rRESPA (optional)
-post_force_respa: same as post_force, but for rRESPA (optional)
-final_integrate_respa: same as final_integrate, but for rRESPA (optional)
-min_pre_force: called after pair & molecular forces are computed in minimizer (optional)
-min_post_force: called after pair & molecular forces are computed and communicated in minimizer (optional)
-min_store: store extra data for linesearch based minimization on a LIFO stack (optional)
-min_pushstore: push the minimization LIFO stack one element down (optional)
-min_popstore: pop the minimization LIFO stack one element up (optional)
-min_clearstore: clear minimization LIFO stack (optional)
-min_step: reset or move forward on line search minimization (optional)
-min_dof: report number of degrees of freedom {added} by this fix in minimization (optional)
-max_alpha: report maximum allowed step size during linesearch minimization (optional)
-pack_comm: pack a buffer to communicate a per-atom quantity (optional)
-unpack_comm: unpack a buffer to communicate a per-atom quantity (optional)
-pack_reverse_comm: pack a buffer to reverse communicate a per-atom quantity (optional)
-unpack_reverse_comm: unpack a buffer to reverse communicate a per-atom quantity (optional)
-dof: report number of degrees of freedom {removed} by this fix during MD (optional)
-compute_scalar: return a global scalar property that the fix computes (optional)
-compute_vector: return a component of a vector property that the fix computes (optional)
-compute_array: return a component of an array property that the fix computes (optional)
-deform: called when the box size is changed (optional)
-reset_target: called when a change of the target temperature is requested during a run (optional)
-reset_dt: is called when a change of the time step is requested during a run (optional)
-modify_param: called when a fix_modify request is executed (optional)
-memory_usage: report memory used by fix (optional)
-thermo: compute quantities for thermodynamic output (optional) :tb(s=:)
-
-Typically, only a small fraction of these methods are defined for a
-particular fix.  Setmask is mandatory, as it determines when the fix
-will be invoked during the timestep.  Fixes that perform time
-integration ({nve}, {nvt}, {npt}) implement initial_integrate() and
-final_integrate() to perform velocity Verlet updates.  Fixes that
-constrain forces implement post_force().
-
-Fixes that perform diagnostics typically implement end_of_step().  For
-an end_of_step fix, one of your fix arguments must be the variable
-"nevery" which is used to determine when to call the fix and you must
-set this variable in the constructor of your fix.  By convention, this
-is the first argument the fix defines (after the ID, group-ID, style).
-
-If the fix needs to store information for each atom that persists from
-timestep to timestep, it can manage that memory and migrate the info
-with the atoms as they move from processors to processor by
-implementing the grow_arrays, copy_arrays, pack_exchange, and
-unpack_exchange methods.  Similarly, the pack_restart and
-unpack_restart methods can be implemented to store information about
-the fix in restart files.  If you wish an integrator or force
-constraint fix to work with rRESPA (see the "run_style"_run_style.html
-command), the initial_integrate, post_force_integrate, and
-final_integrate_respa methods can be implemented.  The thermo method
-enables a fix to contribute values to thermodynamic output, as printed
-quantities and/or to be summed to the potential energy of the system.
-
-:line
-
-10.7 Input script commands :link(mod_7),h4
-
-New commands can be added to LAMMPS input scripts by adding new
-classes that have a "command" method.  For example, the create_atoms,
-read_data, velocity, and run commands are all implemented in this
-fashion.  When such a command is encountered in the LAMMPS input
-script, LAMMPS simply creates a class with the corresponding name,
-invokes the "command" method of the class, and passes it the arguments
-from the input script.  The command method can perform whatever
-operations it wishes on LAMMPS data structures.
-
-The single method your new class must define is as follows:
-
-command: operations performed by the new command :tb(s=:)
-
-Of course, the new class can define other methods and variables as
-needed.
-
-:line
-
-10.8 Kspace computations :link(mod_8),h4
-
-Classes that compute long-range Coulombic interactions via K-space
-representations (Ewald, PPPM) are derived from the KSpace class.  New
-styles can be created to add new K-space options to LAMMPS.
-
-Ewald.cpp is an example of computing K-space interactions.
-
-Here is a brief description of methods you define in your new derived
-class.  See kspace.h for details.
-
-init: initialize the calculation before a run
-setup: computation before the 1st timestep of a run
-compute: every-timestep computation
-memory_usage: tally of memory usage :tb(s=:)
-
-:line
-
-10.9 Minimization styles :link(mod_9),h4
-
-Classes that perform energy minimization derived from the Min class.
-New styles can be created to add new minimization algorithms to
-LAMMPS.
-
-Min_cg.cpp is an example of conjugate gradient minimization.
-
-Here is a brief description of methods you define in your new derived
-class.  See min.h for details.
-
-init: initialize the minimization before a run
-run: perform the minimization
-memory_usage: tally of memory usage :tb(s=:)
-
-:line
-
-10.10 Pairwise potentials :link(mod_10),h4
-
-Classes that compute pairwise interactions are derived from the Pair
-class.  In LAMMPS, pairwise calculation include manybody potentials
-such as EAM or Tersoff where particles interact without a static bond
-topology.  New styles can be created to add new pair potentials to
-LAMMPS.
-
-Pair_lj_cut.cpp is a simple example of a Pair class, though it
-includes some optional methods to enable its use with rRESPA.
-
-Here is a brief description of the class methods in pair.h:
-
-compute: workhorse routine that computes pairwise interactions
-settings: reads the input script line with arguments you define
-coeff: set coefficients for one i,j type pair
-init_one: perform initialization for one i,j type pair
-init_style: initialization specific to this pair style
-write & read_restart: write/read i,j pair coeffs to restart files
-write & read_restart_settings: write/read global settings to restart files
-single: force and energy of a single pairwise interaction between 2 atoms
-compute_inner/middle/outer: versions of compute used by rRESPA :tb(s=:)
-
-The inner/middle/outer routines are optional.
-
-:line
-
-10.11 Region styles :link(mod_11),h4
-
-Classes that define geometric regions are derived from the Region
-class.  Regions are used elsewhere in LAMMPS to group atoms, delete
-atoms to create a void, insert atoms in a specified region, etc.  New
-styles can be created to add new region shapes to LAMMPS.
-
-Region_sphere.cpp is an example of a spherical region.
-
-Here is a brief description of methods you define in your new derived
-class.  See region.h for details.
-
-inside: determine whether a point is in the region
-surface_interior: determine if a point is within a cutoff distance inside of surc
-surface_exterior: determine if a point is within a cutoff distance outside of surf
-shape_update : change region shape if set by time-dependent variable :tb(s=:)
-
-:line
-
-10.12 Body styles :link(mod_12),h4
-
-Classes that define body particles are derived from the Body class.
-Body particles can represent complex entities, such as surface meshes
-of discrete points, collections of sub-particles, deformable objects,
-etc.
-
-See "Section 6.14"_Section_howto.html#howto_14 of the manual for
-an overview of using body particles and the "body"_body.html doc page
-for details on the various body styles LAMMPS supports.  New styles
-can be created to add new kinds of body particles to LAMMPS.
-
-Body_nparticle.cpp is an example of a body particle that is treated as
-a rigid body containing N sub-particles.
-
-Here is a brief description of methods you define in your new derived
-class.  See body.h for details.
-
-data_body: process a line from the Bodies section of a data file
-noutrow: number of sub-particles output is generated for
-noutcol: number of values per-sub-particle output is generated for
-output: output values for the Mth sub-particle
-pack_comm_body: body attributes to communicate every timestep
-unpack_comm_body: unpacking of those attributes
-pack_border_body: body attributes to communicate when reneighboring is done
-unpack_border_body: unpacking of those attributes :tb(s=:)
-
-:line
-
-10.13 Thermodynamic output options :link(mod_13),h4
-
-There is one class that computes and prints thermodynamic information
-to the screen and log file; see the file thermo.cpp.
-
-There are two styles defined in thermo.cpp: "one" and "multi".  There
-is also a flexible "custom" style which allows the user to explicitly
-list keywords for quantities to print when thermodynamic info is
-output.  See the "thermo_style"_thermo_style.html command for a list
-of defined quantities.
-
-The thermo styles (one, multi, etc) are simply lists of keywords.
-Adding a new style thus only requires defining a new list of keywords.
-Search for the word "customize" with references to "thermo style" in
-thermo.cpp to see the two locations where code will need to be added.
-
-New keywords can also be added to thermo.cpp to compute new quantities
-for output.  Search for the word "customize" with references to
-"keyword" in thermo.cpp to see the several locations where code will
-need to be added.
-
-Note that the "thermo_style custom"_thermo.html command already allows
-for thermo output of quantities calculated by "fixes"_fix.html,
-"computes"_compute.html, and "variables"_variable.html.  Thus, it may
-be simpler to compute what you wish via one of those constructs, than
-by adding a new keyword to the thermo command.
-
-:line
-
-10.14 Variable options :link(mod_14),h4
-
-There is one class that computes and stores "variable"_variable.html
-information in LAMMPS; see the file variable.cpp.  The value
-associated with a variable can be periodically printed to the screen
-via the "print"_print.html, "fix print"_fix_print.html, or
-"thermo_style custom"_thermo_style.html commands.  Variables of style
-"equal" can compute complex equations that involve the following types
-of arguments:
-
-thermo keywords = ke, vol, atoms, ...
-other variables = v_a, v_myvar, ...
-math functions = div(x,y), mult(x,y), add(x,y), ...
-group functions = mass(group), xcm(group,x), ...
-atom values = x\[123\], y\[3\], vx\[34\], ...
-compute values = c_mytemp\[0\], c_thermo_press\[3\], ... :pre
-
-Adding keywords for the "thermo_style custom"_thermo_style.html command
-(which can then be accessed by variables) was discussed
-"here"_Section_modify.html#mod_13 on this page.
-
-Adding a new math function of one or two arguments can be done by
-editing one section of the Variable::evaluate() method.  Search for
-the word "customize" to find the appropriate location.
-
-Adding a new group function can be done by editing one section of the
-Variable::evaluate() method.  Search for the word "customize" to find
-the appropriate location.  You may need to add a new method to the
-Group class as well (see the group.cpp file).
-
-Accessing a new atom-based vector can be done by editing one section
-of the Variable::evaluate() method.  Search for the word "customize"
-to find the appropriate location.
-
-Adding new "compute styles"_compute.html (whose calculated values can
-then be accessed by variables) was discussed
-"here"_Section_modify.html#mod_3 on this page.
-
-:line
-:line
-
-10.15 Submitting new features for inclusion in LAMMPS :link(mod_15),h4
-
-We encourage users to submit new features or modifications for
-LAMMPS to "the core developers"_http://lammps.sandia.gov/authors.html
-so they can be added to the LAMMPS distribution. The preferred way to
-manage and coordinate this is as of Fall 2016 via the LAMMPS project on
-"GitHub"_https://github.com/lammps/lammps. An alternative is to contact
-the LAMMPS developers or the indicated developer of a package or feature
-directly and send in your contribution via e-mail.
-
-For any larger modifications or programming project, you are encouraged
-to contact the LAMMPS developers ahead of time, in order to discuss
-implementation strategies and coding guidelines, that will make it
-easier to integrate your contribution and result in less work for
-everybody involved. You are also encouraged to search through the list
-of "open issues on GitHub"_https://github.com/lammps/lammps/issues and
-submit a new issue for a planned feature, so you would not duplicate
-the work of others (and possibly get scooped by them) or have your work
-duplicated by others.
-
-How quickly your contribution will be integrated
-depends largely on how much effort it will cause to integrate and test
-it, how much it requires changes to the core codebase, and of how much
-interest it is to the larger LAMMPS community.  Please see below for a
-checklist of typical requirements. Once you have prepared everything,
-see "this tutorial"_tutorial_github.html for instructions on how to
-submit your changes or new files through a GitHub pull request. If you
-prefer to submit patches or full files, you should first make certain,
-that your code works correctly with the latest patch-level version of
-LAMMPS and contains all bugfixes from it. Then create a gzipped tar
-file of all changed or added files or a corresponding patch file using
-'diff -u' or 'diff -c' and compress it with gzip. Please only use
-gzip compression, as this works well on all platforms.
-
-If the new features/files are broadly useful we may add them as core
-files to LAMMPS or as part of a "standard
-package"_Section_start.html#start_3.  Else we will add them as a
-user-contributed file or package.  Examples of user packages are in
-src sub-directories that start with USER.  The USER-MISC package is
-simply a collection of (mostly) unrelated single files, which is the
-simplest way to have your contribution quickly added to the LAMMPS
-distribution.  You can see a list of the both standard and user
-packages by typing "make package" in the LAMMPS src directory.
-
-Note that by providing us files to release, you are agreeing to make
-them open-source, i.e. we can release them under the terms of the GPL,
-used as a license for the rest of LAMMPS.  See "Section
-1.4"_Section_intro.html#intro_4 for details.
-
-With user packages and files, all we are really providing (aside from
-the fame and fortune that accompanies having your name in the source
-code and on the "Authors page"_http://lammps.sandia.gov/authors.html
-of the "LAMMPS WWW site"_lws), is a means for you to distribute your
-work to the LAMMPS user community, and a mechanism for others to
-easily try out your new feature.  This may help you find bugs or make
-contact with new collaborators.  Note that you're also implicitly
-agreeing to support your code which means answer questions, fix bugs,
-and maintain it if LAMMPS changes in some way that breaks it (an
-unusual event).
-
-NOTE: If you prefer to actively develop and support your add-on
-feature yourself, then you may wish to make it available for download
-from your own website, as a user package that LAMMPS users can add to
-their copy of LAMMPS.  See the "Offsite LAMMPS packages and
-tools"_http://lammps.sandia.gov/offsite.html page of the LAMMPS web
-site for examples of groups that do this.  We are happy to advertise
-your package and web site from that page.  Simply email the
-"developers"_http://lammps.sandia.gov/authors.html with info about
-your package and we will post it there.
-
-The previous sections of this doc page describe how to add new "style"
-files of various kinds to LAMMPS.  Packages are simply collections of
-one or more new class files which are invoked as a new style within a
-LAMMPS input script.  If designed correctly, these additions typically
-do not require changes to the main core of LAMMPS; they are simply
-add-on files.  If you think your new feature requires non-trivial
-changes in core LAMMPS files, you'll need to "communicate with the
-developers"_http://lammps.sandia.gov/authors.html, since we may or may
-not want to make those changes.  An example of a trivial change is
-making a parent-class method "virtual" when you derive a new child
-class from it.
-
-Here is a checklist of steps you need to follow to submit a single file
-or user package for our consideration.  Following these steps will save
-both you and us time. See existing files in packages in the src dir for
-examples. If you are uncertain, please ask.
-
-All source files you provide must compile with the most current
-version of LAMMPS with multiple configurations. In particular you
-need to test compiling LAMMPS from scratch with -DLAMMPS_BIGBIG
-set in addition to the default -DLAMMPS_SMALLBIG setting. Your code
-will need to work correctly in serial and in parallel using MPI. :ulb,l
-
-For consistency with the rest of LAMMPS and especially, if you want
-your contribution(s) to be added to main LAMMPS code or one of its
-standard packages, it needs to be written in a style compatible with
-other LAMMPS source files. This means: 2-character indentation per
-level, [no tabs], no lines over 80 characters. I/O is done via
-the C-style stdio library, class header files should not import any
-system headers outside <stdio.h>, STL containers should be avoided
-in headers, and forward declarations used where possible or needed.
-All added code should be placed into the LAMMPS_NS namespace or a
-sub-namespace; global or static variables should be avoided, as they
-conflict with the modular nature of LAMMPS and the C++ class structure.
-Header files must [not] import namespaces with {using}.
-This all is so the developers can more easily understand, integrate,
-and maintain your contribution and reduce conflicts with other parts
-of LAMMPS.  This basically means that the code accesses data
-structures, performs its operations, and is formatted similar to other
-LAMMPS source files, including the use of the error class for error
-and warning messages. :l
-
-If you want your contribution to be added as a user-contributed
-feature, and it's a single file (actually a *.cpp and *.h file) it can
-rapidly be added to the USER-MISC directory.  Send us the one-line
-entry to add to the USER-MISC/README file in that dir, along with the
-2 source files.  You can do this multiple times if you wish to
-contribute several individual features.  :l
-
-If you want your contribution to be added as a user-contribution and
-it is several related features, it is probably best to make it a user
-package directory with a name like USER-FOO.  In addition to your new
-files, the directory should contain a README text file.  The README
-should contain your name and contact information and a brief
-description of what your new package does.  If your files depend on
-other LAMMPS style files also being installed (e.g. because your file
-is a derived class from the other LAMMPS class), then an Install.sh
-file is also needed to check for those dependencies.  See other README
-and Install.sh files in other USER directories as examples.  Send us a
-tarball of this USER-FOO directory. :l
-
-Your new source files need to have the LAMMPS copyright, GPL notice,
-and your name and email address at the top, like other
-user-contributed LAMMPS source files.  They need to create a class
-that is inside the LAMMPS namespace.  If the file is for one of the
-USER packages, including USER-MISC, then we are not as picky about the
-coding style (see above).  I.e. the files do not need to be in the
-same stylistic format and syntax as other LAMMPS files, though that
-would be nice for developers as well as users who try to read your
-code. :l
-
-You [must] also create a [documentation] file for each new command or
-style you are adding to LAMMPS. For simplicity and convenience, the
-documentation of groups of closely related commands or styles may be
-combined into a single file.  This will be one file for a single-file
-feature.  For a package, it might be several files.  These are simple
-text files with a specific markup language, that are then auto-converted
-to HTML and PDF. The tools for this conversion are included in the
-source distribution, and the translation can be as simple as doing
-"make html pdf" in the doc folder.
-Thus the documentation source files must be in the same format and
-style as other *.txt files in the lammps/doc/src directory for similar
-commands and styles; use one or more of them as a starting point.
-A description of the markup can also be found in
-lammps/doc/utils/txt2html/README.html
-As appropriate, the text files can include links to equations
-(see doc/Eqs/*.tex for examples, we auto-create the associated JPG
-files), or figures (see doc/JPG for examples), or even additional PDF
-files with further details (see doc/PDF for examples).  The doc page
-should also include literature citations as appropriate; see the
-bottom of doc/fix_nh.txt for examples and the earlier part of the same
-file for how to format the cite itself.  The "Restrictions" section of
-the doc page should indicate that your command is only available if
-LAMMPS is built with the appropriate USER-MISC or USER-FOO package.
-See other user package doc files for examples of how to do this. The
-prerequisite for building the HTML format files are Python 3.x and
-virtualenv, the requirement for generating the PDF format manual
-is the "htmldoc"_http://www.htmldoc.org/ software. Please run at least
-"make html" and carefully inspect and proofread the resulting HTML format
-doc page before submitting your code. :l
-
-For a new package (or even a single command) you should include one or
-more example scripts demonstrating its use.  These should run in no
-more than a couple minutes, even on a single processor, and not require
-large data files as input.  See directories under examples/USER for
-examples of input scripts other users provided for their packages.
-These example inputs are also required for validating memory accesses
-and testing for memory leaks with valgrind :l
-
-If there is a paper of yours describing your feature (either the
-algorithm/science behind the feature itself, or its initial usage, or
-its implementation in LAMMPS), you can add the citation to the *.cpp
-source file.  See src/USER-EFF/atom_vec_electron.cpp for an example.
-A LaTeX citation is stored in a variable at the top of the file and a
-single line of code that references the variable is added to the
-constructor of the class.  Whenever a user invokes your feature from
-their input script, this will cause LAMMPS to output the citation to a
-log.cite file and prompt the user to examine the file.  Note that you
-should only use this for a paper you or your group authored.
-E.g. adding a cite in the code for a paper by Nose and Hoover if you
-write a fix that implements their integrator is not the intended
-usage.  That kind of citation should just be in the doc page you
-provide. :l
-:ule
-
-Finally, as a general rule-of-thumb, the more clear and
-self-explanatory you make your documentation and README files, and the
-easier you make it for people to get started, e.g. by providing example
-scripts, the more likely it is that users will try out your new feature.
-
-:line
-:line
-
-:link(Foo)
-[(Foo)] Foo, Morefoo, and Maxfoo, J of Classic Potentials, 75, 345 (1997).
diff --git a/doc/src/Section_packages.txt b/doc/src/Section_packages.txt
index 218866e271..77f56d273c 100644
--- a/doc/src/Section_packages.txt
+++ b/doc/src/Section_packages.txt
@@ -51,8 +51,7 @@ technical questions about compiling the package. If you have problems
 using a feature provided in a user package, you may need to contact
 the contributor directly to get help.  Information on how to submit
 additions you make to LAMMPS as single files or as a standard or user
-package are given in "this section"_Section_modify.html#mod_15 of the
-manual.
+package are given in the "Modify contribute"_Modify.html doc page.
 
 Following the next two tables is a sub-section for each package.  It
 lists authors (if applicable) and summarizes the package contents.  It
diff --git a/doc/src/Section_perf.txt b/doc/src/Section_perf.txt
index 56b1d7dd04..f320780129 100644
--- a/doc/src/Section_perf.txt
+++ b/doc/src/Section_perf.txt
@@ -1,6 +1,6 @@
-"Previous Section"_Section_example.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Tools.html :c
+"Previous Section"_Examples.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Tools.html
+:c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Section_python.txt b/doc/src/Section_python.txt
index 5427cd67f2..c9b0bd8b2e 100644
--- a/doc/src/Section_python.txt
+++ b/doc/src/Section_python.txt
@@ -1,4 +1,6 @@
-"Previous Section"_Section_modify.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_errors.html :c
+"Previous Section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Section_errors.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Tools.txt b/doc/src/Tools.txt
index 0674e3cfcc..e8badfa6b9 100644
--- a/doc/src/Tools.txt
+++ b/doc/src/Tools.txt
@@ -1,6 +1,6 @@
 "Previous Section"_Section_perf.html - "LAMMPS WWW Site"_lws - "LAMMPS
 Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Section_modify.html :c
+Section"_Modify.html :c
 
 <!-- future sequence of sections:
 "Previous Section"_Python.html - "LAMMPS WWW Site"_lws -
@@ -377,7 +377,7 @@ micelle2d < def.micelle2d > data.file :pre
 
 See the def.micelle2d file in the tools directory for an example of a
 definition file.  This tool was used to create the system for the
-"micelle example"_Section_example.html.
+"micelle example"_Examples.html.
 
 :line
 
diff --git a/doc/src/atom_style.txt b/doc/src/atom_style.txt
index 5421e467aa..442bb5ac70 100644
--- a/doc/src/atom_style.txt
+++ b/doc/src/atom_style.txt
@@ -255,7 +255,7 @@ with another molecular style that stores bond,angle,etc info on a
 per-atom basis.
 
 LAMMPS can be extended with new atom styles as well as new body
-styles; see "this section"_Section_modify.html.
+styles; see the "Modify"_Modify.html doc page.
 
 :line
 
diff --git a/doc/src/body.txt b/doc/src/body.txt
index e7baf626f5..4a39ac25d8 100644
--- a/doc/src/body.txt
+++ b/doc/src/body.txt
@@ -36,8 +36,8 @@ 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.
 
-More styles may be added in the future.  See "Section
-10.12"_Section_modify.html#mod_12 for details on how to add a new body
+More styles may be added in the future.  See the "Modify
+body"_Modify_body.html doc page for details on how to add a new body
 style to the code.
 
 :line
diff --git a/doc/src/compute.txt b/doc/src/compute.txt
index c06735d28e..532a5414e3 100644
--- a/doc/src/compute.txt
+++ b/doc/src/compute.txt
@@ -153,8 +153,8 @@ via the "compute_modify"_compute_modify.html command.
 
 Computes can be deleted with the "uncompute"_uncompute.html command.
 
-Code for new computes can be added to LAMMPS (see "this
-section"_Section_modify.html of the manual) and the results of their
+Code for new computes can be added to LAMMPS; see the
+"Modify"_Modify.html doc page for details.  The results of their
 calculations accessed in the various ways described above.
 
 :line
diff --git a/doc/src/compute_chunk_atom.txt b/doc/src/compute_chunk_atom.txt
index 3a46f79d16..00a75f50c4 100644
--- a/doc/src/compute_chunk_atom.txt
+++ b/doc/src/compute_chunk_atom.txt
@@ -275,7 +275,7 @@ previously defined in the input script.  If no bracketed integer is
 appended, the per-atom vector calculated by the compute is used.  If a
 bracketed integer is appended, the Ith column of the per-atom array
 calculated by the compute is used.  Users can also write code for
-their own compute styles and "add them to LAMMPS"_Section_modify.html.
+their own compute styles and "add them to LAMMPS"_Modify.html.
 
 If the style begins with "f_", a fix ID must follow which has been
 previously defined in the input script.  If no bracketed integer is
@@ -285,7 +285,7 @@ calculated by the fix is used.  Note that some fixes only produce
 their values on certain timesteps, which must be compatible with the
 timestep on which this compute accesses the fix, else an error
 results.  Users can also write code for their own fix styles and "add
-them to LAMMPS"_Section_modify.html.
+them to LAMMPS"_Modify.html.
 
 If a value begins with "v_", a variable name for an {atom} or
 {atomfile} style "variable"_variable.html must follow which has been
diff --git a/doc/src/compute_global_atom.txt b/doc/src/compute_global_atom.txt
index 3136b1fd18..28b4aa2461 100644
--- a/doc/src/compute_global_atom.txt
+++ b/doc/src/compute_global_atom.txt
@@ -130,7 +130,7 @@ page for details.  If no bracketed integer is appended, the per-atom
 vector calculated by the compute is used.  If a bracketed integer is
 appended, the Ith column of the per-atom array calculated by the
 compute is used.  Users can also write code for their own compute
-styles and "add them to LAMMPS"_Section_modify.html.  See the
+styles and "add them to LAMMPS"_Modify.html.  See the
 discussion above for how I can be specified with a wildcard asterisk
 to effectively specify multiple values.
 
@@ -143,7 +143,7 @@ references the values, else an error results.  If no bracketed integer
 is appended, the per-atom vector calculated by the fix is used.  If a
 bracketed integer is appended, the Ith column of the per-atom array
 calculated by the fix is used.  Users can also write code for their
-own fix style and "add them to LAMMPS"_Section_modify.html.  See the
+own fix style and "add them to LAMMPS"_Modify.html.  See the
 discussion above for how I can be specified with a wildcard asterisk
 to effectively specify multiple values.
 
@@ -168,7 +168,7 @@ page for details.  If no bracketed integer is appended, the vector
 calculated by the compute is used.  If a bracketed integer is
 appended, the Ith column of the array calculated by the compute is
 used.  Users can also write code for their own compute styles and "add
-them to LAMMPS"_Section_modify.html.  See the discussion above for how
+them to LAMMPS"_Modify.html.  See the discussion above for how
 I can be specified with a wildcard asterisk to effectively specify
 multiple values.
 
@@ -181,7 +181,7 @@ global/atom references the values, else an error results.  If no
 bracketed integer is appended, the vector calculated by the fix is
 used.  If a bracketed integer is appended, the Ith column of the array
 calculated by the fix is used.  Users can also write code for their
-own fix style and "add them to LAMMPS"_Section_modify.html.  See the
+own fix style and "add them to LAMMPS"_Modify.html.  See the
 discussion above for how I can be specified with a wildcard asterisk
 to effectively specify multiple values.
 
diff --git a/doc/src/compute_reduce.txt b/doc/src/compute_reduce.txt
index 07d3c3bda7..48115a0886 100644
--- a/doc/src/compute_reduce.txt
+++ b/doc/src/compute_reduce.txt
@@ -116,7 +116,7 @@ per-atom or local quantities.  See the individual
 is appended, the vector calculated by the compute is used.  If a
 bracketed integer is appended, the Ith column of the array calculated
 by the compute is used.  Users can also write code for their own
-compute styles and "add them to LAMMPS"_Section_modify.html.  See the
+compute styles and "add them to LAMMPS"_Modify.html.  See the
 discussion above for how I can be specified with a wildcard asterisk
 to effectively specify multiple values.
 
@@ -129,9 +129,9 @@ references the values, else an error results.  If no bracketed integer
 is appended, the vector calculated by the fix is used.  If a bracketed
 integer is appended, the Ith column of the array calculated by the fix
 is used.  Users can also write code for their own fix style and "add
-them to LAMMPS"_Section_modify.html.  See the discussion above for how
-I can be specified with a wildcard asterisk to effectively specify
-multiple values.
+them to LAMMPS"_Modify.html.  See the discussion above for how I can
+be specified with a wildcard asterisk to effectively specify multiple
+values.
 
 If a value begins with "v_", a variable name must follow which has
 been previously defined in the input script.  It must be an
diff --git a/doc/src/compute_slice.txt b/doc/src/compute_slice.txt
index e89c05a0f9..13f40ecf92 100644
--- a/doc/src/compute_slice.txt
+++ b/doc/src/compute_slice.txt
@@ -58,7 +58,7 @@ page for details.  If no bracketed integer is appended, the vector
 calculated by the compute is used.  If a bracketed integer is
 appended, the Ith column of the array calculated by the compute is
 used.  Users can also write code for their own compute styles and "add
-them to LAMMPS"_Section_modify.html.
+them to LAMMPS"_Modify.html.
 
 If a value begins with "f_", a fix ID must follow which has been
 previously defined in the input script and which generates a global
@@ -69,7 +69,7 @@ the values, else an error results.  If no bracketed integer is
 appended, the vector calculated by the fix is used.  If a bracketed
 integer is appended, the Ith column of the array calculated by the fix
 is used.  Users can also write code for their own fix style and "add
-them to LAMMPS"_Section_modify.html.
+them to LAMMPS"_Modify.html.
 
 If an input value begins with "v_", a variable name must follow which
 has been previously defined in the input script.  Only vector-style
diff --git a/doc/src/dump.txt b/doc/src/dump.txt
index d130846519..ff1bf6424d 100644
--- a/doc/src/dump.txt
+++ b/doc/src/dump.txt
@@ -625,9 +625,9 @@ The {d_name} and {i_name} attributes allow to output custom per atom
 floating point or integer properties that are managed by
 "fix property/atom"_fix_property_atom.html.
 
-See "Section 10"_Section_modify.html of the manual for information
-on how to add new compute and fix styles to LAMMPS to calculate
-per-atom quantities which could then be output into dump files.
+See the "Modify"_Modify.html doc page for information on how to add
+new compute and fix styles to LAMMPS to calculate per-atom quantities
+which could then be output into dump files.
 
 :line
 
diff --git a/doc/src/dump_image.txt b/doc/src/dump_image.txt
index 3fa267d2b0..c1732be972 100644
--- a/doc/src/dump_image.txt
+++ b/doc/src/dump_image.txt
@@ -606,9 +606,9 @@ supported. :l
 
 :line
 
-See "Section 10"_Section_modify.html of the manual for information
-on how to add new compute and fix styles to LAMMPS to calculate
-per-atom quantities which could then be output into dump files.
+See the "Modify"_Modify.html doc page for information on how to add
+new compute and fix styles to LAMMPS to calculate per-atom quantities
+which could then be output into dump files.
 
 :line
 
diff --git a/doc/src/fix.txt b/doc/src/fix.txt
index e54a918cd0..ba2088576f 100644
--- a/doc/src/fix.txt
+++ b/doc/src/fix.txt
@@ -30,9 +30,9 @@ Set a fix that will be applied to a group of atoms.  In LAMMPS, a
 timestepping or minimization.  Examples include updating of atom
 positions and velocities due to time integration, controlling
 temperature, applying constraint forces to atoms, enforcing boundary
-conditions, computing diagnostics, etc.  There are dozens of fixes
-defined in LAMMPS and new ones can be added; see "this
-section"_Section_modify.html for a discussion.
+conditions, computing diagnostics, etc.  There are hundredes of fixes
+defined in LAMMPS and new ones can be added; see the
+"Modify"_Modify.html doc page for details.
 
 Fixes perform their operations at different stages of the timestep.
 If 2 or more fixes operate at the same stage of the timestep, they are
diff --git a/doc/src/fix_ave_atom.txt b/doc/src/fix_ave_atom.txt
index 3251125a5d..23e4ed235b 100644
--- a/doc/src/fix_ave_atom.txt
+++ b/doc/src/fix_ave_atom.txt
@@ -124,7 +124,7 @@ appended, the per-atom vector calculated by the compute is used.  If a
 bracketed term containing an index I is appended, the Ith column of
 the per-atom array calculated by the compute is used.  Users can also
 write code for their own compute styles and "add them to
-LAMMPS"_Section_modify.html.  See the discussion above for how I can
+LAMMPS"_Modify.html.  See the discussion above for how I can
 be specified with a wildcard asterisk to effectively specify multiple
 values.
 
@@ -136,8 +136,8 @@ the per-atom array calculated by the fix is used.  Note that some
 fixes only produce their values on certain timesteps, which must be
 compatible with {Nevery}, else an error will result.  Users can also
 write code for their own fix styles and "add them to
-LAMMPS"_Section_modify.html.  See the discussion above for how I can
-be specified with a wildcard asterisk to effectively specify multiple
+LAMMPS"_Modify.html.  See the discussion above for how I can be
+specified with a wildcard asterisk to effectively specify multiple
 values.
 
 If a value begins with "v_", a variable name must follow which has
diff --git a/doc/src/fix_ave_chunk.txt b/doc/src/fix_ave_chunk.txt
index a8691d3767..8e2a09e33f 100644
--- a/doc/src/fix_ave_chunk.txt
+++ b/doc/src/fix_ave_chunk.txt
@@ -263,7 +263,7 @@ previously defined in the input script.  If no bracketed integer is
 appended, the per-atom vector calculated by the compute is used.  If a
 bracketed integer is appended, the Ith column of the per-atom array
 calculated by the compute is used.  Users can also write code for
-their own compute styles and "add them to LAMMPS"_Section_modify.html.
+their own compute styles and "add them to LAMMPS"_Modify.html.
 See the discussion above for how I can be specified with a wildcard
 asterisk to effectively specify multiple values.
 
@@ -274,7 +274,7 @@ bracketed integer is appended, the Ith column of the per-atom array
 calculated by the fix is used.  Note that some fixes only produce
 their values on certain timesteps, which must be compatible with
 {Nevery}, else an error results.  Users can also write code for their
-own fix styles and "add them to LAMMPS"_Section_modify.html.  See the
+own fix styles and "add them to LAMMPS"_Modify.html.  See the
 discussion above for how I can be specified with a wildcard asterisk
 to effectively specify multiple values.
 
diff --git a/doc/src/fix_ave_correlate.txt b/doc/src/fix_ave_correlate.txt
index 371f2f66a8..98f352cb74 100644
--- a/doc/src/fix_ave_correlate.txt
+++ b/doc/src/fix_ave_correlate.txt
@@ -176,7 +176,7 @@ output"_thermo_style.html or other fixes such as "fix nvt"_fix_nh.html
 or "fix temp/rescale"_fix_temp_rescale.html.  See the doc pages for
 these commands which give the IDs of these computes.  Users can also
 write code for their own compute styles and "add them to
-LAMMPS"_Section_modify.html.
+LAMMPS"_Modify.html.
 
 If a value begins with "f_", a fix ID must follow which has been
 previously defined in the input script.  If no bracketed term is
@@ -189,7 +189,7 @@ values.
 Note that some fixes only produce their values on certain timesteps,
 which must be compatible with {Nevery}, else an error will result.
 Users can also write code for their own fix styles and "add them to
-LAMMPS"_Section_modify.html.
+LAMMPS"_Modify.html.
 
 If a value begins with "v_", a variable name must follow which has
 been previously defined in the input script.  Only equal-style or
diff --git a/doc/src/fix_ave_histo.txt b/doc/src/fix_ave_histo.txt
index 043f0e22be..5155f42e7b 100644
--- a/doc/src/fix_ave_histo.txt
+++ b/doc/src/fix_ave_histo.txt
@@ -183,11 +183,11 @@ Note that there is a "compute reduce"_compute_reduce.html command
 which can sum per-atom quantities into a global scalar or vector which
 can thus be accessed by fix ave/histo.  Or it can be a compute defined
 not in your input script, but by "thermodynamic
-output"_thermo_style.html or other fixes such as "fix
-nvt"_fix_nh.html or "fix temp/rescale"_fix_temp_rescale.html.  See
-the doc pages for these commands which give the IDs of these computes.
-Users can also write code for their own compute styles and "add them
-to LAMMPS"_Section_modify.html.
+output"_thermo_style.html or other fixes such as "fix nvt"_fix_nh.html
+or "fix temp/rescale"_fix_temp_rescale.html.  See the doc pages for
+these commands which give the IDs of these computes.  Users can also
+write code for their own compute styles and "add them to
+LAMMPS"_Modify.html.
 
 If a value begins with "f_", a fix ID must follow which has been
 previously defined in the input script.  If {mode} = scalar, then if
@@ -204,7 +204,7 @@ values.
 Note that some fixes only produce their values on certain timesteps,
 which must be compatible with {Nevery}, else an error will result.
 Users can also write code for their own fix styles and "add them to
-LAMMPS"_Section_modify.html.
+LAMMPS"_Modify.html.
 
 If a value begins with "v_", a variable name must follow which has
 been previously defined in the input script.  If {mode} = scalar, then
diff --git a/doc/src/fix_ave_time.txt b/doc/src/fix_ave_time.txt
index 266e3f0e38..b61f56cf02 100644
--- a/doc/src/fix_ave_time.txt
+++ b/doc/src/fix_ave_time.txt
@@ -168,7 +168,7 @@ output"_thermo_style.html or other fixes such as "fix
 nvt"_fix_nh.html or "fix temp/rescale"_fix_temp_rescale.html.  See
 the doc pages for these commands which give the IDs of these computes.
 Users can also write code for their own compute styles and "add them
-to LAMMPS"_Section_modify.html.
+to LAMMPS"_Modify.html.
 
 If a value begins with "f_", a fix ID must follow which has been
 previously defined in the input script.  If {mode} = scalar, then if
@@ -184,7 +184,7 @@ specify multiple values.
 Note that some fixes only produce their values on certain timesteps,
 which must be compatible with {Nevery}, else an error will result.
 Users can also write code for their own fix styles and "add them to
-LAMMPS"_Section_modify.html.
+LAMMPS"_Modify.html.
 
 If a value begins with "v_", a variable name must follow which has
 been previously defined in the input script.  If {mode} = scalar, then
diff --git a/doc/src/fix_controller.txt b/doc/src/fix_controller.txt
index cfb26138fd..b8d2cb43be 100644
--- a/doc/src/fix_controller.txt
+++ b/doc/src/fix_controller.txt
@@ -139,7 +139,7 @@ for details.  If no bracketed integer is appended, the scalar
 calculated by the compute is used.  If a bracketed integer is
 appended, the Ith value of the vector calculated by the compute is
 used.  Users can also write code for their own compute styles and "add
-them to LAMMPS"_Section_modify.html.
+them to LAMMPS"_Modify.html.
 
 If {pvar} begins with "f_", a fix ID must follow which has been
 previously defined in the input script and which generates a global
@@ -150,7 +150,7 @@ references the values, or else an error results.  If no bracketed integer
 is appended, the scalar calculated by the fix is used.  If a bracketed
 integer is appended, the Ith value of the vector calculated by the fix
 is used.  Users can also write code for their own fix style and "add
-them to LAMMPS"_Section_modify.html.
+them to LAMMPS"_Modify.html.
 
 If {pvar} begins with "v_", a variable name must follow which has been
 previously defined in the input script.  Only equal-style variables
diff --git a/doc/src/fix_property_atom.txt b/doc/src/fix_property_atom.txt
index 10bb89c94c..95fc2c424d 100644
--- a/doc/src/fix_property_atom.txt
+++ b/doc/src/fix_property_atom.txt
@@ -194,9 +194,9 @@ dump 1 all custom 100 tmp.dump id x y z c_1\[1\] c_1\[2\] :pre
 
 If you wish to add new "pair styles"_pair_style.html,
 "fixes"_fix.html, or "computes"_compute.html that use the per-atom
-properties defined by this fix, see "Section
-modify"_Section_modify.html#mod_1 of the manual which has some details
-on how the properties can be accessed from added classes.
+properties defined by this fix, see the "Modify atom"_Modify_atom.html
+doc page which has details on how the properties can be accessed from
+added classes.
 
 :line
 
diff --git a/doc/src/fix_vector.txt b/doc/src/fix_vector.txt
index 47b3cfc67a..385d24cff1 100644
--- a/doc/src/fix_vector.txt
+++ b/doc/src/fix_vector.txt
@@ -94,7 +94,7 @@ output"_thermo_style.html or other fixes such as "fix nvt"_fix_nh.html
 or "fix temp/rescale"_fix_temp_rescale.html.  See the doc pages for
 these commands which give the IDs of these computes.  Users can also
 write code for their own compute styles and "add them to
-LAMMPS"_Section_modify.html.
+LAMMPS"_Modify.html.
 
 If a value begins with "f_", a fix ID must follow which has been
 previously defined in the input script.  If no bracketed term is
@@ -105,7 +105,7 @@ calculated by the fix is used.
 Note that some fixes only produce their values on certain timesteps,
 which must be compatible with {Nevery}, else an error will result.
 Users can also write code for their own fix styles and "add them to
-LAMMPS"_Section_modify.html.
+LAMMPS"_Modify.html.
 
 If a value begins with "v_", a variable name must follow which has
 been previously defined in the input script.  An equal-style or
diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index fe8eb13161..fb12d0683b 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -12,10 +12,10 @@ accelerate_kokkos.html
 accelerate_omp.html
 accelerate_opt.html
 Section_howto.html
-Section_example.html
+Examples.html
 Section_perf.html
 Tools.html
-Section_modify.html
+Modify.html
 Section_python.html
 Section_errors.html
 Section_history.html
diff --git a/doc/src/run.txt b/doc/src/run.txt
index 311560d66b..913d81bb4d 100644
--- a/doc/src/run.txt
+++ b/doc/src/run.txt
@@ -126,9 +126,8 @@ and interleaving commands in your input script.  For example, a
 be redefined, e.g. to reset a thermostat temperature.  Or this could
 be useful for invoking a command you have added to LAMMPS that wraps
 some other code (e.g. as a library) to perform a computation
-periodically during a long LAMMPS run.  See "this
-section"_Section_modify.html of the documentation for info about how
-to add new commands to LAMMPS.  See "this
+periodically during a long LAMMPS run.  See the "Modify"_Modify.html
+doc page for info about how to add new commands to LAMMPS.  See "this
 section"_Section_howto.html#howto_10 of the documentation for ideas
 about how to couple LAMMPS to other codes.
 
diff --git a/doc/src/thermo_style.txt b/doc/src/thermo_style.txt
index 6102169ee3..18c5ad5ba1 100644
--- a/doc/src/thermo_style.txt
+++ b/doc/src/thermo_style.txt
@@ -108,12 +108,11 @@ Style {custom} is the most general setting and allows you to specify
 which of the keywords listed above you want printed on each
 thermodynamic timestep.  Note that the keywords c_ID, f_ID, v_name are
 references to "computes"_compute.html, "fixes"_fix.html, and
-equal-style "variables"_variable.html that have been defined
-elsewhere in the input script or can even be new styles which users
-have added to LAMMPS (see the "Section 10"_Section_modify.html
-section of the documentation).  Thus the {custom} style provides a
-flexible means of outputting essentially any desired quantity as a
-simulation proceeds.
+equal-style "variables"_variable.html that have been defined elsewhere
+in the input script or can even be new styles which users have added
+to LAMMPS.  See the "Modify"_Modify.html doc page for details on the
+latter.  Thus the {custom} style provides a flexible means of
+outputting essentially any desired quantity as a simulation proceeds.
 
 All styles except {custom} have {vol} appended to their list of
 outputs if the simulation box volume changes during the simulation.
diff --git a/doc/src/tutorial_github.txt b/doc/src/tutorial_github.txt
index 3e10b821ae..fc261bdb95 100644
--- a/doc/src/tutorial_github.txt
+++ b/doc/src/tutorial_github.txt
@@ -25,8 +25,8 @@ or improvements to LAMMPS, as it significantly reduces the amount of
 work required by the LAMMPS developers. Consequently, creating a pull
 request will increase your chances to have your contribution included
 and will reduce the time until the integration is complete. For more
-information on the requirements to have your code included into LAMMPS
-please see "Section 10.15"_Section_modify.html#mod_15
+information on the requirements to have your code included in LAMMPS,
+see the "Modify contribute"_Modify_contribute.html doc page.
 
 :line
 
-- 
GitLab


From 030f1c0127fe4e8efe3a50006668a9f532645d89 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 25 Jul 2018 11:48:57 -0400
Subject: [PATCH 093/243] Update lammps.book

---
 doc/src/lammps.book | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index fb12d0683b..ff8fe68ff1 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -16,6 +16,22 @@ Examples.html
 Section_perf.html
 Tools.html
 Modify.html
+Modify_overview.html
+Modify_contribute.html
+Modify_atom.html
+Modify_pair.html
+Modify_bond.html
+Modify_compute.html
+Modify_fix.html
+Modify_command.html
+Modify_dump.html
+Modify_kspace.html
+Modify_min.html
+Modify_region.html
+Modify_body.html
+Modify_thermo.html
+Modify_variable.html
+
 Section_python.html
 Section_errors.html
 Section_history.html
-- 
GitLab


From ee394b0ed10e43e054ca3429db40295b9f8ebe37 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 25 Jul 2018 11:53:17 -0400
Subject: [PATCH 094/243] Fixup header levels

---
 doc/src/Modify.txt      | 2 +-
 doc/src/Modify_dump.txt | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/Modify.txt b/doc/src/Modify.txt
index f7d94c89e9..4b16ad781b 100644
--- a/doc/src/Modify.txt
+++ b/doc/src/Modify.txt
@@ -14,7 +14,7 @@ Section"_Errors.html :c
 
 :line
 
-Modify & extend LAMMPS :h3
+Modify & extend LAMMPS :h2
 
 LAMMPS is designed in a modular fashion so as to be easy to modify and
 extend with new functionality.  In fact, about 95% of its source code
diff --git a/doc/src/Modify_dump.txt b/doc/src/Modify_dump.txt
index 9667a1b1fc..81af54e003 100644
--- a/doc/src/Modify_dump.txt
+++ b/doc/src/Modify_dump.txt
@@ -7,7 +7,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :line
 
-Dump styles :h2
+Dump styles :h3
 
 Classes that dump per-atom info to files are derived from the Dump
 class.  To dump new quantities or in a new format, a new derived dump
-- 
GitLab


From 592804d56f43cc5adf9e94b22d46840ed3732063 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 25 Jul 2018 11:53:31 -0400
Subject: [PATCH 095/243] Fix header level of Tools.txt

---
 doc/src/Tools.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/src/Tools.txt b/doc/src/Tools.txt
index e8badfa6b9..60b92f0f2e 100644
--- a/doc/src/Tools.txt
+++ b/doc/src/Tools.txt
@@ -14,7 +14,7 @@ Section"_Modify.html :c
 
 :line
 
-Auxiliary tools :h3
+Auxiliary tools :h2
 
 LAMMPS is designed to be a computational kernel for performing
 molecular dynamics computations.  Additional pre- and post-processing
-- 
GitLab


From 1d9ad557967507181f71f34c5dec7d76dda9177c Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 25 Jul 2018 14:10:00 -0600
Subject: [PATCH 096/243] changes to Errors and Python doc pages

---
 doc/src/Errors.txt                            |   37 +
 doc/src/Errors_bugs.txt                       |   35 +
 doc/src/Errors_common.txt                     |  123 ++
 ...Section_errors.txt => Errors_messages.txt} | 1097 +----------------
 doc/src/Errors_warnings.txt                   |  934 ++++++++++++++
 doc/src/Examples.txt                          |    6 -
 doc/src/Manual.txt                            |   32 +-
 doc/src/Modify.txt                            |   14 +-
 doc/src/Python.txt                            |   79 ++
 doc/src/Python_call.txt                       |   85 ++
 doc/src/Python_examples.txt                   |   81 ++
 doc/src/Python_install.txt                    |   74 ++
 doc/src/Python_library.txt                    |  256 ++++
 doc/src/Python_mpi.txt                        |   67 +
 doc/src/Python_overview.txt                   |   35 +
 doc/src/Python_pylammps.txt                   |   14 +
 doc/src/Python_run.txt                        |   40 +
 doc/src/Python_shlib.txt                      |   34 +
 doc/src/Python_test.txt                       |  131 ++
 doc/src/Section_commands.txt                  |    2 +-
 doc/src/Section_history.txt                   |    2 +-
 doc/src/Section_howto.txt                     |   22 +-
 doc/src/Section_intro.txt                     |    6 +-
 doc/src/Section_packages.txt                  |   10 +-
 doc/src/Section_python.txt                    |  869 -------------
 doc/src/Section_start.txt                     |   28 +-
 doc/src/Tools.txt                             |    6 -
 doc/src/fix_external.txt                      |    3 +-
 doc/src/lammps.book                           |   19 +-
 doc/src/python.txt                            |   28 +-
 doc/src/read_dump.txt                         |   10 +-
 doc/src/read_restart.txt                      |    3 +-
 src/pair.cpp                                  |    6 +-
 33 files changed, 2130 insertions(+), 2058 deletions(-)
 create mode 100644 doc/src/Errors.txt
 create mode 100644 doc/src/Errors_bugs.txt
 create mode 100644 doc/src/Errors_common.txt
 rename doc/src/{Section_errors.txt => Errors_messages.txt} (87%)
 create mode 100644 doc/src/Errors_warnings.txt
 create mode 100644 doc/src/Python.txt
 create mode 100644 doc/src/Python_call.txt
 create mode 100644 doc/src/Python_examples.txt
 create mode 100644 doc/src/Python_install.txt
 create mode 100644 doc/src/Python_library.txt
 create mode 100644 doc/src/Python_mpi.txt
 create mode 100644 doc/src/Python_overview.txt
 create mode 100644 doc/src/Python_pylammps.txt
 create mode 100644 doc/src/Python_run.txt
 create mode 100644 doc/src/Python_shlib.txt
 create mode 100644 doc/src/Python_test.txt
 delete mode 100644 doc/src/Section_python.txt

diff --git a/doc/src/Errors.txt b/doc/src/Errors.txt
new file mode 100644
index 0000000000..8e10cb6ae4
--- /dev/null
+++ b/doc/src/Errors.txt
@@ -0,0 +1,37 @@
+"Previous Section"_Python.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Section_history.html :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Errors :h3
+
+These doc pages describe the errors you can encounter when using
+LAMMPS.  The common problems include conceptual issues.  The messages
+and warnings doc pages give complete lists of all the messages the
+code may generate (except those generated by USER packages), with
+additional details for many of them.
+
+<!-- RST
+
+.. toctree::
+
+   Errors_common
+   Errors_bugs
+   Errors_messages
+   Errors_warnings
+
+END_RST -->
+
+<!-- HTML_ONLY -->
+
+"Common problems"_Errors_common.html
+"Reporting bugs"_Errors_bugs.html
+"Error messages"_Errors_messages.html 
+"Warning messages"_Errors_warnings.html :all(b)
+
+<!-- END_HTML_ONLY -->
diff --git a/doc/src/Errors_bugs.txt b/doc/src/Errors_bugs.txt
new file mode 100644
index 0000000000..c0a94c7a44
--- /dev/null
+++ b/doc/src/Errors_bugs.txt
@@ -0,0 +1,35 @@
+"Higher level section"_Errors.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Reporting bugs :h3
+
+If you are confident that you have found a bug in LAMMPS, follow these
+steps.
+
+Check the "New features and bug
+fixes"_http://lammps.sandia.gov/bug.html section of the "LAMMPS WWW
+site"_lws to see if the bug has already been reported or fixed or the
+"Unfixed bug"_http://lammps.sandia.gov/unbug.html to see if a fix is
+pending.
+
+Check the "mailing list"_http://lammps.sandia.gov/mail.html to see if
+it has been discussed before.
+
+If not, send an email to the mailing list describing the problem with
+any ideas you have as to what is causing it or where in the code the
+problem might be.  The developers will ask for more info if needed,
+such as an input script or data files.
+
+The most useful thing you can do to help us fix the bug is to isolate
+the problem.  Run it on the smallest number of atoms and fewest number
+of processors and with the simplest input script that reproduces the
+bug and try to identify what command or combination of commands is
+causing the problem.
+
+NOTE: this page needs to have GitHub issues info added
diff --git a/doc/src/Errors_common.txt b/doc/src/Errors_common.txt
new file mode 100644
index 0000000000..86a25f7e7d
--- /dev/null
+++ b/doc/src/Errors_common.txt
@@ -0,0 +1,123 @@
+"Higher level section"_Errors.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Common problems :h3
+
+If two LAMMPS runs do not produce the exact same answer on different
+machines or different numbers of processors, this is typically not a
+bug.  In theory you should get identical answers on any number of
+processors and on any machine.  In practice, numerical round-off can
+cause slight differences and eventual divergence of molecular dynamics
+phase space trajectories within a few 100s or few 1000s of timesteps.
+However, the statistical properties of the two runs (e.g. average
+energy or temperature) should still be the same.
+
+If the "velocity"_velocity.html command is used to set initial atom
+velocities, a particular atom can be assigned a different velocity
+when the problem is run on a different number of processors or on
+different machines.  If this happens, the phase space trajectories of
+the two simulations will rapidly diverge.  See the discussion of the
+{loop} option in the "velocity"_velocity.html command for details and
+options that avoid this issue.
+
+Similarly, the "create_atoms"_create_atoms.html command generates a
+lattice of atoms.  For the same physical system, the ordering and
+numbering of atoms by atom ID may be different depending on the number
+of processors.
+
+Some commands use random number generators which may be setup to
+produce different random number streams on each processor and hence
+will produce different effects when run on different numbers of
+processors.  A commonly-used example is the "fix
+langevin"_fix_langevin.html command for thermostatting.
+
+A LAMMPS simulation typically has two stages, setup and run.  Most
+LAMMPS errors are detected at setup time; others like a bond
+stretching too far may not occur until the middle of a run.
+
+LAMMPS tries to flag errors and print informative error messages so
+you can fix the problem.  For most errors it will also print the last
+input script command that it was processing.  Of course, LAMMPS cannot
+figure out your physics or numerical mistakes, like choosing too big a
+timestep, specifying erroneous force field coefficients, or putting 2
+atoms on top of each other!  If you run into errors that LAMMPS
+doesn't catch that you think it should flag, please send an email to
+the "developers"_http://lammps.sandia.gov/authors.html.
+
+If you get an error message about an invalid command in your input
+script, you can determine what command is causing the problem by
+looking in the log.lammps file or using the "echo command"_echo.html
+to see it on the screen.  If you get an error like "Invalid ...
+style", with ... being fix, compute, pair, etc, it means that you
+mistyped the style name or that the command is part of an optional
+package which was not compiled into your executable.  The list of
+available styles in your executable can be listed by using "the -h
+command-line argument"_Section_start.html#start_6.  The installation
+and compilation of optional packages is explained in the "installation
+instructions"_Section_start.html#start_3.
+
+For a given command, LAMMPS expects certain arguments in a specified
+order.  If you mess this up, LAMMPS will often flag the error, but it
+may also simply read a bogus argument and assign a value that is
+valid, but not what you wanted.  E.g. trying to read the string "abc"
+as an integer value of 0.  Careful reading of the associated doc page
+for the command should allow you to fix these problems. In most cases,
+where LAMMPS expects to read a number, either integer or floating point,
+it performs a stringent test on whether the provided input actually
+is an integer or floating-point number, respectively, and reject the
+input with an error message (for instance, when an integer is required,
+but a floating-point number 1.0 is provided):
+
+ERROR: Expected integer parameter in input script or data file :pre
+
+Some commands allow for using variable references in place of numeric
+constants so that the value can be evaluated and may change over the
+course of a run.  This is typically done with the syntax {v_name} for a
+parameter, where name is the name of the variable. On the other hand,
+immediate variable expansion with the syntax ${name} is performed while
+reading the input and before parsing commands,
+
+NOTE: Using a variable reference (i.e. {v_name}) is only allowed if
+the documentation of the corresponding command explicitly says it is.
+
+Generally, LAMMPS will print a message to the screen and logfile and
+exit gracefully when it encounters a fatal error.  Sometimes it will
+print a WARNING to the screen and logfile and continue on; you can
+decide if the WARNING is important or not.  A WARNING message that is
+generated in the middle of a run is only printed to the screen, not to
+the logfile, to avoid cluttering up thermodynamic output.  If LAMMPS
+crashes or hangs without spitting out an error message first then it
+could be a bug (see "this section"_#err_2) or one of the following
+cases:
+
+LAMMPS runs in the available memory a processor allows to be
+allocated.  Most reasonable MD runs are compute limited, not memory
+limited, so this shouldn't be a bottleneck on most platforms.  Almost
+all large memory allocations in the code are done via C-style malloc's
+which will generate an error message if you run out of memory.
+Smaller chunks of memory are allocated via C++ "new" statements.  If
+you are unlucky you could run out of memory just when one of these
+small requests is made, in which case the code will crash or hang (in
+parallel), since LAMMPS doesn't trap on those errors.
+
+Illegal arithmetic can cause LAMMPS to run slow or crash.  This is
+typically due to invalid physics and numerics that your simulation is
+computing.  If you see wild thermodynamic values or NaN values in your
+LAMMPS output, something is wrong with your simulation.  If you
+suspect this is happening, it is a good idea to print out
+thermodynamic info frequently (e.g. every timestep) via the
+"thermo"_thermo.html so you can monitor what is happening.
+Visualizing the atom movement is also a good idea to insure your model
+is behaving as you expect.
+
+In parallel, one way LAMMPS can hang is due to how different MPI
+implementations handle buffering of messages.  If the code hangs
+without an error message, it may be that you need to specify an MPI
+setting or two (usually via an environment variable) to enable
+buffering or boost the sizes of messages that can be buffered.
diff --git a/doc/src/Section_errors.txt b/doc/src/Errors_messages.txt
similarity index 87%
rename from doc/src/Section_errors.txt
rename to doc/src/Errors_messages.txt
index 95482b06dc..1563e02901 100644
--- a/doc/src/Section_errors.txt
+++ b/doc/src/Errors_messages.txt
@@ -1,6 +1,5 @@
-"Previous Section"_Section_python.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Section_history.html :c
+"Higher level section"_Errors.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -8,185 +7,27 @@ Section"_Section_history.html :c
 
 :line
 
-12. Errors :h2
+Error messages :h3
 
-This section describes the errors you can encounter when using LAMMPS,
-either conceptually, or as printed out by the program.
+This is an alphabetic list of the ERROR messages LAMMPS prints out and
+the reason why.  If the explanation here is not sufficient, the
+documentation for the offending command may help.  Error messages also
+list the source file and line number where the error was generated.
+For example, a message like this:
 
-12.1 "Common problems"_#err_1
-12.2 "Reporting bugs"_#err_2
-12.3 "Error & warning messages"_#err_3 :all(b)
-
-:line
-:line
-
-12.1 Common problems :link(err_1),h4
-
-If two LAMMPS runs do not produce the exact same answer on different
-machines or different numbers of processors, this is typically not a
-bug.  In theory you should get identical answers on any number of
-processors and on any machine.  In practice, numerical round-off can
-cause slight differences and eventual divergence of molecular dynamics
-phase space trajectories within a few 100s or few 1000s of timesteps.
-However, the statistical properties of the two runs (e.g. average
-energy or temperature) should still be the same.
-
-If the "velocity"_velocity.html command is used to set initial atom
-velocities, a particular atom can be assigned a different velocity
-when the problem is run on a different number of processors or on
-different machines.  If this happens, the phase space trajectories of
-the two simulations will rapidly diverge.  See the discussion of the
-{loop} option in the "velocity"_velocity.html command for details and
-options that avoid this issue.
-
-Similarly, the "create_atoms"_create_atoms.html command generates a
-lattice of atoms.  For the same physical system, the ordering and
-numbering of atoms by atom ID may be different depending on the number
-of processors.
-
-Some commands use random number generators which may be setup to
-produce different random number streams on each processor and hence
-will produce different effects when run on different numbers of
-processors.  A commonly-used example is the "fix
-langevin"_fix_langevin.html command for thermostatting.
-
-A LAMMPS simulation typically has two stages, setup and run.  Most
-LAMMPS errors are detected at setup time; others like a bond
-stretching too far may not occur until the middle of a run.
-
-LAMMPS tries to flag errors and print informative error messages so
-you can fix the problem.  For most errors it will also print the last
-input script command that it was processing.  Of course, LAMMPS cannot
-figure out your physics or numerical mistakes, like choosing too big a
-timestep, specifying erroneous force field coefficients, or putting 2
-atoms on top of each other!  If you run into errors that LAMMPS
-doesn't catch that you think it should flag, please send an email to
-the "developers"_http://lammps.sandia.gov/authors.html.
-
-If you get an error message about an invalid command in your input
-script, you can determine what command is causing the problem by
-looking in the log.lammps file or using the "echo command"_echo.html
-to see it on the screen.  If you get an error like "Invalid ...
-style", with ... being fix, compute, pair, etc, it means that you
-mistyped the style name or that the command is part of an optional
-package which was not compiled into your executable.  The list of
-available styles in your executable can be listed by using "the -h
-command-line argument"_Section_start.html#start_6.  The installation
-and compilation of optional packages is explained in the "installation
-instructions"_Section_start.html#start_3.
-
-For a given command, LAMMPS expects certain arguments in a specified
-order.  If you mess this up, LAMMPS will often flag the error, but it
-may also simply read a bogus argument and assign a value that is
-valid, but not what you wanted.  E.g. trying to read the string "abc"
-as an integer value of 0.  Careful reading of the associated doc page
-for the command should allow you to fix these problems. In most cases,
-where LAMMPS expects to read a number, either integer or floating point,
-it performs a stringent test on whether the provided input actually
-is an integer or floating-point number, respectively, and reject the
-input with an error message (for instance, when an integer is required,
-but a floating-point number 1.0 is provided):
-
-ERROR: Expected integer parameter in input script or data file :pre
-
-Some commands allow for using variable references in place of numeric
-constants so that the value can be evaluated and may change over the
-course of a run.  This is typically done with the syntax {v_name} for a
-parameter, where name is the name of the variable. On the other hand,
-immediate variable expansion with the syntax ${name} is performed while
-reading the input and before parsing commands,
-
-NOTE: Using a variable reference (i.e. {v_name}) is only allowed if
-the documentation of the corresponding command explicitly says it is.
-
-Generally, LAMMPS will print a message to the screen and logfile and
-exit gracefully when it encounters a fatal error.  Sometimes it will
-print a WARNING to the screen and logfile and continue on; you can
-decide if the WARNING is important or not.  A WARNING message that is
-generated in the middle of a run is only printed to the screen, not to
-the logfile, to avoid cluttering up thermodynamic output.  If LAMMPS
-crashes or hangs without spitting out an error message first then it
-could be a bug (see "this section"_#err_2) or one of the following
-cases:
-
-LAMMPS runs in the available memory a processor allows to be
-allocated.  Most reasonable MD runs are compute limited, not memory
-limited, so this shouldn't be a bottleneck on most platforms.  Almost
-all large memory allocations in the code are done via C-style malloc's
-which will generate an error message if you run out of memory.
-Smaller chunks of memory are allocated via C++ "new" statements.  If
-you are unlucky you could run out of memory just when one of these
-small requests is made, in which case the code will crash or hang (in
-parallel), since LAMMPS doesn't trap on those errors.
-
-Illegal arithmetic can cause LAMMPS to run slow or crash.  This is
-typically due to invalid physics and numerics that your simulation is
-computing.  If you see wild thermodynamic values or NaN values in your
-LAMMPS output, something is wrong with your simulation.  If you
-suspect this is happening, it is a good idea to print out
-thermodynamic info frequently (e.g. every timestep) via the
-"thermo"_thermo.html so you can monitor what is happening.
-Visualizing the atom movement is also a good idea to insure your model
-is behaving as you expect.
-
-In parallel, one way LAMMPS can hang is due to how different MPI
-implementations handle buffering of messages.  If the code hangs
-without an error message, it may be that you need to specify an MPI
-setting or two (usually via an environment variable) to enable
-buffering or boost the sizes of messages that can be buffered.
-
-:line
-
-12.2 Reporting bugs :link(err_2),h4
-
-If you are confident that you have found a bug in LAMMPS, follow these
-steps.
-
-Check the "New features and bug
-fixes"_http://lammps.sandia.gov/bug.html section of the "LAMMPS WWW
-site"_lws to see if the bug has already been reported or fixed or the
-"Unfixed bug"_http://lammps.sandia.gov/unbug.html to see if a fix is
-pending.
-
-Check the "mailing list"_http://lammps.sandia.gov/mail.html
-to see if it has been discussed before.
-
-If not, send an email to the mailing list describing the problem with
-any ideas you have as to what is causing it or where in the code the
-problem might be.  The developers will ask for more info if needed,
-such as an input script or data files.
-
-The most useful thing you can do to help us fix the bug is to isolate
-the problem.  Run it on the smallest number of atoms and fewest number
-of processors and with the simplest input script that reproduces the
-bug and try to identify what command or combination of commands is
-causing the problem.
-
-As a last resort, you can send an email directly to the
-"developers"_http://lammps.sandia.gov/authors.html.
-
-:line
-
-12.3 Error & warning messages :h3,link(err_3)
-
-These are two alphabetic lists of the "ERROR"_#error and
-"WARNING"_#warn messages LAMMPS prints out and the reason why.  If the
-explanation here is not sufficient, the documentation for the
-offending command may help.
-Error and warning messages also list the source file and line number
-where the error was generated.  For example, this message
-
-ERROR: Illegal velocity command (velocity.cpp:78)
+ERROR: Illegal velocity command (velocity.cpp:78) :pre
 
 means that line #78 in the file src/velocity.cpp generated the error.
 Looking in the source code may help you figure out what went wrong.
 
 Note that error messages from "user-contributed
-packages"_Section_start.html#start_3 are not listed here.  If such an
-error occurs and is not self-explanatory, you'll need to look in the
-source code or contact the author of the package.
+packages"_Section_package.html#table_user are not listed here.  If
+such an error occurs and is not self-explanatory, you'll need to look
+in the source code or contact the author of the package.
+
+Doc page with "WARNING messages"_Errors_warnings.html
 
-Errors: :h3,link(error)
+:line
 
 :dlb
 
@@ -803,13 +644,6 @@ lo value must be less than the hi value for all 3 dimensions. :dd
 The box command cannot be used after a read_data, read_restart, or
 create_box command. :dd
 
-{BUG: restartinfo=1 but no restart support in pair style} :dt
-
-The pair style has a bug, where it does not support reading
-and writing information to a restart file, but does not set
-the member variable restartinfo to 0 as required in that case. :dd
-
-
 {CPU neighbor lists must be used for ellipsoid/sphere mix.} :dt
 
 When using Gay-Berne or RE-squared pair styles with both ellipsoidal and
@@ -11003,904 +10837,3 @@ Self-explanatory. :dd
 Self-explanatory. :dd
 
 :dle
-
-Warnings: :h3,link(warn)
-
-:dlb
-
-{Adjusting Coulombic cutoff for MSM, new cutoff = %g} :dt
-
-The adjust/cutoff command is turned on and the Coulombic cutoff has been
-adjusted to match the user-specified accuracy. :dd
-
-{Angle atoms missing at step %ld} :dt
-
-One or more of 3 atoms needed to compute a particular angle are
-missing on this processor.  Typically this is because the pairwise
-cutoff is set too short or the angle has blown apart and an atom is
-too far away. :dd
-
-{Angle style in data file differs from currently defined angle style} :dt
-
-Self-explanatory. :dd
-
-{Atom style in data file differs from currently defined atom style} :dt
-
-Self-explanatory. :dd
-
-{Bond atom missing in box size check} :dt
-
-The 2nd atoms needed to compute a particular bond is missing on this
-processor.  Typically this is because the pairwise cutoff is set too
-short or the bond has blown apart and an atom is too far away. :dd
-
-{Bond atom missing in image check} :dt
-
-The 2nd atom in a particular bond is missing on this processor.
-Typically this is because the pairwise cutoff is set too short or the
-bond has blown apart and an atom is too far away. :dd
-
-{Bond atoms missing at step %ld} :dt
-
-The 2nd atom needed to compute a particular bond is missing on this
-processor.  Typically this is because the pairwise cutoff is set too
-short or the bond has blown apart and an atom is too far away. :dd
-
-{Bond style in data file differs from currently defined bond style} :dt
-
-Self-explanatory. :dd
-
-{Bond/angle/dihedral extent > half of periodic box length} :dt
-
-This is a restriction because LAMMPS can be confused about which image
-of an atom in the bonded interaction is the correct one to use.
-"Extent" in this context means the maximum end-to-end length of the
-bond/angle/dihedral.  LAMMPS computes this by taking the maximum bond
-length, multiplying by the number of bonds in the interaction (e.g. 3
-for a dihedral) and adding a small amount of stretch. :dd
-
-{Both groups in compute group/group have a net charge; the Kspace boundary correction to energy will be non-zero} :dt
-
-Self-explanatory. :dd
-
-{Calling write_dump before a full system init.} :dt
-
-The write_dump command is used before the system has been fully
-initialized as part of a 'run' or 'minimize' command. Not all dump
-styles and features are fully supported at this point and thus the
-command may fail or produce incomplete or incorrect output. Insert
-a "run 0" command, if a full system init is required. :dd
-
-{Cannot count rigid body degrees-of-freedom before bodies are fully initialized} :dt
-
-This means the temperature associated with the rigid bodies may be
-incorrect on this timestep. :dd
-
-{Cannot count rigid body degrees-of-freedom before bodies are initialized} :dt
-
-This means the temperature associated with the rigid bodies may be
-incorrect on this timestep. :dd
-
-{Cannot include log terms without 1/r terms; setting flagHI to 1} :dt
-
-Self-explanatory. :dd
-
-{Cannot include log terms without 1/r terms; setting flagHI to 1.} :dt
-
-Self-explanatory. :dd
-
-{Charges are set, but coulombic solver is not used} :dt
-
-Self-explanatory. :dd
-
-{Charges did not converge at step %ld: %lg} :dt
-
-Self-explanatory. :dd
-
-{Communication cutoff is too small for SNAP micro load balancing, increased to %lf} :dt
-
-Self-explanatory. :dd
-
-{Compute cna/atom cutoff may be too large to find ghost atom neighbors} :dt
-
-The neighbor cutoff used may not encompass enough ghost atoms
-to perform this operation correctly. :dd
-
-{Computing temperature of portions of rigid bodies} :dt
-
-The group defined by the temperature compute does not encompass all
-the atoms in one or more rigid bodies, so the change in
-degrees-of-freedom for the atoms in those partial rigid bodies will
-not be accounted for. :dd
-
-{Create_bonds max distance > minimum neighbor cutoff} :dt
-
-This means atom pairs for some atom types may not be in the neighbor
-list and thus no bond can be created between them. :dd
-
-{Delete_atoms cutoff > minimum neighbor cutoff} :dt
-
-This means atom pairs for some atom types may not be in the neighbor
-list and thus an atom in that pair cannot be deleted. :dd
-
-{Dihedral atoms missing at step %ld} :dt
-
-One or more of 4 atoms needed to compute a particular dihedral are
-missing on this processor.  Typically this is because the pairwise
-cutoff is set too short or the dihedral has blown apart and an atom is
-too far away. :dd
-
-{Dihedral problem} :dt
-
-Conformation of the 4 listed dihedral atoms is extreme; you may want
-to check your simulation geometry. :dd
-
-{Dihedral problem: %d %ld %d %d %d %d} :dt
-
-Conformation of the 4 listed dihedral atoms is extreme; you may want
-to check your simulation geometry. :dd
-
-{Dihedral style in data file differs from currently defined dihedral style} :dt
-
-Self-explanatory. :dd
-
-{Dump dcd/xtc timestamp may be wrong with fix dt/reset} :dt
-
-If the fix changes the timestep, the dump dcd file will not
-reflect the change. :dd
-
-{Energy due to X extra global DOFs will be included in minimizer energies} :dt
-
-When using fixes like box/relax, the potential energy used by the minimizer
-is augmented by an additional energy provided by the fix. Thus the printed
-converged energy may be different from the total potential energy. :dd
-
-{Energy tally does not account for 'zero yes'} :dt
-
-The energy removed by using the 'zero yes' flag is not accounted
-for in the energy tally and thus energy conservation cannot be
-monitored in this case. :dd
-
-{Estimated error in splitting of dispersion coeffs is %g} :dt
-
-Error is greater than 0.0001 percent. :dd
-
-{Ewald/disp Newton solver failed, using old method to estimate g_ewald} :dt
-
-Self-explanatory. Choosing a different cutoff value may help. :dd
-
-{FENE bond too long} :dt
-
-A FENE bond has stretched dangerously far.  It's interaction strength
-will be truncated to attempt to prevent the bond from blowing up. :dd
-
-{FENE bond too long: %ld %d %d %g} :dt
-
-A FENE bond has stretched dangerously far.  It's interaction strength
-will be truncated to attempt to prevent the bond from blowing up. :dd
-
-{FENE bond too long: %ld %g} :dt
-
-A FENE bond has stretched dangerously far.  It's interaction strength
-will be truncated to attempt to prevent the bond from blowing up. :dd
-
-{Fix SRD walls overlap but fix srd overlap not set} :dt
-
-You likely want to set this in your input script. :dd
-
-{Fix bond/swap will ignore defined angles} :dt
-
-See the doc page for fix bond/swap for more info on this
-restriction. :dd
-
-{Fix deposit near setting < possible overlap separation %g} :dt
-
-This test is performed for finite size particles with a diameter, not
-for point particles.  The near setting is smaller than the particle
-diameter which can lead to overlaps. :dd
-
-{Fix evaporate may delete atom with non-zero molecule ID} :dt
-
-This is probably an error, since you should not delete only one atom
-of a molecule. :dd
-
-{Fix gcmc using full_energy option} :dt
-
-Fix gcmc has automatically turned on the full_energy option since it
-is required for systems like the one specified by the user. User input
-included one or more of the following: kspace, triclinic, a hybrid
-pair style, an eam pair style, or no "single" function for the pair
-style. :dd
-
-{Fix property/atom mol or charge w/out ghost communication} :dt
-
-A model typically needs these properties defined for ghost atoms. :dd
-
-{Fix qeq CG convergence failed (%g) after %d iterations at %ld step} :dt
-
-Self-explanatory. :dd
-
-{Fix qeq has non-zero lower Taper radius cutoff} :dt
-
-Absolute value must be <= 0.01. :dd
-
-{Fix qeq has very low Taper radius cutoff} :dt
-
-Value should typically be >= 5.0. :dd
-
-{Fix qeq/dynamic tolerance may be too small for damped dynamics} :dt
-
-Self-explanatory. :dd
-
-{Fix qeq/fire tolerance may be too small for damped fires} :dt
-
-Self-explanatory. :dd
-
-{Fix rattle should come after all other integration fixes} :dt
-
-This fix is designed to work after all other integration fixes change
-atom positions.  Thus it should be the last integration fix specified.
-If not, it will not satisfy the desired constraints as well as it
-otherwise would. :dd
-
-{Fix recenter should come after all other integration fixes} :dt
-
-Other fixes may change the position of the center-of-mass, so
-fix recenter should come last. :dd
-
-{Fix srd SRD moves may trigger frequent reneighboring} :dt
-
-This is because the SRD particles may move long distances. :dd
-
-{Fix srd grid size > 1/4 of big particle diameter} :dt
-
-This may cause accuracy problems. :dd
-
-{Fix srd particle moved outside valid domain} :dt
-
-This may indicate a problem with your simulation parameters. :dd
-
-{Fix srd particles may move > big particle diameter} :dt
-
-This may cause accuracy problems. :dd
-
-{Fix srd viscosity < 0.0 due to low SRD density} :dt
-
-This may cause accuracy problems. :dd
-
-{Fix thermal/conductivity comes before fix ave/spatial} :dt
-
-The order of these 2 fixes in your input script is such that fix
-thermal/conductivity comes first.  If you are using fix ave/spatial to
-measure the temperature profile induced by fix viscosity, then this
-may cause a glitch in the profile since you are averaging immediately
-after swaps have occurred.  Flipping the order of the 2 fixes
-typically helps. :dd
-
-{Fix viscosity comes before fix ave/spatial} :dt
-
-The order of these 2 fixes in your input script is such that
-fix viscosity comes first.  If you are using fix ave/spatial
-to measure the velocity profile induced by fix viscosity, then
-this may cause a glitch in the profile since you are averaging
-immediately after swaps have occurred.  Flipping the order
-of the 2 fixes typically helps. :dd
-
-{Fixes cannot send data in Kokkos communication, switching to classic communication} :dt
-
-This is current restriction with Kokkos. :dd
-
-{For better accuracy use 'pair_modify table 0'} :dt
-
-The user-specified force accuracy cannot be achieved unless the table
-feature is disabled by using 'pair_modify table 0'. :dd
-
-{Geometric mixing assumed for 1/r^6 coefficients} :dt
-
-Self-explanatory. :dd
-
-{Group for fix_modify temp != fix group} :dt
-
-The fix_modify command is specifying a temperature computation that
-computes a temperature on a different group of atoms than the fix
-itself operates on.  This is probably not what you want to do. :dd
-
-{H matrix size has been exceeded: m_fill=%d H.m=%d\n} :dt
-
-This is the size of the matrix. :dd
-
-{Ignoring unknown or incorrect info command flag} :dt
-
-Self-explanatory.  An unknown argument was given to the info command.
-Compare your input with the documentation. :dd
-
-{Improper atoms missing at step %ld} :dt
-
-One or more of 4 atoms needed to compute a particular improper are
-missing on this processor.  Typically this is because the pairwise
-cutoff is set too short or the improper has blown apart and an atom is
-too far away. :dd
-
-{Improper problem: %d %ld %d %d %d %d} :dt
-
-Conformation of the 4 listed improper atoms is extreme; you may want
-to check your simulation geometry. :dd
-
-{Improper style in data file differs from currently defined improper style} :dt
-
-Self-explanatory. :dd
-
-{Inconsistent image flags} :dt
-
-The image flags for a pair on bonded atoms appear to be inconsistent.
-Inconsistent means that when the coordinates of the two atoms are
-unwrapped using the image flags, the two atoms are far apart.
-Specifically they are further apart than half a periodic box length.
-Or they are more than a box length apart in a non-periodic dimension.
-This is usually due to the initial data file not having correct image
-flags for the 2 atoms in a bond that straddles a periodic boundary.
-They should be different by 1 in that case.  This is a warning because
-inconsistent image flags will not cause problems for dynamics or most
-LAMMPS simulations.  However they can cause problems when such atoms
-are used with the fix rigid or replicate commands.  Note that if you
-have an infinite periodic crystal with bonds then it is impossible to
-have fully consistent image flags, since some bonds will cross
-periodic boundaries and connect two atoms with the same image
-flag. :dd
-
-{KIM Model does not provide 'energy'; Potential energy will be zero} :dt
-
-Self-explanatory. :dd
-
-{KIM Model does not provide 'forces'; Forces will be zero} :dt
-
-Self-explanatory. :dd
-
-{KIM Model does not provide 'particleEnergy'; energy per atom will be zero} :dt
-
-Self-explanatory. :dd
-
-{KIM Model does not provide 'particleVirial'; virial per atom will be zero} :dt
-
-Self-explanatory. :dd
-
-{Kspace_modify slab param < 2.0 may cause unphysical behavior} :dt
-
-The kspace_modify slab parameter should be larger to insure periodic
-grids padded with empty space do not overlap. :dd
-
-{Less insertions than requested} :dt
-
-The fix pour command was unsuccessful at finding open space
-for as many particles as it tried to insert. :dd
-
-{Library error in lammps_gather_atoms} :dt
-
-This library function cannot be used if atom IDs are not defined
-or are not consecutively numbered. :dd
-
-{Library error in lammps_scatter_atoms} :dt
-
-This library function cannot be used if atom IDs are not defined or
-are not consecutively numbered, or if no atom map is defined.  See the
-atom_modify command for details about atom maps. :dd
-
-{Lost atoms via change_box: original %ld current %ld} :dt
-
-The command options you have used caused atoms to be lost. :dd
-
-{Lost atoms via displace_atoms: original %ld current %ld} :dt
-
-The command options you have used caused atoms to be lost. :dd
-
-{Lost atoms: original %ld current %ld} :dt
-
-Lost atoms are checked for each time thermo output is done.  See the
-thermo_modify lost command for options.  Lost atoms usually indicate
-bad dynamics, e.g. atoms have been blown far out of the simulation
-box, or moved further than one processor's sub-domain away before
-reneighboring. :dd
-
-{MSM mesh too small, increasing to 2 points in each direction} :dt
-
-Self-explanatory. :dd
-
-{Mismatch between velocity and compute groups} :dt
-
-The temperature computation used by the velocity command will not be
-on the same group of atoms that velocities are being set for. :dd
-
-{Mixing forced for lj coefficients} :dt
-
-Self-explanatory. :dd
-
-{Molecule attributes do not match system attributes} :dt
-
-An attribute is specified (e.g. diameter, charge) that is
-not defined for the specified atom style. :dd
-
-{Molecule has bond topology but no special bond settings} :dt
-
-This means the bonded atoms will not be excluded in pair-wise
-interactions. :dd
-
-{Molecule template for create_atoms has multiple molecules} :dt
-
-The create_atoms command will only create molecules of a single type,
-i.e. the first molecule in the template. :dd
-
-{Molecule template for fix gcmc has multiple molecules} :dt
-
-The fix gcmc command will only create molecules of a single type,
-i.e. the first molecule in the template. :dd
-
-{Molecule template for fix shake has multiple molecules} :dt
-
-The fix shake command will only recognize molecules of a single
-type, i.e. the first molecule in the template. :dd
-
-{More than one compute centro/atom} :dt
-
-It is not efficient to use compute centro/atom more than once. :dd
-
-{More than one compute cluster/atom} :dt
-
-It is not efficient to use compute cluster/atom  more than once. :dd
-
-{More than one compute cna/atom defined} :dt
-
-It is not efficient to use compute cna/atom  more than once. :dd
-
-{More than one compute contact/atom} :dt
-
-It is not efficient to use compute contact/atom more than once. :dd
-
-{More than one compute coord/atom} :dt
-
-It is not efficient to use compute coord/atom more than once. :dd
-
-{More than one compute damage/atom} :dt
-
-It is not efficient to use compute ke/atom more than once. :dd
-
-{More than one compute dilatation/atom} :dt
-
-Self-explanatory. :dd
-
-{More than one compute erotate/sphere/atom} :dt
-
-It is not efficient to use compute erorate/sphere/atom more than once. :dd
-
-{More than one compute hexorder/atom} :dt
-
-It is not efficient to use compute hexorder/atom more than once. :dd
-
-{More than one compute ke/atom} :dt
-
-It is not efficient to use compute ke/atom more than once. :dd
-
-{More than one compute orientorder/atom} :dt
-
-It is not efficient to use compute orientorder/atom more than once. :dd
-
-{More than one compute plasticity/atom} :dt
-
-Self-explanatory. :dd
-
-{More than one compute sna/atom} :dt
-
-Self-explanatory. :dd
-
-{More than one compute snad/atom} :dt
-
-Self-explanatory. :dd
-
-{More than one compute snav/atom} :dt
-
-Self-explanatory. :dd
-
-{More than one fix poems} :dt
-
-It is not efficient to use fix poems more than once. :dd
-
-{More than one fix rigid} :dt
-
-It is not efficient to use fix rigid more than once. :dd
-
-{Neighbor exclusions used with KSpace solver may give inconsistent Coulombic energies} :dt
-
-This is because excluding specific pair interactions also excludes
-them from long-range interactions which may not be the desired effect.
-The special_bonds command handles this consistently by insuring
-excluded (or weighted) 1-2, 1-3, 1-4 interactions are treated
-consistently by both the short-range pair style and the long-range
-solver.  This is not done for exclusions of charged atom pairs via the
-neigh_modify exclude command. :dd
-
-{New thermo_style command, previous thermo_modify settings will be lost} :dt
-
-If a thermo_style command is used after a thermo_modify command, the
-settings changed by the thermo_modify command will be reset to their
-default values.  This is because the thermo_modify command acts on
-the currently defined thermo style, and a thermo_style command creates
-a new style. :dd
-
-{No Kspace calculation with verlet/split} :dt
-
-The 2nd partition performs a kspace calculation so the kspace_style
-command must be used. :dd
-
-{No automatic unit conversion to XTC file format conventions possible for units lj} :dt
-
-This means no scaling will be performed. :dd
-
-{No fixes defined, atoms won't move} :dt
-
-If you are not using a fix like nve, nvt, npt then atom velocities and
-coordinates will not be updated during timestepping. :dd
-
-{No joints between rigid bodies, use fix rigid instead} :dt
-
-The bodies defined by fix poems are not connected by joints.  POEMS
-will integrate the body motion, but it would be more efficient to use
-fix rigid. :dd
-
-{Not using real units with pair reax} :dt
-
-This is most likely an error, unless you have created your own ReaxFF
-parameter file in a different set of units. :dd
-
-{Number of MSM mesh points changed to be a multiple of 2} :dt
-
-MSM requires that the number of grid points in each direction be a multiple
-of two and the number of grid points in one or more directions have been
-adjusted to meet this requirement. :dd
-
-{OMP_NUM_THREADS environment is not set.} :dt
-
-This environment variable must be set appropriately to use the
-USER-OMP package. :dd
-
-{One or more atoms are time integrated more than once} :dt
-
-This is probably an error since you typically do not want to
-advance the positions or velocities of an atom more than once
-per timestep. :dd
-
-{One or more chunks do not contain all atoms in molecule} :dt
-
-This may not be what you intended. :dd
-
-{One or more dynamic groups may not be updated at correct point in timestep} :dt
-
-If there are other fixes that act immediately after the initial stage
-of time integration within a timestep (i.e. after atoms move), then
-the command that sets up the dynamic group should appear after those
-fixes.  This will insure that dynamic group assignments are made
-after all atoms have moved. :dd
-
-{One or more respa levels compute no forces} :dt
-
-This is computationally inefficient. :dd
-
-{Pair COMB charge %.10f with force %.10f hit max barrier} :dt
-
-Something is possibly wrong with your model. :dd
-
-{Pair COMB charge %.10f with force %.10f hit min barrier} :dt
-
-Something is possibly wrong with your model. :dd
-
-{Pair brownian needs newton pair on for momentum conservation} :dt
-
-Self-explanatory. :dd
-
-{Pair dpd needs newton pair on for momentum conservation} :dt
-
-Self-explanatory. :dd
-
-{Pair dsmc: num_of_collisions > number_of_A} :dt
-
-Collision model in DSMC is breaking down. :dd
-
-{Pair dsmc: num_of_collisions > number_of_B} :dt
-
-Collision model in DSMC is breaking down. :dd
-
-{Pair style in data file differs from currently defined pair style} :dt
-
-Self-explanatory. :dd
-
-{Particle deposition was unsuccessful} :dt
-
-The fix deposit command was not able to insert as many atoms as
-needed.  The requested volume fraction may be too high, or other atoms
-may be in the insertion region. :dd
-
-{Proc sub-domain size < neighbor skin, could lead to lost atoms} :dt
-
-The decomposition of the physical domain (likely due to load
-balancing) has led to a processor's sub-domain being smaller than the
-neighbor skin in one or more dimensions.  Since reneighboring is
-triggered by atoms moving the skin distance, this may lead to lost
-atoms, if an atom moves all the way across a neighboring processor's
-sub-domain before reneighboring is triggered. :dd
-
-{Reducing PPPM order b/c stencil extends beyond nearest neighbor processor} :dt
-
-This may lead to a larger grid than desired.  See the kspace_modify overlap
-command to prevent changing of the PPPM order. :dd
-
-{Reducing PPPMDisp Coulomb order b/c stencil extends beyond neighbor processor} :dt
-
-This may lead to a larger grid than desired.  See the kspace_modify overlap
-command to prevent changing of the PPPM order. :dd
-
-{Reducing PPPMDisp dispersion order b/c stencil extends beyond neighbor processor} :dt
-
-This may lead to a larger grid than desired.  See the kspace_modify overlap
-command to prevent changing of the PPPM order. :dd
-
-{Replacing a fix, but new group != old group} :dt
-
-The ID and style of a fix match for a fix you are changing with a fix
-command, but the new group you are specifying does not match the old
-group. :dd
-
-{Replicating in a non-periodic dimension} :dt
-
-The parameters for a replicate command will cause a non-periodic
-dimension to be replicated; this may cause unwanted behavior. :dd
-
-{Resetting reneighboring criteria during PRD} :dt
-
-A PRD simulation requires that neigh_modify settings be delay = 0,
-every = 1, check = yes.  Since these settings were not in place,
-LAMMPS changed them and will restore them to their original values
-after the PRD simulation. :dd
-
-{Resetting reneighboring criteria during TAD} :dt
-
-A TAD simulation requires that neigh_modify settings be delay = 0,
-every = 1, check = yes.  Since these settings were not in place,
-LAMMPS changed them and will restore them to their original values
-after the PRD simulation. :dd
-
-{Resetting reneighboring criteria during minimization} :dt
-
-Minimization requires that neigh_modify settings be delay = 0, every =
-1, check = yes.  Since these settings were not in place, LAMMPS
-changed them and will restore them to their original values after the
-minimization. :dd
-
-{Restart file used different # of processors} :dt
-
-The restart file was written out by a LAMMPS simulation running on a
-different number of processors.  Due to round-off, the trajectories of
-your restarted simulation may diverge a little more quickly than if
-you ran on the same # of processors. :dd
-
-{Restart file used different 3d processor grid} :dt
-
-The restart file was written out by a LAMMPS simulation running on a
-different 3d grid of processors.  Due to round-off, the trajectories
-of your restarted simulation may diverge a little more quickly than if
-you ran on the same # of processors. :dd
-
-{Restart file used different boundary settings, using restart file values} :dt
-
-Your input script cannot change these restart file settings. :dd
-
-{Restart file used different newton bond setting, using restart file value} :dt
-
-The restart file value will override the setting in the input script. :dd
-
-{Restart file used different newton pair setting, using input script value} :dt
-
-The input script value will override the setting in the restart file. :dd
-
-{Restrain problem: %d %ld %d %d %d %d} :dt
-
-Conformation of the 4 listed dihedral atoms is extreme; you may want
-to check your simulation geometry. :dd
-
-{Running PRD with only one replica} :dt
-
-This is allowed, but you will get no parallel speed-up. :dd
-
-{SRD bin shifting turned on due to small lamda} :dt
-
-This is done to try to preserve accuracy. :dd
-
-{SRD bin size for fix srd differs from user request} :dt
-
-Fix SRD had to adjust the bin size to fit the simulation box.  See the
-cubic keyword if you want this message to be an error vs warning. :dd
-
-{SRD bins for fix srd are not cubic enough} :dt
-
-The bin shape is not within tolerance of cubic.  See the cubic
-keyword if you want this message to be an error vs warning. :dd
-
-{SRD particle %d started inside big particle %d on step %ld bounce %d} :dt
-
-See the inside keyword if you want this message to be an error vs
-warning. :dd
-
-{SRD particle %d started inside wall %d on step %ld bounce %d} :dt
-
-See the inside keyword if you want this message to be an error vs
-warning. :dd
-
-{Shake determinant < 0.0} :dt
-
-The determinant of the quadratic equation being solved for a single
-cluster specified by the fix shake command is numerically suspect.  LAMMPS
-will set it to 0.0 and continue. :dd
-
-{Shell command '%s' failed with error '%s'} :dt
-
-Self-explanatory. :dd
-
-{Shell command returned with non-zero status} :dt
-
-This may indicate the shell command did not operate as expected. :dd
-
-{Should not allow rigid bodies to bounce off relecting walls} :dt
-
-LAMMPS allows this, but their dynamics are not computed correctly. :dd
-
-{Should not use fix nve/limit with fix shake or fix rattle} :dt
-
-This will lead to invalid constraint forces in the SHAKE/RATTLE
-computation. :dd
-
-{Simulations might be very slow because of large number of structure factors} :dt
-
-Self-explanatory. :dd
-
-{Slab correction not needed for MSM} :dt
-
-Slab correction is intended to be used with Ewald or PPPM and is not needed by MSM. :dd
-
-{System is not charge neutral, net charge = %g} :dt
-
-The total charge on all atoms on the system is not 0.0.
-For some KSpace solvers this is only a warning. :dd
-
-{Table inner cutoff >= outer cutoff} :dt
-
-You specified an inner cutoff for a Coulombic table that is longer
-than the global cutoff.  Probably not what you wanted. :dd
-
-{Temperature for MSST is not for group all} :dt
-
-User-assigned temperature to MSST fix does not compute temperature for
-all atoms.  Since MSST computes a global pressure, the kinetic energy
-contribution from the temperature is assumed to also be for all atoms.
-Thus the pressure used by MSST could be inaccurate. :dd
-
-{Temperature for NPT is not for group all} :dt
-
-User-assigned temperature to NPT fix does not compute temperature for
-all atoms.  Since NPT computes a global pressure, the kinetic energy
-contribution from the temperature is assumed to also be for all atoms.
-Thus the pressure used by NPT could be inaccurate. :dd
-
-{Temperature for fix modify is not for group all} :dt
-
-The temperature compute is being used with a pressure calculation
-which does operate on group all, so this may be inconsistent. :dd
-
-{Temperature for thermo pressure is not for group all} :dt
-
-User-assigned temperature to thermo via the thermo_modify command does
-not compute temperature for all atoms.  Since thermo computes a global
-pressure, the kinetic energy contribution from the temperature is
-assumed to also be for all atoms.  Thus the pressure printed by thermo
-could be inaccurate. :dd
-
-{The fix ave/spatial command has been replaced by the more flexible fix ave/chunk and compute chunk/atom commands -- fix ave/spatial will be removed in the summer of 2015} :dt
-
-Self-explanatory. :dd
-
-{The minimizer does not re-orient dipoles when using fix efield} :dt
-
-This means that only the atom coordinates will be minimized,
-not the orientation of the dipoles. :dd
-
-{Too many common neighbors in CNA %d times} :dt
-
-More than the maximum # of neighbors was found multiple times.  This
-was unexpected. :dd
-
-{Too many inner timesteps in fix ttm} :dt
-
-Self-explanatory. :dd
-
-{Too many neighbors in CNA for %d atoms} :dt
-
-More than the maximum # of neighbors was found multiple times.  This
-was unexpected. :dd
-
-{Triclinic box skew is large} :dt
-
-The displacement in a skewed direction is normally required to be less
-than half the box length in that dimension.  E.g. the xy tilt must be
-between -half and +half of the x box length.  You have relaxed the
-constraint using the box tilt command, but the warning means that a
-LAMMPS simulation may be inefficient as a result. :dd
-
-{Use special bonds = 0,1,1 with bond style fene} :dt
-
-Most FENE models need this setting for the special_bonds command. :dd
-
-{Use special bonds = 0,1,1 with bond style fene/expand} :dt
-
-Most FENE models need this setting for the special_bonds command. :dd
-
-{Using a manybody potential with bonds/angles/dihedrals and special_bond exclusions} :dt
-
-This is likely not what you want to do.  The exclusion settings will
-eliminate neighbors in the neighbor list, which the manybody potential
-needs to calculated its terms correctly. :dd
-
-{Using compute temp/deform with inconsistent fix deform remap option} :dt
-
-Fix nvt/sllod assumes deforming atoms have a velocity profile provided
-by "remap v" or "remap none" as a fix deform option. :dd
-
-{Using compute temp/deform with no fix deform defined} :dt
-
-This is probably an error, since it makes little sense to use
-compute temp/deform in this case. :dd
-
-{Using fix srd with box deformation but no SRD thermostat} :dt
-
-The deformation will heat the SRD particles so this can
-be dangerous. :dd
-
-{Using kspace solver on system with no charge} :dt
-
-Self-explanatory. :dd
-
-{Using largest cut-off for lj/long/dipole/long long long} :dt
-
-Self-explanatory. :dd
-
-{Using largest cutoff for buck/long/coul/long} :dt
-
-Self-explanatory. :dd
-
-{Using largest cutoff for lj/long/coul/long} :dt
-
-Self-explanatory. :dd
-
-{Using largest cutoff for pair_style lj/long/tip4p/long} :dt
-
-Self-explanatory. :dd
-
-{Using package gpu without any pair style defined} :dt
-
-Self-explanatory. :dd
-
-{Using pair potential shift with pair_modify compute no} :dt
-
-The shift effects will thus not be computed. :dd
-
-{Using pair tail corrections with nonperiodic system} :dt
-
-This is probably a bogus thing to do, since tail corrections are
-computed by integrating the density of a periodic system out to
-infinity. :dd
-
-{Using pair tail corrections with pair_modify compute no} :dt
-
-The tail corrections will thus not be computed. :dd
-
-{pair style reax is now deprecated and will soon be retired. Users should switch to pair_style reax/c} :dt
-
-Self-explanatory. :dd
-
-:dle
-
diff --git a/doc/src/Errors_warnings.txt b/doc/src/Errors_warnings.txt
new file mode 100644
index 0000000000..0324f563b6
--- /dev/null
+++ b/doc/src/Errors_warnings.txt
@@ -0,0 +1,934 @@
+"Higher level section"_Errors.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Warning messages :h3
+
+This is an alphabetic list of the WARNING messages LAMMPS prints out
+and the reason why.  If the explanation here is not sufficient, the
+documentation for the offending command may help.  Warning messages
+also list the source file and line number where the warning was
+generated.  For example, a message lile this:
+
+WARNING: Bond atom missing in box size check (domain.cpp:187) :pre
+
+means that line #187 in the file src/domain.cpp generated the error.
+Looking in the source code may help you figure out what went wrong.
+
+Note that warning messages from "user-contributed
+packages"_Section_start.html#table_user are not listed here.  If such
+a warning occurs and is not self-explanatory, you'll need to look in
+the source code or contact the author of the package.
+
+Doc page with "ERROR messages"_Errors_messages.html
+
+:line
+
+:dlb
+
+{Adjusting Coulombic cutoff for MSM, new cutoff = %g} :dt
+
+The adjust/cutoff command is turned on and the Coulombic cutoff has been
+adjusted to match the user-specified accuracy. :dd
+
+{Angle atoms missing at step %ld} :dt
+
+One or more of 3 atoms needed to compute a particular angle are
+missing on this processor.  Typically this is because the pairwise
+cutoff is set too short or the angle has blown apart and an atom is
+too far away. :dd
+
+{Angle style in data file differs from currently defined angle style} :dt
+
+Self-explanatory. :dd
+
+{Atom style in data file differs from currently defined atom style} :dt
+
+Self-explanatory. :dd
+
+{Bond atom missing in box size check} :dt
+
+The 2nd atoms needed to compute a particular bond is missing on this
+processor.  Typically this is because the pairwise cutoff is set too
+short or the bond has blown apart and an atom is too far away. :dd
+
+{Bond atom missing in image check} :dt
+
+The 2nd atom in a particular bond is missing on this processor.
+Typically this is because the pairwise cutoff is set too short or the
+bond has blown apart and an atom is too far away. :dd
+
+{Bond atoms missing at step %ld} :dt
+
+The 2nd atom needed to compute a particular bond is missing on this
+processor.  Typically this is because the pairwise cutoff is set too
+short or the bond has blown apart and an atom is too far away. :dd
+
+{Bond style in data file differs from currently defined bond style} :dt
+
+Self-explanatory. :dd
+
+{Bond/angle/dihedral extent > half of periodic box length} :dt
+
+This is a restriction because LAMMPS can be confused about which image
+of an atom in the bonded interaction is the correct one to use.
+"Extent" in this context means the maximum end-to-end length of the
+bond/angle/dihedral.  LAMMPS computes this by taking the maximum bond
+length, multiplying by the number of bonds in the interaction (e.g. 3
+for a dihedral) and adding a small amount of stretch. :dd
+
+{Both groups in compute group/group have a net charge; the Kspace boundary correction to energy will be non-zero} :dt
+
+Self-explanatory. :dd
+
+{Calling write_dump before a full system init.} :dt
+
+The write_dump command is used before the system has been fully
+initialized as part of a 'run' or 'minimize' command. Not all dump
+styles and features are fully supported at this point and thus the
+command may fail or produce incomplete or incorrect output. Insert
+a "run 0" command, if a full system init is required. :dd
+
+{Cannot count rigid body degrees-of-freedom before bodies are fully initialized} :dt
+
+This means the temperature associated with the rigid bodies may be
+incorrect on this timestep. :dd
+
+{Cannot count rigid body degrees-of-freedom before bodies are initialized} :dt
+
+This means the temperature associated with the rigid bodies may be
+incorrect on this timestep. :dd
+
+{Cannot include log terms without 1/r terms; setting flagHI to 1} :dt
+
+Self-explanatory. :dd
+
+{Cannot include log terms without 1/r terms; setting flagHI to 1.} :dt
+
+Self-explanatory. :dd
+
+{Charges are set, but coulombic solver is not used} :dt
+
+Self-explanatory. :dd
+
+{Charges did not converge at step %ld: %lg} :dt
+
+Self-explanatory. :dd
+
+{Communication cutoff is too small for SNAP micro load balancing, increased to %lf} :dt
+
+Self-explanatory. :dd
+
+{Compute cna/atom cutoff may be too large to find ghost atom neighbors} :dt
+
+The neighbor cutoff used may not encompass enough ghost atoms
+to perform this operation correctly. :dd
+
+{Computing temperature of portions of rigid bodies} :dt
+
+The group defined by the temperature compute does not encompass all
+the atoms in one or more rigid bodies, so the change in
+degrees-of-freedom for the atoms in those partial rigid bodies will
+not be accounted for. :dd
+
+{Create_bonds max distance > minimum neighbor cutoff} :dt
+
+This means atom pairs for some atom types may not be in the neighbor
+list and thus no bond can be created between them. :dd
+
+{Delete_atoms cutoff > minimum neighbor cutoff} :dt
+
+This means atom pairs for some atom types may not be in the neighbor
+list and thus an atom in that pair cannot be deleted. :dd
+
+{Dihedral atoms missing at step %ld} :dt
+
+One or more of 4 atoms needed to compute a particular dihedral are
+missing on this processor.  Typically this is because the pairwise
+cutoff is set too short or the dihedral has blown apart and an atom is
+too far away. :dd
+
+{Dihedral problem} :dt
+
+Conformation of the 4 listed dihedral atoms is extreme; you may want
+to check your simulation geometry. :dd
+
+{Dihedral problem: %d %ld %d %d %d %d} :dt
+
+Conformation of the 4 listed dihedral atoms is extreme; you may want
+to check your simulation geometry. :dd
+
+{Dihedral style in data file differs from currently defined dihedral style} :dt
+
+Self-explanatory. :dd
+
+{Dump dcd/xtc timestamp may be wrong with fix dt/reset} :dt
+
+If the fix changes the timestep, the dump dcd file will not
+reflect the change. :dd
+
+{Energy due to X extra global DOFs will be included in minimizer energies} :dt
+
+When using fixes like box/relax, the potential energy used by the minimizer
+is augmented by an additional energy provided by the fix. Thus the printed
+converged energy may be different from the total potential energy. :dd
+
+{Energy tally does not account for 'zero yes'} :dt
+
+The energy removed by using the 'zero yes' flag is not accounted
+for in the energy tally and thus energy conservation cannot be
+monitored in this case. :dd
+
+{Estimated error in splitting of dispersion coeffs is %g} :dt
+
+Error is greater than 0.0001 percent. :dd
+
+{Ewald/disp Newton solver failed, using old method to estimate g_ewald} :dt
+
+Self-explanatory. Choosing a different cutoff value may help. :dd
+
+{FENE bond too long} :dt
+
+A FENE bond has stretched dangerously far.  It's interaction strength
+will be truncated to attempt to prevent the bond from blowing up. :dd
+
+{FENE bond too long: %ld %d %d %g} :dt
+
+A FENE bond has stretched dangerously far.  It's interaction strength
+will be truncated to attempt to prevent the bond from blowing up. :dd
+
+{FENE bond too long: %ld %g} :dt
+
+A FENE bond has stretched dangerously far.  It's interaction strength
+will be truncated to attempt to prevent the bond from blowing up. :dd
+
+{Fix SRD walls overlap but fix srd overlap not set} :dt
+
+You likely want to set this in your input script. :dd
+
+{Fix bond/swap will ignore defined angles} :dt
+
+See the doc page for fix bond/swap for more info on this
+restriction. :dd
+
+{Fix deposit near setting < possible overlap separation %g} :dt
+
+This test is performed for finite size particles with a diameter, not
+for point particles.  The near setting is smaller than the particle
+diameter which can lead to overlaps. :dd
+
+{Fix evaporate may delete atom with non-zero molecule ID} :dt
+
+This is probably an error, since you should not delete only one atom
+of a molecule. :dd
+
+{Fix gcmc using full_energy option} :dt
+
+Fix gcmc has automatically turned on the full_energy option since it
+is required for systems like the one specified by the user. User input
+included one or more of the following: kspace, triclinic, a hybrid
+pair style, an eam pair style, or no "single" function for the pair
+style. :dd
+
+{Fix property/atom mol or charge w/out ghost communication} :dt
+
+A model typically needs these properties defined for ghost atoms. :dd
+
+{Fix qeq CG convergence failed (%g) after %d iterations at %ld step} :dt
+
+Self-explanatory. :dd
+
+{Fix qeq has non-zero lower Taper radius cutoff} :dt
+
+Absolute value must be <= 0.01. :dd
+
+{Fix qeq has very low Taper radius cutoff} :dt
+
+Value should typically be >= 5.0. :dd
+
+{Fix qeq/dynamic tolerance may be too small for damped dynamics} :dt
+
+Self-explanatory. :dd
+
+{Fix qeq/fire tolerance may be too small for damped fires} :dt
+
+Self-explanatory. :dd
+
+{Fix rattle should come after all other integration fixes} :dt
+
+This fix is designed to work after all other integration fixes change
+atom positions.  Thus it should be the last integration fix specified.
+If not, it will not satisfy the desired constraints as well as it
+otherwise would. :dd
+
+{Fix recenter should come after all other integration fixes} :dt
+
+Other fixes may change the position of the center-of-mass, so
+fix recenter should come last. :dd
+
+{Fix srd SRD moves may trigger frequent reneighboring} :dt
+
+This is because the SRD particles may move long distances. :dd
+
+{Fix srd grid size > 1/4 of big particle diameter} :dt
+
+This may cause accuracy problems. :dd
+
+{Fix srd particle moved outside valid domain} :dt
+
+This may indicate a problem with your simulation parameters. :dd
+
+{Fix srd particles may move > big particle diameter} :dt
+
+This may cause accuracy problems. :dd
+
+{Fix srd viscosity < 0.0 due to low SRD density} :dt
+
+This may cause accuracy problems. :dd
+
+{Fix thermal/conductivity comes before fix ave/spatial} :dt
+
+The order of these 2 fixes in your input script is such that fix
+thermal/conductivity comes first.  If you are using fix ave/spatial to
+measure the temperature profile induced by fix viscosity, then this
+may cause a glitch in the profile since you are averaging immediately
+after swaps have occurred.  Flipping the order of the 2 fixes
+typically helps. :dd
+
+{Fix viscosity comes before fix ave/spatial} :dt
+
+The order of these 2 fixes in your input script is such that
+fix viscosity comes first.  If you are using fix ave/spatial
+to measure the velocity profile induced by fix viscosity, then
+this may cause a glitch in the profile since you are averaging
+immediately after swaps have occurred.  Flipping the order
+of the 2 fixes typically helps. :dd
+
+{Fixes cannot send data in Kokkos communication, switching to classic communication} :dt
+
+This is current restriction with Kokkos. :dd
+
+{For better accuracy use 'pair_modify table 0'} :dt
+
+The user-specified force accuracy cannot be achieved unless the table
+feature is disabled by using 'pair_modify table 0'. :dd
+
+{Geometric mixing assumed for 1/r^6 coefficients} :dt
+
+Self-explanatory. :dd
+
+{Group for fix_modify temp != fix group} :dt
+
+The fix_modify command is specifying a temperature computation that
+computes a temperature on a different group of atoms than the fix
+itself operates on.  This is probably not what you want to do. :dd
+
+{H matrix size has been exceeded: m_fill=%d H.m=%d\n} :dt
+
+This is the size of the matrix. :dd
+
+{Ignoring unknown or incorrect info command flag} :dt
+
+Self-explanatory.  An unknown argument was given to the info command.
+Compare your input with the documentation. :dd
+
+{Improper atoms missing at step %ld} :dt
+
+One or more of 4 atoms needed to compute a particular improper are
+missing on this processor.  Typically this is because the pairwise
+cutoff is set too short or the improper has blown apart and an atom is
+too far away. :dd
+
+{Improper problem: %d %ld %d %d %d %d} :dt
+
+Conformation of the 4 listed improper atoms is extreme; you may want
+to check your simulation geometry. :dd
+
+{Improper style in data file differs from currently defined improper style} :dt
+
+Self-explanatory. :dd
+
+{Inconsistent image flags} :dt
+
+The image flags for a pair on bonded atoms appear to be inconsistent.
+Inconsistent means that when the coordinates of the two atoms are
+unwrapped using the image flags, the two atoms are far apart.
+Specifically they are further apart than half a periodic box length.
+Or they are more than a box length apart in a non-periodic dimension.
+This is usually due to the initial data file not having correct image
+flags for the 2 atoms in a bond that straddles a periodic boundary.
+They should be different by 1 in that case.  This is a warning because
+inconsistent image flags will not cause problems for dynamics or most
+LAMMPS simulations.  However they can cause problems when such atoms
+are used with the fix rigid or replicate commands.  Note that if you
+have an infinite periodic crystal with bonds then it is impossible to
+have fully consistent image flags, since some bonds will cross
+periodic boundaries and connect two atoms with the same image
+flag. :dd
+
+{KIM Model does not provide 'energy'; Potential energy will be zero} :dt
+
+Self-explanatory. :dd
+
+{KIM Model does not provide 'forces'; Forces will be zero} :dt
+
+Self-explanatory. :dd
+
+{KIM Model does not provide 'particleEnergy'; energy per atom will be zero} :dt
+
+Self-explanatory. :dd
+
+{KIM Model does not provide 'particleVirial'; virial per atom will be zero} :dt
+
+Self-explanatory. :dd
+
+{Kspace_modify slab param < 2.0 may cause unphysical behavior} :dt
+
+The kspace_modify slab parameter should be larger to insure periodic
+grids padded with empty space do not overlap. :dd
+
+{Less insertions than requested} :dt
+
+The fix pour command was unsuccessful at finding open space
+for as many particles as it tried to insert. :dd
+
+{Library error in lammps_gather_atoms} :dt
+
+This library function cannot be used if atom IDs are not defined
+or are not consecutively numbered. :dd
+
+{Library error in lammps_scatter_atoms} :dt
+
+This library function cannot be used if atom IDs are not defined or
+are not consecutively numbered, or if no atom map is defined.  See the
+atom_modify command for details about atom maps. :dd
+
+{Lost atoms via change_box: original %ld current %ld} :dt
+
+The command options you have used caused atoms to be lost. :dd
+
+{Lost atoms via displace_atoms: original %ld current %ld} :dt
+
+The command options you have used caused atoms to be lost. :dd
+
+{Lost atoms: original %ld current %ld} :dt
+
+Lost atoms are checked for each time thermo output is done.  See the
+thermo_modify lost command for options.  Lost atoms usually indicate
+bad dynamics, e.g. atoms have been blown far out of the simulation
+box, or moved further than one processor's sub-domain away before
+reneighboring. :dd
+
+{MSM mesh too small, increasing to 2 points in each direction} :dt
+
+Self-explanatory. :dd
+
+{Mismatch between velocity and compute groups} :dt
+
+The temperature computation used by the velocity command will not be
+on the same group of atoms that velocities are being set for. :dd
+
+{Mixing forced for lj coefficients} :dt
+
+Self-explanatory. :dd
+
+{Molecule attributes do not match system attributes} :dt
+
+An attribute is specified (e.g. diameter, charge) that is
+not defined for the specified atom style. :dd
+
+{Molecule has bond topology but no special bond settings} :dt
+
+This means the bonded atoms will not be excluded in pair-wise
+interactions. :dd
+
+{Molecule template for create_atoms has multiple molecules} :dt
+
+The create_atoms command will only create molecules of a single type,
+i.e. the first molecule in the template. :dd
+
+{Molecule template for fix gcmc has multiple molecules} :dt
+
+The fix gcmc command will only create molecules of a single type,
+i.e. the first molecule in the template. :dd
+
+{Molecule template for fix shake has multiple molecules} :dt
+
+The fix shake command will only recognize molecules of a single
+type, i.e. the first molecule in the template. :dd
+
+{More than one compute centro/atom} :dt
+
+It is not efficient to use compute centro/atom more than once. :dd
+
+{More than one compute cluster/atom} :dt
+
+It is not efficient to use compute cluster/atom  more than once. :dd
+
+{More than one compute cna/atom defined} :dt
+
+It is not efficient to use compute cna/atom  more than once. :dd
+
+{More than one compute contact/atom} :dt
+
+It is not efficient to use compute contact/atom more than once. :dd
+
+{More than one compute coord/atom} :dt
+
+It is not efficient to use compute coord/atom more than once. :dd
+
+{More than one compute damage/atom} :dt
+
+It is not efficient to use compute ke/atom more than once. :dd
+
+{More than one compute dilatation/atom} :dt
+
+Self-explanatory. :dd
+
+{More than one compute erotate/sphere/atom} :dt
+
+It is not efficient to use compute erorate/sphere/atom more than once. :dd
+
+{More than one compute hexorder/atom} :dt
+
+It is not efficient to use compute hexorder/atom more than once. :dd
+
+{More than one compute ke/atom} :dt
+
+It is not efficient to use compute ke/atom more than once. :dd
+
+{More than one compute orientorder/atom} :dt
+
+It is not efficient to use compute orientorder/atom more than once. :dd
+
+{More than one compute plasticity/atom} :dt
+
+Self-explanatory. :dd
+
+{More than one compute sna/atom} :dt
+
+Self-explanatory. :dd
+
+{More than one compute snad/atom} :dt
+
+Self-explanatory. :dd
+
+{More than one compute snav/atom} :dt
+
+Self-explanatory. :dd
+
+{More than one fix poems} :dt
+
+It is not efficient to use fix poems more than once. :dd
+
+{More than one fix rigid} :dt
+
+It is not efficient to use fix rigid more than once. :dd
+
+{Neighbor exclusions used with KSpace solver may give inconsistent Coulombic energies} :dt
+
+This is because excluding specific pair interactions also excludes
+them from long-range interactions which may not be the desired effect.
+The special_bonds command handles this consistently by insuring
+excluded (or weighted) 1-2, 1-3, 1-4 interactions are treated
+consistently by both the short-range pair style and the long-range
+solver.  This is not done for exclusions of charged atom pairs via the
+neigh_modify exclude command. :dd
+
+{New thermo_style command, previous thermo_modify settings will be lost} :dt
+
+If a thermo_style command is used after a thermo_modify command, the
+settings changed by the thermo_modify command will be reset to their
+default values.  This is because the thermo_modify command acts on
+the currently defined thermo style, and a thermo_style command creates
+a new style. :dd
+
+{No Kspace calculation with verlet/split} :dt
+
+The 2nd partition performs a kspace calculation so the kspace_style
+command must be used. :dd
+
+{No automatic unit conversion to XTC file format conventions possible for units lj} :dt
+
+This means no scaling will be performed. :dd
+
+{No fixes defined, atoms won't move} :dt
+
+If you are not using a fix like nve, nvt, npt then atom velocities and
+coordinates will not be updated during timestepping. :dd
+
+{No joints between rigid bodies, use fix rigid instead} :dt
+
+The bodies defined by fix poems are not connected by joints.  POEMS
+will integrate the body motion, but it would be more efficient to use
+fix rigid. :dd
+
+{Not using real units with pair reax} :dt
+
+This is most likely an error, unless you have created your own ReaxFF
+parameter file in a different set of units. :dd
+
+{Number of MSM mesh points changed to be a multiple of 2} :dt
+
+MSM requires that the number of grid points in each direction be a multiple
+of two and the number of grid points in one or more directions have been
+adjusted to meet this requirement. :dd
+
+{OMP_NUM_THREADS environment is not set.} :dt
+
+This environment variable must be set appropriately to use the
+USER-OMP package. :dd
+
+{One or more atoms are time integrated more than once} :dt
+
+This is probably an error since you typically do not want to
+advance the positions or velocities of an atom more than once
+per timestep. :dd
+
+{One or more chunks do not contain all atoms in molecule} :dt
+
+This may not be what you intended. :dd
+
+{One or more dynamic groups may not be updated at correct point in timestep} :dt
+
+If there are other fixes that act immediately after the initial stage
+of time integration within a timestep (i.e. after atoms move), then
+the command that sets up the dynamic group should appear after those
+fixes.  This will insure that dynamic group assignments are made
+after all atoms have moved. :dd
+
+{One or more respa levels compute no forces} :dt
+
+This is computationally inefficient. :dd
+
+{Pair COMB charge %.10f with force %.10f hit max barrier} :dt
+
+Something is possibly wrong with your model. :dd
+
+{Pair COMB charge %.10f with force %.10f hit min barrier} :dt
+
+Something is possibly wrong with your model. :dd
+
+{Pair brownian needs newton pair on for momentum conservation} :dt
+
+Self-explanatory. :dd
+
+{Pair dpd needs newton pair on for momentum conservation} :dt
+
+Self-explanatory. :dd
+
+{Pair dsmc: num_of_collisions > number_of_A} :dt
+
+Collision model in DSMC is breaking down. :dd
+
+{Pair dsmc: num_of_collisions > number_of_B} :dt
+
+Collision model in DSMC is breaking down. :dd
+
+{Pair style in data file differs from currently defined pair style} :dt
+
+Self-explanatory. :dd
+
+{Pair style restartinfo set but has no restart support} :dt
+
+This pair style has a bug, where it does not support reading and
+writing information to a restart file, but does not set the member
+variable "restartinfo" to 0 as required in that case. :dd
+
+{Particle deposition was unsuccessful} :dt
+
+The fix deposit command was not able to insert as many atoms as
+needed.  The requested volume fraction may be too high, or other atoms
+may be in the insertion region. :dd
+
+{Proc sub-domain size < neighbor skin, could lead to lost atoms} :dt
+
+The decomposition of the physical domain (likely due to load
+balancing) has led to a processor's sub-domain being smaller than the
+neighbor skin in one or more dimensions.  Since reneighboring is
+triggered by atoms moving the skin distance, this may lead to lost
+atoms, if an atom moves all the way across a neighboring processor's
+sub-domain before reneighboring is triggered. :dd
+
+{Reducing PPPM order b/c stencil extends beyond nearest neighbor processor} :dt
+
+This may lead to a larger grid than desired.  See the kspace_modify overlap
+command to prevent changing of the PPPM order. :dd
+
+{Reducing PPPMDisp Coulomb order b/c stencil extends beyond neighbor processor} :dt
+
+This may lead to a larger grid than desired.  See the kspace_modify overlap
+command to prevent changing of the PPPM order. :dd
+
+{Reducing PPPMDisp dispersion order b/c stencil extends beyond neighbor processor} :dt
+
+This may lead to a larger grid than desired.  See the kspace_modify overlap
+command to prevent changing of the PPPM order. :dd
+
+{Replacing a fix, but new group != old group} :dt
+
+The ID and style of a fix match for a fix you are changing with a fix
+command, but the new group you are specifying does not match the old
+group. :dd
+
+{Replicating in a non-periodic dimension} :dt
+
+The parameters for a replicate command will cause a non-periodic
+dimension to be replicated; this may cause unwanted behavior. :dd
+
+{Resetting reneighboring criteria during PRD} :dt
+
+A PRD simulation requires that neigh_modify settings be delay = 0,
+every = 1, check = yes.  Since these settings were not in place,
+LAMMPS changed them and will restore them to their original values
+after the PRD simulation. :dd
+
+{Resetting reneighboring criteria during TAD} :dt
+
+A TAD simulation requires that neigh_modify settings be delay = 0,
+every = 1, check = yes.  Since these settings were not in place,
+LAMMPS changed them and will restore them to their original values
+after the PRD simulation. :dd
+
+{Resetting reneighboring criteria during minimization} :dt
+
+Minimization requires that neigh_modify settings be delay = 0, every =
+1, check = yes.  Since these settings were not in place, LAMMPS
+changed them and will restore them to their original values after the
+minimization. :dd
+
+{Restart file used different # of processors} :dt
+
+The restart file was written out by a LAMMPS simulation running on a
+different number of processors.  Due to round-off, the trajectories of
+your restarted simulation may diverge a little more quickly than if
+you ran on the same # of processors. :dd
+
+{Restart file used different 3d processor grid} :dt
+
+The restart file was written out by a LAMMPS simulation running on a
+different 3d grid of processors.  Due to round-off, the trajectories
+of your restarted simulation may diverge a little more quickly than if
+you ran on the same # of processors. :dd
+
+{Restart file used different boundary settings, using restart file values} :dt
+
+Your input script cannot change these restart file settings. :dd
+
+{Restart file used different newton bond setting, using restart file value} :dt
+
+The restart file value will override the setting in the input script. :dd
+
+{Restart file used different newton pair setting, using input script value} :dt
+
+The input script value will override the setting in the restart file. :dd
+
+{Restrain problem: %d %ld %d %d %d %d} :dt
+
+Conformation of the 4 listed dihedral atoms is extreme; you may want
+to check your simulation geometry. :dd
+
+{Running PRD with only one replica} :dt
+
+This is allowed, but you will get no parallel speed-up. :dd
+
+{SRD bin shifting turned on due to small lamda} :dt
+
+This is done to try to preserve accuracy. :dd
+
+{SRD bin size for fix srd differs from user request} :dt
+
+Fix SRD had to adjust the bin size to fit the simulation box.  See the
+cubic keyword if you want this message to be an error vs warning. :dd
+
+{SRD bins for fix srd are not cubic enough} :dt
+
+The bin shape is not within tolerance of cubic.  See the cubic
+keyword if you want this message to be an error vs warning. :dd
+
+{SRD particle %d started inside big particle %d on step %ld bounce %d} :dt
+
+See the inside keyword if you want this message to be an error vs
+warning. :dd
+
+{SRD particle %d started inside wall %d on step %ld bounce %d} :dt
+
+See the inside keyword if you want this message to be an error vs
+warning. :dd
+
+{Shake determinant < 0.0} :dt
+
+The determinant of the quadratic equation being solved for a single
+cluster specified by the fix shake command is numerically suspect.  LAMMPS
+will set it to 0.0 and continue. :dd
+
+{Shell command '%s' failed with error '%s'} :dt
+
+Self-explanatory. :dd
+
+{Shell command returned with non-zero status} :dt
+
+This may indicate the shell command did not operate as expected. :dd
+
+{Should not allow rigid bodies to bounce off relecting walls} :dt
+
+LAMMPS allows this, but their dynamics are not computed correctly. :dd
+
+{Should not use fix nve/limit with fix shake or fix rattle} :dt
+
+This will lead to invalid constraint forces in the SHAKE/RATTLE
+computation. :dd
+
+{Simulations might be very slow because of large number of structure factors} :dt
+
+Self-explanatory. :dd
+
+{Slab correction not needed for MSM} :dt
+
+Slab correction is intended to be used with Ewald or PPPM and is not needed by MSM. :dd
+
+{System is not charge neutral, net charge = %g} :dt
+
+The total charge on all atoms on the system is not 0.0.
+For some KSpace solvers this is only a warning. :dd
+
+{Table inner cutoff >= outer cutoff} :dt
+
+You specified an inner cutoff for a Coulombic table that is longer
+than the global cutoff.  Probably not what you wanted. :dd
+
+{Temperature for MSST is not for group all} :dt
+
+User-assigned temperature to MSST fix does not compute temperature for
+all atoms.  Since MSST computes a global pressure, the kinetic energy
+contribution from the temperature is assumed to also be for all atoms.
+Thus the pressure used by MSST could be inaccurate. :dd
+
+{Temperature for NPT is not for group all} :dt
+
+User-assigned temperature to NPT fix does not compute temperature for
+all atoms.  Since NPT computes a global pressure, the kinetic energy
+contribution from the temperature is assumed to also be for all atoms.
+Thus the pressure used by NPT could be inaccurate. :dd
+
+{Temperature for fix modify is not for group all} :dt
+
+The temperature compute is being used with a pressure calculation
+which does operate on group all, so this may be inconsistent. :dd
+
+{Temperature for thermo pressure is not for group all} :dt
+
+User-assigned temperature to thermo via the thermo_modify command does
+not compute temperature for all atoms.  Since thermo computes a global
+pressure, the kinetic energy contribution from the temperature is
+assumed to also be for all atoms.  Thus the pressure printed by thermo
+could be inaccurate. :dd
+
+{The fix ave/spatial command has been replaced by the more flexible fix ave/chunk and compute chunk/atom commands -- fix ave/spatial will be removed in the summer of 2015} :dt
+
+Self-explanatory. :dd
+
+{The minimizer does not re-orient dipoles when using fix efield} :dt
+
+This means that only the atom coordinates will be minimized,
+not the orientation of the dipoles. :dd
+
+{Too many common neighbors in CNA %d times} :dt
+
+More than the maximum # of neighbors was found multiple times.  This
+was unexpected. :dd
+
+{Too many inner timesteps in fix ttm} :dt
+
+Self-explanatory. :dd
+
+{Too many neighbors in CNA for %d atoms} :dt
+
+More than the maximum # of neighbors was found multiple times.  This
+was unexpected. :dd
+
+{Triclinic box skew is large} :dt
+
+The displacement in a skewed direction is normally required to be less
+than half the box length in that dimension.  E.g. the xy tilt must be
+between -half and +half of the x box length.  You have relaxed the
+constraint using the box tilt command, but the warning means that a
+LAMMPS simulation may be inefficient as a result. :dd
+
+{Use special bonds = 0,1,1 with bond style fene} :dt
+
+Most FENE models need this setting for the special_bonds command. :dd
+
+{Use special bonds = 0,1,1 with bond style fene/expand} :dt
+
+Most FENE models need this setting for the special_bonds command. :dd
+
+{Using a manybody potential with bonds/angles/dihedrals and special_bond exclusions} :dt
+
+This is likely not what you want to do.  The exclusion settings will
+eliminate neighbors in the neighbor list, which the manybody potential
+needs to calculated its terms correctly. :dd
+
+{Using compute temp/deform with inconsistent fix deform remap option} :dt
+
+Fix nvt/sllod assumes deforming atoms have a velocity profile provided
+by "remap v" or "remap none" as a fix deform option. :dd
+
+{Using compute temp/deform with no fix deform defined} :dt
+
+This is probably an error, since it makes little sense to use
+compute temp/deform in this case. :dd
+
+{Using fix srd with box deformation but no SRD thermostat} :dt
+
+The deformation will heat the SRD particles so this can
+be dangerous. :dd
+
+{Using kspace solver on system with no charge} :dt
+
+Self-explanatory. :dd
+
+{Using largest cut-off for lj/long/dipole/long long long} :dt
+
+Self-explanatory. :dd
+
+{Using largest cutoff for buck/long/coul/long} :dt
+
+Self-explanatory. :dd
+
+{Using largest cutoff for lj/long/coul/long} :dt
+
+Self-explanatory. :dd
+
+{Using largest cutoff for pair_style lj/long/tip4p/long} :dt
+
+Self-explanatory. :dd
+
+{Using package gpu without any pair style defined} :dt
+
+Self-explanatory. :dd
+
+{Using pair potential shift with pair_modify compute no} :dt
+
+The shift effects will thus not be computed. :dd
+
+{Using pair tail corrections with nonperiodic system} :dt
+
+This is probably a bogus thing to do, since tail corrections are
+computed by integrating the density of a periodic system out to
+infinity. :dd
+
+{Using pair tail corrections with pair_modify compute no} :dt
+
+The tail corrections will thus not be computed. :dd
+
+{pair style reax is now deprecated and will soon be retired. Users should switch to pair_style reax/c} :dt
+
+Self-explanatory. :dd
+
+:dle
diff --git a/doc/src/Examples.txt b/doc/src/Examples.txt
index 4935c96257..08afca8b20 100644
--- a/doc/src/Examples.txt
+++ b/doc/src/Examples.txt
@@ -2,12 +2,6 @@
 "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
 Section"_Section_perf.html :c
 
-<!-- future sequence of sections:
-"Previous Section"_Speed.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Python.html :c
--->
-
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
 :link(lc,Section_commands.html#comm)
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index 18ae1c4b61..4481c911a0 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -1,5 +1,5 @@
 <!-- HTML_ONLY -->
-<HEAD>
+<
 <TITLE>LAMMPS Users Manual</TITLE>
 <META NAME="docnumber" CONTENT="16 Jul 2018 version">
 <META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
@@ -118,8 +118,8 @@ it gives quick access to documentation for all LAMMPS commands.
    Section_perf
    Tools
    Modify
-   Section_python
-   Section_errors
+   Python
+   Errors
    Section_history
 
 .. toctree::
@@ -212,19 +212,8 @@ END_RST -->
 "Performance & scalability"_Section_perf.html :l
 "Auxiliary tools"_Tools.html :l
 "Modify & extend LAMMPS"_Modify.html :l
-"Python interface"_Section_python.html :l
-  11.1 "Overview of running LAMMPS from Python"_py_1 :ulb,b
-  11.2 "Overview of using Python from a LAMMPS script"_py_2 :b
-  11.3 "Building LAMMPS as a shared library"_py_3 :b
-  11.4 "Installing the Python wrapper into Python"_py_4 :b
-  11.5 "Extending Python with MPI to run in parallel"_py_5 :b
-  11.6 "Testing the Python-LAMMPS interface"_py_6 :b
-  11.7 "Using LAMMPS from Python"_py_7 :b
-  11.8 "Example Python scripts that use LAMMPS"_py_8 :ule,b
-"Errors"_Section_errors.html :l
-  12.1 "Common problems"_err_1 :ulb,b
-  12.2 "Reporting bugs"_err_2 :b
-  12.3 "Error & warning messages"_err_3 :ule,b
+"Use Python with LAMMPS"_Python.html :l
+"Errors"_Errors.html :l
 "Future and history"_Section_history.html :l
   13.1 "Coming attractions"_hist_1 :ulb,b
   13.2 "Past versions"_hist_2 :ule,b
@@ -287,17 +276,6 @@ END_RST -->
 :link(howto_26,Section_howto.html#howto_26)
 :link(howto_27,Section_howto.html#howto_27)
 
-:link(py_1,Section_python.html#py_1)
-:link(py_2,Section_python.html#py_2)
-:link(py_3,Section_python.html#py_3)
-:link(py_4,Section_python.html#py_4)
-:link(py_5,Section_python.html#py_5)
-:link(py_6,Section_python.html#py_6)
-
-:link(err_1,Section_errors.html#err_1)
-:link(err_2,Section_errors.html#err_2)
-:link(err_3,Section_errors.html#err_3)
-
 :link(hist_1,Section_history.html#hist_1)
 :link(hist_2,Section_history.html#hist_2)
 <!-- END_HTML_ONLY -->
diff --git a/doc/src/Modify.txt b/doc/src/Modify.txt
index 4b16ad781b..ae0b0dc6bd 100644
--- a/doc/src/Modify.txt
+++ b/doc/src/Modify.txt
@@ -1,12 +1,6 @@
 "Previous Section"_Tools.html - "LAMMPS WWW Site"_lws -
 "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Section_python.html :c
-
-<!-- future sequence of sections:
-"Previous Section"_Tools.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Errors.html :c
--->
+Section"_Python.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -34,6 +28,8 @@ contribute"_Modify_contribute.html doc page.
    Modify_overview
    Modify_contribute
 
+.. toctree::
+
    Modify_atom
    Modify_pair
    Modify_bond
@@ -41,12 +37,16 @@ contribute"_Modify_contribute.html doc page.
    Modify_fix
    Modify_command
 
+.. toctree::
+
    Modify_dump
    Modify_kspace
    Modify_min
    Modify_region
    Modify_body
 
+.. toctree::
+
    Modify_thermo
    Modify_variable
 
diff --git a/doc/src/Python.txt b/doc/src/Python.txt
new file mode 100644
index 0000000000..94a2e88f5e
--- /dev/null
+++ b/doc/src/Python.txt
@@ -0,0 +1,79 @@
+"Previous Section"_Modify.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Errors.html :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Use Python with LAMMPS :h3
+
+These doc pages describe various ways that LAMMPS and Python can be
+used together.
+
+<!-- RST
+
+.. toctree::
+
+   Python_overview
+
+.. toctree::
+
+   Python_run
+   Python_shlib
+   Python_install
+   Python_mpi
+   Python_test
+   Python_library
+   Python_pylammps
+   Python_examples
+
+.. toctree::
+
+   Python_call
+
+END_RST -->
+
+<!-- HTML_ONLY -->
+
+"Overview of Python and LAMMPS"_Python_overview.html :all(b)
+
+"Run LAMMPS from Python"_Python_run.html
+"Build LAMMPS as a shared library"_Python_shlib.html
+"Install LAMMPS in Python"_Python_install.html
+"Extend Python to run in parallel"_Python_mpi.html
+"Test the Python/LAMMPS interface"_Python_test.html
+"Python library interface"_Python_library.html
+"PyLammps interface"_Python_pylammps.html
+"Example Python scripts that use LAMMPS"_Python_examples.html :all(b)
+
+"Call Python from a LAMMPS input script"_Python_call.html :all(b)
+
+<!-- END_HTML_ONLY -->
+
+If you're not familiar with "Python"_http://www.python.org, it's a
+powerful scripting and programming language which can do most
+everything that lower-level languages like C or C++ can do in fewer
+lines of code.  The only drawback is slower execution speed.  Python
+is also easy to use as a "glue" language to drive a program through
+its library interface, or to hook multiple pieces of software
+together, such as a simulation code plus a visualization tool, or to
+run a coupled multiscale or multiphysics model.
+
+See the "Howto_couple"_Howto_couple.html doc page for more ideas about
+coupling LAMMPS to other codes.  See the "Howto
+library"_Howto_library.html doc page for a description of the LAMMPS
+library interface provided in src/library.h and src/library.h.  That
+interface is exposed to Python either when calling LAMMPS from Python
+or when calling Python from a LAMMPS input script and then calling
+back to LAMMPS from Python code.  The library interface is designed to
+be easy to add funcionality to.  Thus the Python interface to LAMMPS
+is also easy to extend as well.
+
+If you create interesting Python scripts that run LAMMPS or
+interesting Python functions that can be called from a LAMMPS input
+script, that you think would be genearlly useful, please post them as
+a pull request to our "GitHub site"_https://github.com/lammps/lammps,
+and they can be added to the LAMMPS distribution or webpage.
diff --git a/doc/src/Python_call.txt b/doc/src/Python_call.txt
new file mode 100644
index 0000000000..3e30a5a7c7
--- /dev/null
+++ b/doc/src/Python_call.txt
@@ -0,0 +1,85 @@
+"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Call Python from a LAMMPS input script :h3
+
+LAMMPS has several commands which can be used to invoke Python
+code directly from an input script:
+
+"python"_python.html
+"variable python"_variable.html
+"fix python/invoke"_fix_python_invoke.html
+"pair_style python"_pair_python.html :ul
+
+The "python"_python.html command which can be used to define and
+execute a Python function that you write the code for.  The Python
+function can also be assigned to a LAMMPS python-style variable via
+the "variable"_variable.html command.  Each time the variable is
+evaluated, either in the LAMMPS input script itself, or by another
+LAMMPS command that uses the variable, this will trigger the Python
+function to be invoked.
+
+The Python code for the function can be included directly in the input
+script or in an auxiliary file.  The function can have arguments which
+are mapped to LAMMPS variables (also defined in the input script) and
+it can return a value to a LAMMPS variable.  This is thus a mechanism
+for your input script to pass information to a piece of Python code,
+ask Python to execute the code, and return information to your input
+script.
+
+Note that a Python function can be arbitrarily complex.  It can import
+other Python modules, instantiate Python classes, call other Python
+functions, etc.  The Python code that you provide can contain more
+code than the single function.  It can contain other functions or
+Python classes, as well as global variables or other mechanisms for
+storing state between calls from LAMMPS to the function.
+
+The Python function you provide can consist of "pure" Python code that
+only performs operations provided by standard Python.  However, the
+Python function can also "call back" to LAMMPS through its
+Python-wrapped library interface, in the manner described in the
+"Python run"_Python_run.html doc page.  This means it can issue LAMMPS
+input script commands or query and set internal LAMMPS state.  As an
+example, this can be useful in an input script to create a more
+complex loop with branching logic, than can be created using the
+simple looping and branching logic enabled by the "next"_next.html and
+"if"_if.html commands.
+
+See the "python"_python.html doc page and the "variable"_variable.html
+doc page for its python-style variables for more info, including
+examples of Python code you can write for both pure Python operations
+and callbacks to LAMMPS.
+
+The "fix python/invoke"_fix_python_invoke.html command can execute
+Python code at selected timesteps during a simulation run.
+
+The "pair_style python"_pair_python command allows you to define
+pairwise potentials as python code which encodes a single pairwise
+interaction.  This is useful for rapid-developement and debugging of a
+new potential.
+
+To use any of these commands, you only need to build LAMMPS with the
+PYTHON package installed:
+
+make yes-python
+make machine :pre
+
+Note that this will link LAMMPS with the Python library on your
+system, which typically requires several auxiliary system libraries to
+also be linked.  The list of these libraries and the paths to find
+them are specified in the lib/python/Makefile.lammps file.  You need
+to insure that file contains the correct information for your version
+of Python and your machine to successfully build LAMMPS.  See the
+lib/python/README file for more info.
+
+If you want to write Python code with callbacks to LAMMPS, then you
+must also follow the steps overviewed in the "Python
+run"_Python_run.html doc page.  I.e. you must build LAMMPS as a shared
+library and insure that Python can find the python/lammps.py file and
+the shared library.
diff --git a/doc/src/Python_examples.txt b/doc/src/Python_examples.txt
new file mode 100644
index 0000000000..fbca381e8b
--- /dev/null
+++ b/doc/src/Python_examples.txt
@@ -0,0 +1,81 @@
+"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Example Python scripts that use LAMMPS :h3
+
+These are the Python scripts included as demos in the python/examples
+directory of the LAMMPS distribution, to illustrate the kinds of
+things that are possible when Python wraps LAMMPS.  If you create your
+own scripts, send them to us and we can include them in the LAMMPS
+distribution.
+
+trivial.py, read/run a LAMMPS input script thru Python,
+demo.py, invoke various LAMMPS library interface routines,
+simple.py, run in parallel, similar to examples/COUPLE/simple/simple.cpp,
+split.py, same as simple.py but running in parallel on a subset of procs,
+gui.py, GUI go/stop/temperature-slider to control LAMMPS,
+plot.py, real-time temperature plot with GnuPlot via Pizza.py,
+viz_tool.py, real-time viz via some viz package,
+vizplotgui_tool.py, combination of viz_tool.py and plot.py and gui.py :tb(c=2)
+
+:line
+
+For the viz_tool.py and vizplotgui_tool.py commands, replace "tool"
+with "gl" or "atomeye" or "pymol" or "vmd", depending on what
+visualization package you have installed.
+
+Note that for GL, you need to be able to run the Pizza.py GL tool,
+which is included in the pizza sub-directory.  See the "Pizza.py doc
+pages"_pizza for more info:
+
+:link(pizza,http://www.sandia.gov/~sjplimp/pizza.html)
+
+Note that for AtomEye, you need version 3, and there is a line in the
+scripts that specifies the path and name of the executable.  See the
+AtomEye WWW pages "here"_atomeye or "here"_atomeye3 for more details:
+
+http://mt.seas.upenn.edu/Archive/Graphics/A
+http://mt.seas.upenn.edu/Archive/Graphics/A3/A3.html :pre
+
+:link(atomeye,http://mt.seas.upenn.edu/Archive/Graphics/A)
+:link(atomeye3,http://mt.seas.upenn.edu/Archive/Graphics/A3/A3.html)
+
+The latter link is to AtomEye 3 which has the scriping
+capability needed by these Python scripts.
+
+Note that for PyMol, you need to have built and installed the
+open-source version of PyMol in your Python, so that you can import it
+from a Python script.  See the PyMol WWW pages "here"_pymolhome or
+"here"_pymolopen for more details:
+
+http://www.pymol.org
+http://sourceforge.net/scm/?type=svn&group_id=4546 :pre
+
+:link(pymolhome,http://www.pymol.org)
+:link(pymolopen,http://sourceforge.net/scm/?type=svn&group_id=4546)
+
+The latter link is to the open-source version.
+
+Note that for VMD, you need a fairly current version (1.8.7 works for
+me) and there are some lines in the pizza/vmd.py script for 4 PIZZA
+variables that have to match the VMD installation on your system.
+
+:line
+
+See the python/README file for instructions on how to run them and the
+source code for individual scripts for comments about what they do.
+
+Here are screenshots of the vizplotgui_tool.py script in action for
+different visualization package options.  Click to see larger images:
+
+:image(JPG/screenshot_gl_small.jpg,JPG/screenshot_gl.jpg)
+:image(JPG/screenshot_atomeye_small.jpg,JPG/screenshot_atomeye.jpg)
+:image(JPG/screenshot_pymol_small.jpg,JPG/screenshot_pymol.jpg)
+:image(JPG/screenshot_vmd_small.jpg,JPG/screenshot_vmd.jpg)
+
diff --git a/doc/src/Python_install.txt b/doc/src/Python_install.txt
new file mode 100644
index 0000000000..631f6c4a7f
--- /dev/null
+++ b/doc/src/Python_install.txt
@@ -0,0 +1,74 @@
+"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Installing LAMMPS in Python :h3
+
+For Python to invoke LAMMPS, there are 2 files it needs to know about:
+
+python/lammps.py
+src/liblammps.so :ul
+
+Lammps.py is the Python wrapper on the LAMMPS library interface.
+Liblammps.so is the shared LAMMPS library that Python loads, as
+described above.
+
+You can insure Python can find these files in one of two ways:
+
+set two environment variables
+run the python/install.py script :ul
+
+If you set the paths to these files as environment variables, you only
+have to do it once.  For the csh or tcsh shells, add something like
+this to your ~/.cshrc file, one line for each of the two files:
+
+setenv PYTHONPATH $\{PYTHONPATH\}:/home/sjplimp/lammps/python
+setenv LD_LIBRARY_PATH $\{LD_LIBRARY_PATH\}:/home/sjplimp/lammps/src :pre
+
+If you use the python/install.py script, you need to invoke it every
+time you rebuild LAMMPS (as a shared library) or make changes to the
+python/lammps.py file.
+
+You can invoke install.py from the python directory as
+
+% python install.py \[libdir\] \[pydir\] :pre
+
+The optional libdir is where to copy the LAMMPS shared library to; the
+default is /usr/local/lib.  The optional pydir is where to copy the
+lammps.py file to; the default is the site-packages directory of the
+version of Python that is running the install script.
+
+Note that libdir must be a location that is in your default
+LD_LIBRARY_PATH, like /usr/local/lib or /usr/lib.  And pydir must be a
+location that Python looks in by default for imported modules, like
+its site-packages dir.  If you want to copy these files to
+non-standard locations, such as within your own user space, you will
+need to set your PYTHONPATH and LD_LIBRARY_PATH environment variables
+accordingly, as above.
+
+If the install.py script does not allow you to copy files into system
+directories, prefix the python command with "sudo".  If you do this,
+make sure that the Python that root runs is the same as the Python you
+run.  E.g. you may need to do something like
+
+% sudo /usr/local/bin/python install.py \[libdir\] \[pydir\] :pre
+
+You can also invoke install.py from the make command in the src
+directory as
+
+% make install-python :pre
+
+In this mode you cannot append optional arguments.  Again, you may
+need to prefix this with "sudo".  In this mode you cannot control
+which Python is invoked by root.
+
+Note that if you want Python to be able to load different versions of
+the LAMMPS shared library (see "this section"_#py_5 below), you will
+need to manually copy files like liblammps_g++.so into the appropriate
+system directory.  This is not needed if you set the LD_LIBRARY_PATH
+environment variable as described above.
diff --git a/doc/src/Python_library.txt b/doc/src/Python_library.txt
new file mode 100644
index 0000000000..4babbb746c
--- /dev/null
+++ b/doc/src/Python_library.txt
@@ -0,0 +1,256 @@
+"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Python library interface :h3
+
+As described previously, the Python interface to LAMMPS consists of a
+Python "lammps" module, the source code for which is in
+python/lammps.py, which creates a "lammps" object, with a set of
+methods that can be invoked on that object.  The sample Python code
+below assumes you have first imported the "lammps" module in your
+Python script, as follows:
+
+from lammps import lammps :pre
+
+These are the methods defined by the lammps module.  If you look at
+the files src/library.cpp and src/library.h you will see they
+correspond one-to-one with calls you can make to the LAMMPS library
+from a C++ or C or Fortran program, and which are described in
+"Section 6.19"_Section_howto.html#howto_19 of the manual.
+
+The python/examples directory has Python scripts which show how Python
+can run LAMMPS, grab data, change it, and put it back into LAMMPS.
+
+lmp = lammps()           # create a LAMMPS object using the default liblammps.so library
+                         # 4 optional args are allowed: name, cmdargs, ptr, comm
+lmp = lammps(ptr=lmpptr) # use lmpptr as previously created LAMMPS object
+lmp = lammps(comm=split) # create a LAMMPS object with a custom communicator, requires mpi4py 2.0.0 or later
+lmp = lammps(name="g++")   # create a LAMMPS object using the liblammps_g++.so library
+lmp = lammps(name="g++",cmdargs=list)    # add LAMMPS command-line args, e.g. list = \["-echo","screen"\] :pre
+
+lmp.close()              # destroy a LAMMPS object :pre
+
+version = lmp.version()  # return the numerical version id, e.g. LAMMPS 2 Sep 2015 -> 20150902 :pre
+
+lmp.file(file)           # run an entire input script, file = "in.lj"
+lmp.command(cmd)         # invoke a single LAMMPS command, cmd = "run 100"
+lmp.commands_list(cmdlist)     # invoke commands in cmdlist = ["run 10", "run 20"]
+lmp.commands_string(multicmd)  # invoke commands in multicmd = "run 10\nrun 20" :pre
+
+size = lmp.extract_setting(name)     # return data type info :pre
+
+xlo = lmp.extract_global(name,type)  # extract a global quantity
+                                     # name = "boxxlo", "nlocal", etc
+                                     # type = 0 = int
+                                     #        1 = double :pre
+
+boxlo,boxhi,xy,yz,xz,periodicity,box_change = lmp.extract_box()  # extract box info :pre
+
+coords = lmp.extract_atom(name,type)      # extract a per-atom quantity
+                                          # name = "x", "type", etc
+                                          # type = 0 = vector of ints
+                                          #        1 = array of ints
+                                          #        2 = vector of doubles
+                                          #        3 = array of doubles :pre
+
+eng = lmp.extract_compute(id,style,type)  # extract value(s) from a compute
+v3 = lmp.extract_fix(id,style,type,i,j)   # extract value(s) from a fix
+                                          # id = ID of compute or fix
+                                          # style = 0 = global data
+                                          #         1 = per-atom data
+                                          #         2 = local data
+                                          # type = 0 = scalar
+                                          #        1 = vector
+                                          #        2 = array
+                                          # i,j = indices of value in global vector or array :pre
+
+var = lmp.extract_variable(name,group,flag)  # extract value(s) from a variable
+                                             # name = name of variable
+                                             # group = group ID (ignored for equal-style variables)
+                                             # flag = 0 = equal-style variable
+                                             #        1 = atom-style variable :pre
+
+value = lmp.get_thermo(name)              # return current value of a thermo keyword
+natoms = lmp.get_natoms()                 # total # of atoms as int :pre
+
+flag = lmp.set_variable(name,value)       # set existing named string-style variable to value, flag = 0 if successful
+lmp.reset_box(boxlo,boxhi,xy,yz,xz)       # reset the simulation box size :pre
+
+data = lmp.gather_atoms(name,type,count)  # return per-atom property of all atoms gathered into data, ordered by atom ID
+                                          # name = "x", "charge", "type", etc
+data = lmp.gather_atoms_concat(name,type,count)  # ditto, but concatenated atom values from each proc (unordered)
+data = lmp.gather_atoms_subset(name,type,count,ndata,ids)  # ditto, but for subset of Ndata atoms with IDs :pre
+
+lmp.scatter_atoms(name,type,count,data)   # scatter per-atom property to all atoms from data, ordered by atom ID
+                                          # name = "x", "charge", "type", etc
+                                          # count = # of per-atom values, 1 or 3, etc :pre
+lmp.scatter_atoms_subset(name,type,count,ndata,ids,data)  # ditto, but for subset of Ndata atoms with IDs :pre
+
+lmp.create_atoms(n,ids,types,x,v,image,shrinkexceed)   # create N atoms with IDs, types, x, v, and image flags :pre
+
+:line
+
+The lines
+
+from lammps import lammps
+lmp = lammps() :pre
+
+create an instance of LAMMPS, wrapped in a Python class by the lammps
+Python module, and return an instance of the Python class as lmp.  It
+is used to make all subsequent calls to the LAMMPS library.
+
+Additional arguments to lammps() can be used to tell Python the name
+of the shared library to load or to pass arguments to the LAMMPS
+instance, the same as if LAMMPS were launched from a command-line
+prompt.
+
+If the ptr argument is set like this:
+
+lmp = lammps(ptr=lmpptr) :pre
+
+then lmpptr must be an argument passed to Python via the LAMMPS
+"python"_python.html command, when it is used to define a Python
+function that is invoked by the LAMMPS input script.  This mode of
+calling Python from LAMMPS is described in the "Python
+call"_Python_call.html doc page.  The variable lmpptr refers to the
+instance of LAMMPS that called the embedded Python interpreter.  Using
+it as an argument to lammps() allows the returned Python class
+instance "lmp" to make calls to that instance of LAMMPS.  See the
+"python"_python.html command doc page for examples using this syntax.
+
+Note that you can create multiple LAMMPS objects in your Python
+script, and coordinate and run multiple simulations, e.g.
+
+from lammps import lammps
+lmp1 = lammps()
+lmp2 = lammps()
+lmp1.file("in.file1")
+lmp2.file("in.file2") :pre
+
+The file(), command(), commands_list(), commands_string() methods
+allow an input script, a single command, or multiple commands to be
+invoked.
+
+The extract_setting(), extract_global(), extract_box(),
+extract_atom(), extract_compute(), extract_fix(), and
+extract_variable() methods return values or pointers to data
+structures internal to LAMMPS.
+
+For extract_global() see the src/library.cpp file for the list of
+valid names.  New names could easily be added.  A double or integer is
+returned.  You need to specify the appropriate data type via the type
+argument.
+
+For extract_atom(), a pointer to internal LAMMPS atom-based data is
+returned, which you can use via normal Python subscripting.  See the
+extract() method in the src/atom.cpp file for a list of valid names.
+Again, new names could easily be added if the property you want is not
+listed.  A pointer to a vector of doubles or integers, or a pointer to
+an array of doubles (double **) or integers (int **) is returned.  You
+need to specify the appropriate data type via the type argument.
+
+For extract_compute() and extract_fix(), the global, per-atom, or
+local data calculated by the compute or fix can be accessed.  What is
+returned depends on whether the compute or fix calculates a scalar or
+vector or array.  For a scalar, a single double value is returned.  If
+the compute or fix calculates a vector or array, a pointer to the
+internal LAMMPS data is returned, which you can use via normal Python
+subscripting.  The one exception is that for a fix that calculates a
+global vector or array, a single double value from the vector or array
+is returned, indexed by I (vector) or I and J (array).  I,J are
+zero-based indices.  The I,J arguments can be left out if not needed.
+See "Section 6.15"_Section_howto.html#howto_15 of the manual for a
+discussion of global, per-atom, and local data, and of scalar, vector,
+and array data types.  See the doc pages for individual
+"computes"_compute.html and "fixes"_fix.html for a description of what
+they calculate and store.
+
+For extract_variable(), an "equal-style or atom-style
+variable"_variable.html is evaluated and its result returned.
+
+For equal-style variables a single double value is returned and the
+group argument is ignored.  For atom-style variables, a vector of
+doubles is returned, one value per atom, which you can use via normal
+Python subscripting. The values will be zero for atoms not in the
+specified group.
+
+The get_thermo() method returns returns the current value of a thermo
+keyword as a float.
+
+The get_natoms() method returns the total number of atoms in the
+simulation, as an int.
+
+The set_variable() methosd sets an existing string-style variable to a
+new string value, so that subsequent LAMMPS commands can access the
+variable.
+
+The reset_box() emthods resets the size and shape of the simulation
+box, e.g. as part of restoring a previously extracted and saved state
+of a simulation.
+
+The gather methods collect peratom info of the requested type (atom
+coords, atom types, forces, etc) from all processors, and returns the
+same vector of values to each callling processor.  The scatter
+functions do the inverse.  They distribute a vector of peratom values,
+passed by all calling processors, to invididual atoms, which may be
+owned by different processos.
+
+Note that the data returned by the gather methods,
+e.g. gather_atoms("x"), is different from the data structure returned
+by extract_atom("x") in four ways.  (1) Gather_atoms() returns a
+vector which you index as x\[i\]; extract_atom() returns an array
+which you index as x\[i\]\[j\].  (2) Gather_atoms() orders the atoms
+by atom ID while extract_atom() does not.  (3) Gather_atoms() returns
+a list of all atoms in the simulation; extract_atoms() returns just
+the atoms local to each processor.  (4) Finally, the gather_atoms()
+data structure is a copy of the atom coords stored internally in
+LAMMPS, whereas extract_atom() returns an array that effectively
+points directly to the internal data.  This means you can change
+values inside LAMMPS from Python by assigning a new values to the
+extract_atom() array.  To do this with the gather_atoms() vector, you
+need to change values in the vector, then invoke the scatter_atoms()
+method.
+
+For the scatter methods, the array of coordinates passed to must be a
+ctypes vector of ints or doubles, allocated and initialized something
+like this:
+
+from ctypes import *
+natoms = lmp.get_natoms()
+n3 = 3*natoms
+x = (n3*c_double)()
+x\[0\] = x coord of atom with ID 1
+x\[1\] = y coord of atom with ID 1
+x\[2\] = z coord of atom with ID 1
+x\[3\] = x coord of atom with ID 2
+...
+x\[n3-1\] = z coord of atom with ID natoms
+lmp.scatter_atoms("x",1,3,x) :pre
+
+Alternatively, you can just change values in the vector returned by
+the gather methods, since they are also ctypes vectors.
+
+:line
+
+As noted above, these Python class methods correspond one-to-one with
+the functions in the LAMMPS library interface in src/library.cpp and
+library.h.  This means you can extend the Python wrapper via the
+following steps:
+
+Add a new interface function to src/library.cpp and
+src/library.h. :ulb,l
+
+Rebuild LAMMPS as a shared library. :l
+
+Add a wrapper method to python/lammps.py for this interface
+function. :l
+
+You should now be able to invoke the new interface function from a
+Python script. :l
+:ule
diff --git a/doc/src/Python_mpi.txt b/doc/src/Python_mpi.txt
new file mode 100644
index 0000000000..8377bbb3d0
--- /dev/null
+++ b/doc/src/Python_mpi.txt
@@ -0,0 +1,67 @@
+"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Extending Python to run in parallel :h3
+
+If you wish to run LAMMPS in parallel from Python, you need to extend
+your Python with an interface to MPI.  This also allows you to
+make MPI calls directly from Python in your script, if you desire.
+
+We recommend use of mpi4py:
+
+"PyPar"_https://github.com/daleroberts/pypar :ul
+
+As of version 2.0.0 it allows passing a custom MPI communicator to
+the LAMMPS constructor, which means one can easily run one or more
+LAMMPS instances on subsets of the total MPI ranks.
+
+To install mpi4py (version mpi4py-2.0.0 as of Oct 2015), unpack it
+and from its main directory, type
+
+python setup.py build
+sudo python setup.py install :pre
+
+Again, the "sudo" is only needed if required to copy mpi4py files into
+your Python distribution's site-packages directory. To install with
+user privilege into the user local directory type
+
+python setup.py install --user :pre
+
+If you have successfully installed mpi4py, you should be able to run
+Python and type
+
+from mpi4py import MPI :pre
+
+without error.  You should also be able to run python in parallel
+on a simple test script
+
+% mpirun -np 4 python test.py :pre
+
+where test.py contains the lines
+
+from mpi4py import MPI
+comm = MPI.COMM_WORLD
+print "Proc %d out of %d procs" % (comm.Get_rank(),comm.Get_size()) :pre
+
+and see one line of output for each processor you run on.
+
+NOTE: To use mpi4py and LAMMPS in parallel from Python, you must
+insure both are using the same version of MPI.  If you only have one
+MPI installed on your system, this is not an issue, but it can be if
+you have multiple MPIs.  Your LAMMPS build is explicit about which MPI
+it is using, since you specify the details in your lo-level
+src/MAKE/Makefile.foo file.  Mpi4py uses the "mpicc" command to find
+information about the MPI it uses to build against.  And it tries to
+load "libmpi.so" from the LD_LIBRARY_PATH.  This may or may not find
+the MPI library that LAMMPS is using.  If you have problems running
+both mpi4py and LAMMPS together, this is an issue you may need to
+address, e.g. by moving other MPI installations so that mpi4py finds
+the right one.
+
+
diff --git a/doc/src/Python_overview.txt b/doc/src/Python_overview.txt
new file mode 100644
index 0000000000..a5d6a469ff
--- /dev/null
+++ b/doc/src/Python_overview.txt
@@ -0,0 +1,35 @@
+"Previous Section"_Examples.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Tools.html :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands.html#comm)
+
+:line
+
+Overview of Python and LAMMPS :h3
+
+LAMMPS can work together with Python in three ways.  First, Python can
+wrap LAMMPS through the its "library interface"_Howto_library.html, so
+that a Python script can create one or more instances of LAMMPS and
+launch one or more simulations.  In Python lingo, this is "extending"
+Python with LAMMPS.
+
+Second, a lower-level Python interface can be used indirectly through
+provided PyLammps and IPyLammps wrapper classes, written in Python.
+These wrappers try to simplify the usage of LAMMPS in Python by
+providing an object-based interface to common LAMMPS functionality.
+They also reduces the amount of code necessary to parameterize LAMMPS
+scripts through Python and make variables and computes directly
+accessible.
+
+Third, LAMMPS can use the Python interpreter, so that a LAMMPS
+input script can invoke Python code directly, and pass information
+back-and-forth between the input script and Python functions you
+write.  This Python code can also callback to LAMMPS to query or change
+its attributes.  In Python lingo, this is "embedding" Python in
+LAMMPS.  When used in this mode, Python can perform operations that
+the simple LAMMPS input script syntax cannot.
+
+
diff --git a/doc/src/Python_pylammps.txt b/doc/src/Python_pylammps.txt
new file mode 100644
index 0000000000..ad5ed192ee
--- /dev/null
+++ b/doc/src/Python_pylammps.txt
@@ -0,0 +1,14 @@
+"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+PyLammps interface :h3
+
+PyLammps is a Python wrapper class which can be created on its own or
+use an existing lammps Python object.  It has its own "PyLammps
+Tutorial"_tutorial_pylammps.html doc page.
diff --git a/doc/src/Python_run.txt b/doc/src/Python_run.txt
new file mode 100644
index 0000000000..03ab2ed3d7
--- /dev/null
+++ b/doc/src/Python_run.txt
@@ -0,0 +1,40 @@
+"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Run LAMMPS from Python :h3
+
+The LAMMPS distribution includes a python directory with all you need
+to run LAMMPS from Python.  The python/lammps.py file wraps the LAMMPS
+library interface, with one wrapper function per LAMMPS library
+function.  This file makes it is possible to do the following either
+from a Python script, or interactively from a Python prompt: create
+one or more instances of LAMMPS, invoke LAMMPS commands or give it an
+input script, run LAMMPS incrementally, extract LAMMPS results, an
+modify internal LAMMPS variables.  From a Python script you can do
+this in serial or parallel.  Running Python interactively in parallel
+does not generally work, unless you have a version of Python that
+extends Python to enable multiple instances of Python to read what you
+type.
+
+To do all of this, you must first build LAMMPS as a shared library,
+then insure that your Python can find the python/lammps.py file and
+the shared library.
+
+Two advantages of using Python to run LAMMPS are how concise the
+language is, and that it can be run interactively, enabling rapid
+development and debugging.  If you use it to mostly invoke costly
+operations within LAMMPS, such as running a simulation for a
+reasonable number of timesteps, then the overhead cost of invoking
+LAMMPS thru Python will be negligible.
+
+The Python wrapper for LAMMPS uses the "ctypes" package in Python,
+which auto-generates the interface code needed between Python and a
+set of C-style library functions.  Ctypes is part of standard Python
+for versions 2.5 and later.  You can check which version of Python you
+have by simply typing "python" at a shell prompt.
diff --git a/doc/src/Python_shlib.txt b/doc/src/Python_shlib.txt
new file mode 100644
index 0000000000..1aafbe2e84
--- /dev/null
+++ b/doc/src/Python_shlib.txt
@@ -0,0 +1,34 @@
+"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Build LAMMPS as a shared library :h3
+
+Instructions on how to build LAMMPS as a shared library are given in
+"Section 2.4"_Section_start.html#start_4.  A shared library is one
+that is dynamically loadable, which is what Python requires to wrap
+LAMMPS.  On Linux this is a library file that ends in ".so", not ".a".
+
+From the src directory, type
+
+make foo mode=shlib :pre
+
+where foo is the machine target name, such as mpi or serial.
+This should create the file liblammps_foo.so in the src directory, as
+well as a soft link liblammps.so, which is what the Python wrapper will
+load by default.  Note that if you are building multiple machine
+versions of the shared library, the soft link is always set to the
+most recently built version.
+
+NOTE: If you are building LAMMPS with an MPI or FFT library or other
+auxiliary libraries (used by various packages), then all of these
+extra libraries must also be shared libraries.  If the LAMMPS
+shared-library build fails with an error complaining about this, see
+"Section 2.4"_Section_start.html#start_4 for more details.
+
+Also include CMake info on this
diff --git a/doc/src/Python_test.txt b/doc/src/Python_test.txt
new file mode 100644
index 0000000000..5f361a500b
--- /dev/null
+++ b/doc/src/Python_test.txt
@@ -0,0 +1,131 @@
+"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Test the Python/LAMMPS interface :h3
+
+To test if LAMMPS is callable from Python, launch Python interactively
+and type:
+
+>>> from lammps import lammps
+>>> lmp = lammps() :pre
+
+If you get no errors, you're ready to use LAMMPS from Python.  If the
+2nd command fails, the most common error to see is
+
+OSError: Could not load LAMMPS dynamic library :pre
+
+which means Python was unable to load the LAMMPS shared library.  This
+typically occurs if the system can't find the LAMMPS shared library or
+one of the auxiliary shared libraries it depends on, or if something
+about the library is incompatible with your Python.  The error message
+should give you an indication of what went wrong.
+
+You can also test the load directly in Python as follows, without
+first importing from the lammps.py file:
+
+>>> from ctypes import CDLL
+>>> CDLL("liblammps.so") :pre
+
+If an error occurs, carefully go thru the steps in "Section
+2.4"_Section_start.html#start_4 and above about building a shared
+library and about insuring Python can find the necessary two files
+it needs.
+
+[Test LAMMPS and Python in serial:] :h4
+
+To run a LAMMPS test in serial, type these lines into Python
+interactively from the bench directory:
+
+>>> from lammps import lammps
+>>> lmp = lammps()
+>>> lmp.file("in.lj") :pre
+
+Or put the same lines in the file test.py and run it as
+
+% python test.py :pre
+
+Either way, you should see the results of running the in.lj benchmark
+on a single processor appear on the screen, the same as if you had
+typed something like:
+
+lmp_g++ -in in.lj :pre
+
+[Test LAMMPS and Python in parallel:] :h4
+
+To run LAMMPS in parallel, assuming you have installed the
+"PyPar"_https://github.com/daleroberts/pypar package as discussed
+above, create a test.py file containing these lines:
+
+import pypar
+from lammps import lammps
+lmp = lammps()
+lmp.file("in.lj")
+print "Proc %d out of %d procs has" % (pypar.rank(),pypar.size()),lmp
+pypar.finalize() :pre
+
+To run LAMMPS in parallel, assuming you have installed the
+"mpi4py"_https://bitbucket.org/mpi4py/mpi4py package as discussed
+above, create a test.py file containing these lines:
+
+from mpi4py import MPI
+from lammps import lammps
+lmp = lammps()
+lmp.file("in.lj")
+me = MPI.COMM_WORLD.Get_rank()
+nprocs = MPI.COMM_WORLD.Get_size()
+print "Proc %d out of %d procs has" % (me,nprocs),lmp
+MPI.Finalize() :pre
+
+You can either script in parallel as:
+
+% mpirun -np 4 python test.py :pre
+
+and you should see the same output as if you had typed
+
+% mpirun -np 4 lmp_g++ -in in.lj :pre
+
+Note that if you leave out the 3 lines from test.py that specify PyPar
+commands you will instantiate and run LAMMPS independently on each of
+the P processors specified in the mpirun command.  In this case you
+should get 4 sets of output, each showing that a LAMMPS run was made
+on a single processor, instead of one set of output showing that
+LAMMPS ran on 4 processors.  If the 1-processor outputs occur, it
+means that PyPar is not working correctly.
+
+Also note that once you import the PyPar module, PyPar initializes MPI
+for you, and you can use MPI calls directly in your Python script, as
+described in the PyPar documentation.  The last line of your Python
+script should be pypar.finalize(), to insure MPI is shut down
+correctly.
+
+[Running Python scripts:] :h4
+
+Note that any Python script (not just for LAMMPS) can be invoked in
+one of several ways:
+
+% python foo.script
+% python -i foo.script
+% foo.script :pre
+
+The last command requires that the first line of the script be
+something like this:
+
+#!/usr/local/bin/python
+#!/usr/local/bin/python -i :pre
+
+where the path points to where you have Python installed, and that you
+have made the script file executable:
+
+% chmod +x foo.script :pre
+
+Without the "-i" flag, Python will exit when the script finishes.
+With the "-i" flag, you will be left in the Python interpreter when
+the script finishes, so you can type subsequent commands.  As
+mentioned above, you can only run Python interactively when running
+Python on a single processor, not in parallel.
diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt
index a44013f5f1..7b9349a233 100644
--- a/doc/src/Section_commands.txt
+++ b/doc/src/Section_commands.txt
@@ -67,7 +67,7 @@ values are not desired, the "processors"_processors.html and
 tell LAMMPS how to map processors to the simulation box.
 
 Many input script errors are detected by LAMMPS and an ERROR or
-WARNING message is printed.  "This section"_Section_errors.html gives
+WARNING message is printed.  The "Errors"_Errors.html doc page gives
 more information on what errors mean.  The documentation for each
 command lists restrictions on how the command can be used.
 
diff --git a/doc/src/Section_history.txt b/doc/src/Section_history.txt
index 7b90410628..6bbd1e4d99 100644
--- a/doc/src/Section_history.txt
+++ b/doc/src/Section_history.txt
@@ -1,4 +1,4 @@
-"Previous Section"_Section_errors.html - "LAMMPS WWW Site"_lws -
+"Previous Section"_Errors.html - "LAMMPS WWW Site"_lws -
 "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
 Section"_Manual.html :c
 
diff --git a/doc/src/Section_howto.txt b/doc/src/Section_howto.txt
index 0a31fc2b48..3c5fe47057 100644
--- a/doc/src/Section_howto.txt
+++ b/doc/src/Section_howto.txt
@@ -731,10 +731,10 @@ any other language that supports a vanilla C-like interface).  For
 example, from C++ you could create one (or more) "instances" of
 LAMMPS, pass it an input script to process, or execute individual
 commands, all by invoking the correct class methods in LAMMPS.  From C
-or Fortran you can make function calls to do the same things.  See
-"Section 11"_Section_python.html of the manual for a description
-of the Python wrapper provided with LAMMPS that operates through the
-LAMMPS library interface.
+or Fortran you can make function calls to do the same things.  See the
+"Python"_Python.html doc page for a description of the Python wrapper
+provided with LAMMPS that operates through the LAMMPS library
+interface.
 
 The files src/library.cpp and library.h contain the C-style interface
 to LAMMPS.  See "Section 6.19"_Section_howto.html#howto_19 of the
@@ -1843,10 +1843,10 @@ converge and requires careful post-processing "(Shinoda)"_#Shinoda1
 
 6.19 Library interface to LAMMPS :link(howto_19),h4
 
-As described in "Section 2.5"_Section_start.html#start_5, LAMMPS
-can be built as a library, so that it can be called by another code,
-used in a "coupled manner"_Section_howto.html#howto_10 with other
-codes, or driven through a "Python interface"_Section_python.html.
+As described in "Section 2.5"_Section_start.html#start_5, LAMMPS can
+be built as a library, so that it can be called by another code, used
+in a "coupled manner"_Section_howto.html#howto_10 with other codes, or
+driven through a "Python interface"_Python.html.
 
 All of these methodologies use a C-style interface to LAMMPS that is
 provided in the files src/library.cpp and src/library.h.  The
@@ -1869,9 +1869,9 @@ details.
 
 NOTE: You can write code for additional functions as needed to define
 how your code talks to LAMMPS and add them to src/library.cpp and
-src/library.h, as well as to the "Python
-interface"_Section_python.html.  The added functions can access or
-change any internal LAMMPS data you wish.
+src/library.h, as well as to the "Python interface"_Python.html.  The
+added functions can access or change any internal LAMMPS data you
+wish.
 
 void lammps_open(int, char **, MPI_Comm, void **)
 void lammps_open_no_mpi(int, char **, void **)
diff --git a/doc/src/Section_intro.txt b/doc/src/Section_intro.txt
index fa2ab0e768..c7cf5bf8d2 100644
--- a/doc/src/Section_intro.txt
+++ b/doc/src/Section_intro.txt
@@ -1,4 +1,6 @@
-"Previous Section"_Manual.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_start.html :c
+"Previous Section"_Manual.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Section_start.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -429,7 +431,7 @@ Site"_lws, or have a suggestion for something to clarify or include,
 send an email to the
 "developers"_http://lammps.sandia.gov/authors.html. :l
 
-If you find a bug, "Section 12.2"_Section_errors.html#err_2
+If you find a bug, the "Errors bugs"_Errors_bugs.html doc page
 describes how to report it. :l
 
 If you publish a paper using LAMMPS results, send the citation (and
diff --git a/doc/src/Section_packages.txt b/doc/src/Section_packages.txt
index 77f56d273c..340a77310d 100644
--- a/doc/src/Section_packages.txt
+++ b/doc/src/Section_packages.txt
@@ -1178,10 +1178,10 @@ PYTHON package :link(PYTHON),h4
 
 A "python"_python.html command which allow you to execute Python code
 from a LAMMPS input script.  The code can be in a separate file or
-embedded in the input script itself.  See "Section
-11.2"_Section_python.html#py_2 for an overview of using Python from
-LAMMPS in this manner and the entire section for other ways to use
-LAMMPS and Python together.
+embedded in the input script itself.  See the "Python
+call"_Python_call.html doc page for an overview of using Python from
+LAMMPS in this manner and the "Python"_Python.html doc page for other
+ways to use LAMMPS and Python together.
 
 [Install or un-install:]
 
@@ -1202,7 +1202,7 @@ to Makefile.lammps) if the LAMMPS build fails.
 [Supporting info:]
 
 src/PYTHON: filenames -> commands
-"Section 11"_Section_python.html
+"Python call"_Python_call.html
 lib/python/README
 examples/python :ul
 
diff --git a/doc/src/Section_python.txt b/doc/src/Section_python.txt
deleted file mode 100644
index c9b0bd8b2e..0000000000
--- a/doc/src/Section_python.txt
+++ /dev/null
@@ -1,869 +0,0 @@
-"Previous Section"_Modify.html - "LAMMPS WWW Site"_lws - "LAMMPS
-Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Section_errors.html :c
-
-:link(lws,http://lammps.sandia.gov)
-:link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
-
-:line
-
-11. Python interface to LAMMPS :h2
-
-LAMMPS can work together with Python in three ways.  First, Python can
-wrap LAMMPS through the "LAMMPS library
-interface"_Section_howto.html#howto_19, so that a Python script can
-create one or more instances of LAMMPS and launch one or more
-simulations.  In Python lingo, this is "extending" Python with LAMMPS.
-
-Second, the low-level Python interface can be used indirectly through the
-PyLammps and IPyLammps wrapper classes in Python. These wrappers try to
-simplify the usage of LAMMPS in Python by providing an object-based interface
-to common LAMMPS functionality. It also reduces the amount of code necessary to
-parameterize LAMMPS scripts through Python and makes variables and computes
-directly accessible. See "PyLammps interface"_#py_9 for more details.
-
-Third, LAMMPS can use the Python interpreter, so that a LAMMPS input
-script can invoke Python code, and pass information back-and-forth
-between the input script and Python functions you write.  The Python
-code can also callback to LAMMPS to query or change its attributes.
-In Python lingo, this is "embedding" Python in LAMMPS.
-
-This section describes how to use these three approaches.
-
-11.1 "Overview of running LAMMPS from Python"_#py_1
-11.2 "Overview of using Python from a LAMMPS script"_#py_2
-11.3 "Building LAMMPS as a shared library"_#py_3
-11.4 "Installing the Python wrapper into Python"_#py_4
-11.5 "Extending Python with MPI to run in parallel"_#py_5
-11.6 "Testing the Python-LAMMPS interface"_#py_6
-11.7 "Using LAMMPS from Python"_#py_7
-11.8 "Example Python scripts that use LAMMPS"_#py_8
-11.9 "PyLammps interface"_#py_9 :ul
-
-If you are not familiar with it, "Python"_http://www.python.org is a
-powerful scripting and programming language which can essentially do
-anything that faster, lower-level languages like C or C++ can do, but
-typically with much fewer lines of code.  When used in embedded mode,
-Python can perform operations that the simplistic LAMMPS input script
-syntax cannot.  Python can be also be used as a "glue" language to
-drive a program through its library interface, or to hook multiple
-pieces of software together, such as a simulation package plus a
-visualization package, or to run a coupled multiscale or multiphysics
-model.
-
-See "Section 6.10"_Section_howto.html#howto_10 of the manual and
-the couple directory of the distribution for more ideas about coupling
-LAMMPS to other codes.  See "Section
-6.19"_Section_howto.html#howto_19 for a description of the LAMMPS
-library interface provided in src/library.cpp and src/library.h, and
-how to extend it for your needs.  As described below, that interface
-is what is exposed to Python either when calling LAMMPS from Python or
-when calling Python from a LAMMPS input script and then calling back
-to LAMMPS from Python code.  The library interface is designed to be
-easy to add functions to.  Thus the Python interface to LAMMPS is also
-easy to extend as well.
-
-If you create interesting Python scripts that run LAMMPS or
-interesting Python functions that can be called from a LAMMPS input
-script, that you think would be useful to other users, please "email
-them to the developers"_http://lammps.sandia.gov/authors.html.  We can
-include them in the LAMMPS distribution.
-
-:line
-:line
-
-11.1 Overview of running LAMMPS from Python :link(py_1),h4
-
-The LAMMPS distribution includes a python directory with all you need
-to run LAMMPS from Python.  The python/lammps.py file wraps the LAMMPS
-library interface, with one wrapper function per LAMMPS library
-function.  This file makes it is possible to do the following either
-from a Python script, or interactively from a Python prompt: create
-one or more instances of LAMMPS, invoke LAMMPS commands or give it an
-input script, run LAMMPS incrementally, extract LAMMPS results, an
-modify internal LAMMPS variables.  From a Python script you can do
-this in serial or parallel.  Running Python interactively in parallel
-does not generally work, unless you have a version of Python that
-extends standard Python to enable multiple instances of Python to read
-what you type.
-
-To do all of this, you must first build LAMMPS as a shared library,
-then insure that your Python can find the python/lammps.py file and
-the shared library.  These steps are explained in subsequent sections
-11.3 and 11.4.  Sections 11.5 and 11.6 discuss using MPI from a
-parallel Python program and how to test that you are ready to use
-LAMMPS from Python.  Section 11.7 lists all the functions in the
-current LAMMPS library interface and how to call them from Python.
-
-Section 11.8 gives some examples of coupling LAMMPS to other tools via
-Python.  For example, LAMMPS can easily be coupled to a GUI or other
-visualization tools that display graphs or animations in real time as
-LAMMPS runs.  Examples of such scripts are included in the python
-directory.
-
-Two advantages of using Python to run LAMMPS are how concise the
-language is, and that it can be run interactively, enabling rapid
-development and debugging of programs.  If you use it to mostly invoke
-costly operations within LAMMPS, such as running a simulation for a
-reasonable number of timesteps, then the overhead cost of invoking
-LAMMPS thru Python will be negligible.
-
-The Python wrapper for LAMMPS uses the amazing and magical (to me)
-"ctypes" package in Python, which auto-generates the interface code
-needed between Python and a set of C interface routines for a library.
-Ctypes is part of standard Python for versions 2.5 and later.  You can
-check which version of Python you have installed, by simply typing
-"python" at a shell prompt.
-
-:line
-
-11.2 Overview of using Python from a LAMMPS script :link(py_2),h4
-
-LAMMPS has several commands which can be used to invoke Python
-code directly from an input script:
-
-"python"_python.html
-"variable python"_variable.html
-"fix python/invoke"_fix_python_invoke.html
-"pair_style python"_pair_python.html :ul
-
-The "python"_python.html command which can be used to define and
-execute a Python function that you write the code for.  The Python
-function can also be assigned to a LAMMPS python-style variable via
-the "variable"_variable.html command.  Each time the variable is
-evaluated, either in the LAMMPS input script itself, or by another
-LAMMPS command that uses the variable, this will trigger the Python
-function to be invoked.
-
-The Python code for the function can be included directly in the input
-script or in an auxiliary file.  The function can have arguments which
-are mapped to LAMMPS variables (also defined in the input script) and
-it can return a value to a LAMMPS variable.  This is thus a mechanism
-for your input script to pass information to a piece of Python code,
-ask Python to execute the code, and return information to your input
-script.
-
-Note that a Python function can be arbitrarily complex.  It can import
-other Python modules, instantiate Python classes, call other Python
-functions, etc.  The Python code that you provide can contain more
-code than the single function.  It can contain other functions or
-Python classes, as well as global variables or other mechanisms for
-storing state between calls from LAMMPS to the function.
-
-The Python function you provide can consist of "pure" Python code that
-only performs operations provided by standard Python.  However, the
-Python function can also "call back" to LAMMPS through its
-Python-wrapped library interface, in the manner described in the
-previous section 11.1.  This means it can issue LAMMPS input script
-commands or query and set internal LAMMPS state.  As an example, this
-can be useful in an input script to create a more complex loop with
-branching logic, than can be created using the simple looping and
-branching logic enabled by the "next"_next.html and "if"_if.html
-commands.
-
-See the "python"_python.html doc page and the "variable"_variable.html
-doc page for its python-style variables for more info, including
-examples of Python code you can write for both pure Python operations
-and callbacks to LAMMPS.
-
-The "fix python/invoke"_fix_python_invoke.html command can execute
-Python code at selected timesteps during a simulation run.
-
-The "pair_style python"_pair_python command allows you to define
-pairwise potentials as python code which encodes a single pairwise
-interaction.  This is useful for rapid-developement and debugging of a
-new potential.
-
-To use any of these commands, you only need to build LAMMPS with the
-PYTHON package installed:
-
-make yes-python
-make machine :pre
-
-Note that this will link LAMMPS with the Python library on your
-system, which typically requires several auxiliary system libraries to
-also be linked.  The list of these libraries and the paths to find
-them are specified in the lib/python/Makefile.lammps file.  You need
-to insure that file contains the correct information for your version
-of Python and your machine to successfully build LAMMPS.  See the
-lib/python/README file for more info.
-
-If you want to write Python code with callbacks to LAMMPS, then you
-must also follow the steps overviewed in the preceding section (11.1)
-for running LAMMPS from Python.  I.e. you must build LAMMPS as a
-shared library and insure that Python can find the python/lammps.py
-file and the shared library.
-
-:line
-
-11.3 Building LAMMPS as a shared library :link(py_3),h4
-
-Instructions on how to build LAMMPS as a shared library are given in
-"Section 2.4"_Section_start.html#start_4.  A shared library is one
-that is dynamically loadable, which is what Python requires to wrap
-LAMMPS.  On Linux this is a library file that ends in ".so", not ".a".
-
-From the src directory, type
-
-make foo mode=shlib :pre
-
-where foo is the machine target name, such as linux or g++ or serial.
-This should create the file liblammps_foo.so in the src directory, as
-well as a soft link liblammps.so, which is what the Python wrapper will
-load by default.  Note that if you are building multiple machine
-versions of the shared library, the soft link is always set to the
-most recently built version.
-
-NOTE: If you are building LAMMPS with an MPI or FFT library or other
-auxiliary libraries (used by various packages), then all of these
-extra libraries must also be shared libraries.  If the LAMMPS
-shared-library build fails with an error complaining about this, see
-"Section 2.4"_Section_start.html#start_4 for more details.
-
-:line
-
-11.4 Installing the Python wrapper into Python :link(py_4),h4
-
-For Python to invoke LAMMPS, there are 2 files it needs to know about:
-
-python/lammps.py
-src/liblammps.so :ul
-
-Lammps.py is the Python wrapper on the LAMMPS library interface.
-Liblammps.so is the shared LAMMPS library that Python loads, as
-described above.
-
-You can insure Python can find these files in one of two ways:
-
-set two environment variables
-run the python/install.py script :ul
-
-If you set the paths to these files as environment variables, you only
-have to do it once.  For the csh or tcsh shells, add something like
-this to your ~/.cshrc file, one line for each of the two files:
-
-setenv PYTHONPATH $\{PYTHONPATH\}:/home/sjplimp/lammps/python
-setenv LD_LIBRARY_PATH $\{LD_LIBRARY_PATH\}:/home/sjplimp/lammps/src :pre
-
-If you use the python/install.py script, you need to invoke it every
-time you rebuild LAMMPS (as a shared library) or make changes to the
-python/lammps.py file.
-
-You can invoke install.py from the python directory as
-
-% python install.py \[libdir\] \[pydir\] :pre
-
-The optional libdir is where to copy the LAMMPS shared library to; the
-default is /usr/local/lib.  The optional pydir is where to copy the
-lammps.py file to; the default is the site-packages directory of the
-version of Python that is running the install script.
-
-Note that libdir must be a location that is in your default
-LD_LIBRARY_PATH, like /usr/local/lib or /usr/lib.  And pydir must be a
-location that Python looks in by default for imported modules, like
-its site-packages dir.  If you want to copy these files to
-non-standard locations, such as within your own user space, you will
-need to set your PYTHONPATH and LD_LIBRARY_PATH environment variables
-accordingly, as above.
-
-If the install.py script does not allow you to copy files into system
-directories, prefix the python command with "sudo".  If you do this,
-make sure that the Python that root runs is the same as the Python you
-run.  E.g. you may need to do something like
-
-% sudo /usr/local/bin/python install.py \[libdir\] \[pydir\] :pre
-
-You can also invoke install.py from the make command in the src
-directory as
-
-% make install-python :pre
-
-In this mode you cannot append optional arguments.  Again, you may
-need to prefix this with "sudo".  In this mode you cannot control
-which Python is invoked by root.
-
-Note that if you want Python to be able to load different versions of
-the LAMMPS shared library (see "this section"_#py_5 below), you will
-need to manually copy files like liblammps_g++.so into the appropriate
-system directory.  This is not needed if you set the LD_LIBRARY_PATH
-environment variable as described above.
-
-:line
-
-11.5 Extending Python with MPI to run in parallel :link(py_5),h4
-
-If you wish to run LAMMPS in parallel from Python, you need to extend
-your Python with an interface to MPI.  This also allows you to
-make MPI calls directly from Python in your script, if you desire.
-
-There are several Python packages available that purport to wrap MPI
-as a library and allow MPI functions to be called from Python. However,
-development on most of them seems to be halted except on:
-
-"mpi4py"_https://bitbucket.org/mpi4py/mpi4py
-"PyPar"_https://github.com/daleroberts/pypar :ul
-
-Both packages, PyPar and mpi4py have been successfully tested with
-LAMMPS.  PyPar is simpler and easy to set up and use, but supports
-only a subset of MPI.  Mpi4py is more MPI-feature complete, but also a
-bit more complex to use.  As of version 2.0.0, mpi4py is the only
-python MPI wrapper that allows passing a custom MPI communicator to
-the LAMMPS constructor, which means one can easily run one or more
-LAMMPS instances on subsets of the total MPI ranks.
-
-:line
-
-PyPar requires the ubiquitous "Numpy package"_http://numpy.scipy.org
-be installed in your Python.  After launching Python, type
-
-import numpy :pre
-
-to see if it is installed.  If not, here is how to install it (version
-1.3.0b1 as of April 2009).  Unpack the numpy tarball and from its
-top-level directory, type
-
-python setup.py build
-sudo python setup.py install :pre
-
-The "sudo" is only needed if required to copy Numpy files into your
-Python distribution's site-packages directory.
-
-To install PyPar (version pypar-2.1.4_94 as of Aug 2012), unpack it
-and from its "source" directory, type
-
-python setup.py build
-sudo python setup.py install :pre
-
-Again, the "sudo" is only needed if required to copy PyPar files into
-your Python distribution's site-packages directory.
-
-If you have successfully installed PyPar, you should be able to run
-Python and type
-
-import pypar :pre
-
-without error.  You should also be able to run python in parallel
-on a simple test script
-
-% mpirun -np 4 python test.py :pre
-
-where test.py contains the lines
-
-import pypar
-print "Proc %d out of %d procs" % (pypar.rank(),pypar.size()) :pre
-
-and see one line of output for each processor you run on.
-
-NOTE: To use PyPar and LAMMPS in parallel from Python, you must insure
-both are using the same version of MPI.  If you only have one MPI
-installed on your system, this is not an issue, but it can be if you
-have multiple MPIs.  Your LAMMPS build is explicit about which MPI it
-is using, since you specify the details in your lo-level
-src/MAKE/Makefile.foo file.  PyPar uses the "mpicc" command to find
-information about the MPI it uses to build against.  And it tries to
-load "libmpi.so" from the LD_LIBRARY_PATH.  This may or may not find
-the MPI library that LAMMPS is using.  If you have problems running
-both PyPar and LAMMPS together, this is an issue you may need to
-address, e.g. by moving other MPI installations so that PyPar finds
-the right one.
-
-:line
-
-To install mpi4py (version mpi4py-2.0.0 as of Oct 2015), unpack it
-and from its main directory, type
-
-python setup.py build
-sudo python setup.py install :pre
-
-Again, the "sudo" is only needed if required to copy mpi4py files into
-your Python distribution's site-packages directory. To install with
-user privilege into the user local directory type
-
-python setup.py install --user :pre
-
-If you have successfully installed mpi4py, you should be able to run
-Python and type
-
-from mpi4py import MPI :pre
-
-without error.  You should also be able to run python in parallel
-on a simple test script
-
-% mpirun -np 4 python test.py :pre
-
-where test.py contains the lines
-
-from mpi4py import MPI
-comm = MPI.COMM_WORLD
-print "Proc %d out of %d procs" % (comm.Get_rank(),comm.Get_size()) :pre
-
-and see one line of output for each processor you run on.
-
-NOTE: To use mpi4py and LAMMPS in parallel from Python, you must
-insure both are using the same version of MPI.  If you only have one
-MPI installed on your system, this is not an issue, but it can be if
-you have multiple MPIs.  Your LAMMPS build is explicit about which MPI
-it is using, since you specify the details in your lo-level
-src/MAKE/Makefile.foo file.  Mpi4py uses the "mpicc" command to find
-information about the MPI it uses to build against.  And it tries to
-load "libmpi.so" from the LD_LIBRARY_PATH.  This may or may not find
-the MPI library that LAMMPS is using.  If you have problems running
-both mpi4py and LAMMPS together, this is an issue you may need to
-address, e.g. by moving other MPI installations so that mpi4py finds
-the right one.
-
-:line
-
-11.6 Testing the Python-LAMMPS interface :link(py_6),h4
-
-To test if LAMMPS is callable from Python, launch Python interactively
-and type:
-
->>> from lammps import lammps
->>> lmp = lammps() :pre
-
-If you get no errors, you're ready to use LAMMPS from Python.  If the
-2nd command fails, the most common error to see is
-
-OSError: Could not load LAMMPS dynamic library :pre
-
-which means Python was unable to load the LAMMPS shared library.  This
-typically occurs if the system can't find the LAMMPS shared library or
-one of the auxiliary shared libraries it depends on, or if something
-about the library is incompatible with your Python.  The error message
-should give you an indication of what went wrong.
-
-You can also test the load directly in Python as follows, without
-first importing from the lammps.py file:
-
->>> from ctypes import CDLL
->>> CDLL("liblammps.so") :pre
-
-If an error occurs, carefully go thru the steps in "Section
-2.4"_Section_start.html#start_4 and above about building a shared
-library and about insuring Python can find the necessary two files
-it needs.
-
-[Test LAMMPS and Python in serial:] :h4
-
-To run a LAMMPS test in serial, type these lines into Python
-interactively from the bench directory:
-
->>> from lammps import lammps
->>> lmp = lammps()
->>> lmp.file("in.lj") :pre
-
-Or put the same lines in the file test.py and run it as
-
-% python test.py :pre
-
-Either way, you should see the results of running the in.lj benchmark
-on a single processor appear on the screen, the same as if you had
-typed something like:
-
-lmp_g++ -in in.lj :pre
-
-[Test LAMMPS and Python in parallel:] :h4
-
-To run LAMMPS in parallel, assuming you have installed the
-"PyPar"_https://github.com/daleroberts/pypar package as discussed
-above, create a test.py file containing these lines:
-
-import pypar
-from lammps import lammps
-lmp = lammps()
-lmp.file("in.lj")
-print "Proc %d out of %d procs has" % (pypar.rank(),pypar.size()),lmp
-pypar.finalize() :pre
-
-To run LAMMPS in parallel, assuming you have installed the
-"mpi4py"_https://bitbucket.org/mpi4py/mpi4py package as discussed
-above, create a test.py file containing these lines:
-
-from mpi4py import MPI
-from lammps import lammps
-lmp = lammps()
-lmp.file("in.lj")
-me = MPI.COMM_WORLD.Get_rank()
-nprocs = MPI.COMM_WORLD.Get_size()
-print "Proc %d out of %d procs has" % (me,nprocs),lmp
-MPI.Finalize() :pre
-
-You can either script in parallel as:
-
-% mpirun -np 4 python test.py :pre
-
-and you should see the same output as if you had typed
-
-% mpirun -np 4 lmp_g++ -in in.lj :pre
-
-Note that if you leave out the 3 lines from test.py that specify PyPar
-commands you will instantiate and run LAMMPS independently on each of
-the P processors specified in the mpirun command.  In this case you
-should get 4 sets of output, each showing that a LAMMPS run was made
-on a single processor, instead of one set of output showing that
-LAMMPS ran on 4 processors.  If the 1-processor outputs occur, it
-means that PyPar is not working correctly.
-
-Also note that once you import the PyPar module, PyPar initializes MPI
-for you, and you can use MPI calls directly in your Python script, as
-described in the PyPar documentation.  The last line of your Python
-script should be pypar.finalize(), to insure MPI is shut down
-correctly.
-
-[Running Python scripts:] :h4
-
-Note that any Python script (not just for LAMMPS) can be invoked in
-one of several ways:
-
-% python foo.script
-% python -i foo.script
-% foo.script :pre
-
-The last command requires that the first line of the script be
-something like this:
-
-#!/usr/local/bin/python
-#!/usr/local/bin/python -i :pre
-
-where the path points to where you have Python installed, and that you
-have made the script file executable:
-
-% chmod +x foo.script :pre
-
-Without the "-i" flag, Python will exit when the script finishes.
-With the "-i" flag, you will be left in the Python interpreter when
-the script finishes, so you can type subsequent commands.  As
-mentioned above, you can only run Python interactively when running
-Python on a single processor, not in parallel.
-
-:line
-:line
-
-11.7 Using LAMMPS from Python :link(py_7),h4
-
-As described above, the Python interface to LAMMPS consists of a
-Python "lammps" module, the source code for which is in
-python/lammps.py, which creates a "lammps" object, with a set of
-methods that can be invoked on that object.  The sample Python code
-below assumes you have first imported the "lammps" module in your
-Python script, as follows:
-
-from lammps import lammps :pre
-
-These are the methods defined by the lammps module.  If you look at
-the files src/library.cpp and src/library.h you will see they
-correspond one-to-one with calls you can make to the LAMMPS library
-from a C++ or C or Fortran program, and which are described in
-"Section 6.19"_Section_howto.html#howto_19 of the manual.
-
-The python/examples directory has Python scripts which show how Python
-can run LAMMPS, grab data, change it, and put it back into LAMMPS.
-
-lmp = lammps()           # create a LAMMPS object using the default liblammps.so library
-                         # 4 optional args are allowed: name, cmdargs, ptr, comm
-lmp = lammps(ptr=lmpptr) # use lmpptr as previously created LAMMPS object
-lmp = lammps(comm=split) # create a LAMMPS object with a custom communicator, requires mpi4py 2.0.0 or later
-lmp = lammps(name="g++")   # create a LAMMPS object using the liblammps_g++.so library
-lmp = lammps(name="g++",cmdargs=list)    # add LAMMPS command-line args, e.g. list = \["-echo","screen"\] :pre
-
-lmp.close()              # destroy a LAMMPS object :pre
-
-version = lmp.version()  # return the numerical version id, e.g. LAMMPS 2 Sep 2015 -> 20150902 :pre
-
-lmp.file(file)           # run an entire input script, file = "in.lj"
-lmp.command(cmd)         # invoke a single LAMMPS command, cmd = "run 100"
-lmp.commands_list(cmdlist)     # invoke commands in cmdlist = ["run 10", "run 20"]
-lmp.commands_string(multicmd)  # invoke commands in multicmd = "run 10\nrun 20" :pre
-
-size = lmp.extract_setting(name)     # return data type info :pre
-
-xlo = lmp.extract_global(name,type)  # extract a global quantity
-                                     # name = "boxxlo", "nlocal", etc
-                                     # type = 0 = int
-                                     #        1 = double :pre
-
-boxlo,boxhi,xy,yz,xz,periodicity,box_change = lmp.extract_box()  # extract box info :pre
-
-coords = lmp.extract_atom(name,type)      # extract a per-atom quantity
-                                          # name = "x", "type", etc
-                                          # type = 0 = vector of ints
-                                          #        1 = array of ints
-                                          #        2 = vector of doubles
-                                          #        3 = array of doubles :pre
-
-eng = lmp.extract_compute(id,style,type)  # extract value(s) from a compute
-v3 = lmp.extract_fix(id,style,type,i,j)   # extract value(s) from a fix
-                                          # id = ID of compute or fix
-                                          # style = 0 = global data
-                                          #         1 = per-atom data
-                                          #         2 = local data
-                                          # type = 0 = scalar
-                                          #        1 = vector
-                                          #        2 = array
-                                          # i,j = indices of value in global vector or array :pre
-
-var = lmp.extract_variable(name,group,flag)  # extract value(s) from a variable
-                                             # name = name of variable
-                                             # group = group ID (ignored for equal-style variables)
-                                             # flag = 0 = equal-style variable
-                                             #        1 = atom-style variable :pre
-
-value = lmp.get_thermo(name)              # return current value of a thermo keyword
-natoms = lmp.get_natoms()                 # total # of atoms as int :pre
-
-flag = lmp.set_variable(name,value)       # set existing named string-style variable to value, flag = 0 if successful
-lmp.reset_box(boxlo,boxhi,xy,yz,xz)       # reset the simulation box size :pre
-
-data = lmp.gather_atoms(name,type,count)  # return per-atom property of all atoms gathered into data, ordered by atom ID
-                                          # name = "x", "charge", "type", etc
-data = lmp.gather_atoms_concat(name,type,count)  # ditto, but concatenated atom values from each proc (unordered)
-data = lmp.gather_atoms_subset(name,type,count,ndata,ids)  # ditto, but for subset of Ndata atoms with IDs :pre
-
-lmp.scatter_atoms(name,type,count,data)   # scatter per-atom property to all atoms from data, ordered by atom ID
-                                          # name = "x", "charge", "type", etc
-                                          # count = # of per-atom values, 1 or 3, etc :pre
-lmp.scatter_atoms_subset(name,type,count,ndata,ids,data)  # ditto, but for subset of Ndata atoms with IDs :pre
-
-lmp.create_atoms(n,ids,types,x,v,image,shrinkexceed)   # create N atoms with IDs, types, x, v, and image flags :pre
-
-:line
-
-The lines
-
-from lammps import lammps
-lmp = lammps() :pre
-
-create an instance of LAMMPS, wrapped in a Python class by the lammps
-Python module, and return an instance of the Python class as lmp.  It
-is used to make all subsequent calls to the LAMMPS library.
-
-Additional arguments to lammps() can be used to tell Python the name
-of the shared library to load or to pass arguments to the LAMMPS
-instance, the same as if LAMMPS were launched from a command-line
-prompt.
-
-If the ptr argument is set like this:
-
-lmp = lammps(ptr=lmpptr) :pre
-
-then lmpptr must be an argument passed to Python via the LAMMPS
-"python"_python.html command, when it is used to define a Python
-function that is invoked by the LAMMPS input script.  This mode of
-using Python with LAMMPS is described above in 11.2.  The variable
-lmpptr refers to the instance of LAMMPS that called the embedded
-Python interpreter.  Using it as an argument to lammps() allows the
-returned Python class instance "lmp" to make calls to that instance of
-LAMMPS.  See the "python"_python.html command doc page for examples
-using this syntax.
-
-Note that you can create multiple LAMMPS objects in your Python
-script, and coordinate and run multiple simulations, e.g.
-
-from lammps import lammps
-lmp1 = lammps()
-lmp2 = lammps()
-lmp1.file("in.file1")
-lmp2.file("in.file2") :pre
-
-The file(), command(), commands_list(), commands_string() methods
-allow an input script, a single command, or multiple commands to be
-invoked.
-
-The extract_setting(), extract_global(), extract_box(),
-extract_atom(), extract_compute(), extract_fix(), and
-extract_variable() methods return values or pointers to data
-structures internal to LAMMPS.
-
-For extract_global() see the src/library.cpp file for the list of
-valid names.  New names could easily be added.  A double or integer is
-returned.  You need to specify the appropriate data type via the type
-argument.
-
-For extract_atom(), a pointer to internal LAMMPS atom-based data is
-returned, which you can use via normal Python subscripting.  See the
-extract() method in the src/atom.cpp file for a list of valid names.
-Again, new names could easily be added if the property you want is not
-listed.  A pointer to a vector of doubles or integers, or a pointer to
-an array of doubles (double **) or integers (int **) is returned.  You
-need to specify the appropriate data type via the type argument.
-
-For extract_compute() and extract_fix(), the global, per-atom, or
-local data calculated by the compute or fix can be accessed.  What is
-returned depends on whether the compute or fix calculates a scalar or
-vector or array.  For a scalar, a single double value is returned.  If
-the compute or fix calculates a vector or array, a pointer to the
-internal LAMMPS data is returned, which you can use via normal Python
-subscripting.  The one exception is that for a fix that calculates a
-global vector or array, a single double value from the vector or array
-is returned, indexed by I (vector) or I and J (array).  I,J are
-zero-based indices.  The I,J arguments can be left out if not needed.
-See "Section 6.15"_Section_howto.html#howto_15 of the manual for a
-discussion of global, per-atom, and local data, and of scalar, vector,
-and array data types.  See the doc pages for individual
-"computes"_compute.html and "fixes"_fix.html for a description of what
-they calculate and store.
-
-For extract_variable(), an "equal-style or atom-style
-variable"_variable.html is evaluated and its result returned.
-
-For equal-style variables a single double value is returned and the
-group argument is ignored.  For atom-style variables, a vector of
-doubles is returned, one value per atom, which you can use via normal
-Python subscripting. The values will be zero for atoms not in the
-specified group.
-
-The get_thermo() method returns returns the current value of a thermo
-keyword as a float.
-
-The get_natoms() method returns the total number of atoms in the
-simulation, as an int.
-
-The set_variable() methosd sets an existing string-style variable to a
-new string value, so that subsequent LAMMPS commands can access the
-variable.
-
-The reset_box() emthods resets the size and shape of the simulation
-box, e.g. as part of restoring a previously extracted and saved state
-of a simulation.
-
-The gather methods collect peratom info of the requested type (atom
-coords, atom types, forces, etc) from all processors, and returns the
-same vector of values to each callling processor.  The scatter
-functions do the inverse.  They distribute a vector of peratom values,
-passed by all calling processors, to invididual atoms, which may be
-owned by different processos.
-
-Note that the data returned by the gather methods,
-e.g. gather_atoms("x"), is different from the data structure returned
-by extract_atom("x") in four ways.  (1) Gather_atoms() returns a
-vector which you index as x\[i\]; extract_atom() returns an array
-which you index as x\[i\]\[j\].  (2) Gather_atoms() orders the atoms
-by atom ID while extract_atom() does not.  (3) Gather_atoms() returns
-a list of all atoms in the simulation; extract_atoms() returns just
-the atoms local to each processor.  (4) Finally, the gather_atoms()
-data structure is a copy of the atom coords stored internally in
-LAMMPS, whereas extract_atom() returns an array that effectively
-points directly to the internal data.  This means you can change
-values inside LAMMPS from Python by assigning a new values to the
-extract_atom() array.  To do this with the gather_atoms() vector, you
-need to change values in the vector, then invoke the scatter_atoms()
-method.
-
-For the scatter methods, the array of coordinates passed to must be a
-ctypes vector of ints or doubles, allocated and initialized something
-like this:
-
-from ctypes import *
-natoms = lmp.get_natoms()
-n3 = 3*natoms
-x = (n3*c_double)()
-x\[0\] = x coord of atom with ID 1
-x\[1\] = y coord of atom with ID 1
-x\[2\] = z coord of atom with ID 1
-x\[3\] = x coord of atom with ID 2
-...
-x\[n3-1\] = z coord of atom with ID natoms
-lmp.scatter_atoms("x",1,3,x) :pre
-
-Alternatively, you can just change values in the vector returned by
-the gather methods, since they are also ctypes vectors.
-
-:line
-
-As noted above, these Python class methods correspond one-to-one with
-the functions in the LAMMPS library interface in src/library.cpp and
-library.h.  This means you can extend the Python wrapper via the
-following steps:
-
-Add a new interface function to src/library.cpp and
-src/library.h. :ulb,l
-
-Rebuild LAMMPS as a shared library. :l
-
-Add a wrapper method to python/lammps.py for this interface
-function. :l
-
-You should now be able to invoke the new interface function from a
-Python script.  Isn't ctypes amazing? :l
-:ule
-
-:line
-:line
-
-11.8 Example Python scripts that use LAMMPS :link(py_8),h4
-
-These are the Python scripts included as demos in the python/examples
-directory of the LAMMPS distribution, to illustrate the kinds of
-things that are possible when Python wraps LAMMPS.  If you create your
-own scripts, send them to us and we can include them in the LAMMPS
-distribution.
-
-trivial.py, read/run a LAMMPS input script thru Python,
-demo.py, invoke various LAMMPS library interface routines,
-simple.py, run in parallel, similar to examples/COUPLE/simple/simple.cpp,
-split.py, same as simple.py but running in parallel on a subset of procs,
-gui.py, GUI go/stop/temperature-slider to control LAMMPS,
-plot.py, real-time temperature plot with GnuPlot via Pizza.py,
-viz_tool.py, real-time viz via some viz package,
-vizplotgui_tool.py, combination of viz_tool.py and plot.py and gui.py :tb(c=2)
-
-:line
-
-For the viz_tool.py and vizplotgui_tool.py commands, replace "tool"
-with "gl" or "atomeye" or "pymol" or "vmd", depending on what
-visualization package you have installed.
-
-Note that for GL, you need to be able to run the Pizza.py GL tool,
-which is included in the pizza sub-directory.  See the "Pizza.py doc
-pages"_pizza for more info:
-
-:link(pizza,http://www.sandia.gov/~sjplimp/pizza.html)
-
-Note that for AtomEye, you need version 3, and there is a line in the
-scripts that specifies the path and name of the executable.  See the
-AtomEye WWW pages "here"_atomeye or "here"_atomeye3 for more details:
-
-http://mt.seas.upenn.edu/Archive/Graphics/A
-http://mt.seas.upenn.edu/Archive/Graphics/A3/A3.html :pre
-
-:link(atomeye,http://mt.seas.upenn.edu/Archive/Graphics/A)
-:link(atomeye3,http://mt.seas.upenn.edu/Archive/Graphics/A3/A3.html)
-
-The latter link is to AtomEye 3 which has the scriping
-capability needed by these Python scripts.
-
-Note that for PyMol, you need to have built and installed the
-open-source version of PyMol in your Python, so that you can import it
-from a Python script.  See the PyMol WWW pages "here"_pymolhome or
-"here"_pymolopen for more details:
-
-http://www.pymol.org
-http://sourceforge.net/scm/?type=svn&group_id=4546 :pre
-
-:link(pymolhome,http://www.pymol.org)
-:link(pymolopen,http://sourceforge.net/scm/?type=svn&group_id=4546)
-
-The latter link is to the open-source version.
-
-Note that for VMD, you need a fairly current version (1.8.7 works for
-me) and there are some lines in the pizza/vmd.py script for 4 PIZZA
-variables that have to match the VMD installation on your system.
-
-:line
-
-See the python/README file for instructions on how to run them and the
-source code for individual scripts for comments about what they do.
-
-Here are screenshots of the vizplotgui_tool.py script in action for
-different visualization package options.  Click to see larger images:
-
-:image(JPG/screenshot_gl_small.jpg,JPG/screenshot_gl.jpg)
-:image(JPG/screenshot_atomeye_small.jpg,JPG/screenshot_atomeye.jpg)
-:image(JPG/screenshot_pymol_small.jpg,JPG/screenshot_pymol.jpg)
-:image(JPG/screenshot_vmd_small.jpg,JPG/screenshot_vmd.jpg)
-
-11.9 PyLammps interface :link(py_9),h4
-
-Please see the "PyLammps Tutorial"_tutorial_pylammps.html.
diff --git a/doc/src/Section_start.txt b/doc/src/Section_start.txt
index 7d456171dc..d8f340b179 100644
--- a/doc/src/Section_start.txt
+++ b/doc/src/Section_start.txt
@@ -1,4 +1,6 @@
-"Previous Section"_Section_intro.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_commands.html :c
+"Previous Section"_Section_intro.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Section_commands.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -930,8 +932,8 @@ Makefile.opt :ul
 LAMMPS can be built as either a static or shared library, which can
 then be called from another application or a scripting language.  See
 "this section"_Section_howto.html#howto_10 for more info on coupling
-LAMMPS to other codes.  See "this section"_Section_python.html for
-more info on wrapping and running LAMMPS from Python.
+LAMMPS to other codes.  See the "Python"_Python.html doc page for more
+info on wrapping and running LAMMPS from Python.
 
 Static library :h4
 
@@ -955,15 +957,15 @@ dynamically loaded, e.g. from Python, type
 make foo mode=shlib :pre
 
 where foo is the machine name.  This kind of library is required when
-wrapping LAMMPS with Python; see "Section 11"_Section_python.html
-for details.  This will use the SHFLAGS and SHLIBFLAGS settings in
+wrapping LAMMPS with Python; see the "Python"_Python.html doc page for
+details.  This will use the SHFLAGS and SHLIBFLAGS settings in
 src/MAKE/Makefile.foo and perform the build in the directory
 Obj_shared_foo.  This is so that each file can be compiled with the
 -fPIC flag which is required for inclusion in a shared library.  The
 build will create the file liblammps_foo.so which another application
-can link to dynamically.  It will also create a soft link liblammps.so,
-which will point to the most recently built shared library.  This is
-the file the Python wrapper loads by default.
+can link to dynamically.  It will also create a soft link
+liblammps.so, which will point to the most recently built shared
+library.  This is the file the Python wrapper loads by default.
 
 Note that for a shared library to be usable by a calling program, all
 the auxiliary libraries it depends on must also exist as shared
@@ -1035,10 +1037,10 @@ src/library.cpp and src/library.h.
 See the sample codes in examples/COUPLE/simple for examples of C++ and
 C and Fortran codes that invoke LAMMPS thru its library interface.
 There are other examples as well in the COUPLE directory which are
-discussed in "Section 6.10"_Section_howto.html#howto_10 of the
-manual.  See "Section 11"_Section_python.html of the manual for a
-description of the Python wrapper provided with LAMMPS that operates
-through the LAMMPS library interface.
+discussed in "Section 6.10"_Section_howto.html#howto_10 of the manual.
+See the "Python"_Python.html doc page for a description of the Python
+wrapper provided with LAMMPS that operates through the LAMMPS library
+interface.
 
 The files src/library.cpp and library.h define the C-style API for
 using LAMMPS as a library.  See "Section
@@ -1177,7 +1179,7 @@ than your working directory, which is probably not what you want.
 
 If LAMMPS encounters errors in the input script or while running a
 simulation it will print an ERROR message and stop or a WARNING
-message and continue.  See "Section 12"_Section_errors.html for a
+message and continue.  See the "Errors"_Errors.html doc page for a
 discussion of the various kinds of errors LAMMPS can or can't detect,
 a list of all ERROR and WARNING messages, and what to do about them.
 
diff --git a/doc/src/Tools.txt b/doc/src/Tools.txt
index 60b92f0f2e..4c5fbbd453 100644
--- a/doc/src/Tools.txt
+++ b/doc/src/Tools.txt
@@ -2,12 +2,6 @@
 Documentation"_ld - "LAMMPS Commands"_lc - "Next
 Section"_Modify.html :c
 
-<!-- future sequence of sections:
-"Previous Section"_Python.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Modify.html :c
--->
-
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
 :link(lc,Section_commands.html#comm)
diff --git a/doc/src/fix_external.txt b/doc/src/fix_external.txt
index b28d33446f..30e34b4858 100644
--- a/doc/src/fix_external.txt
+++ b/doc/src/fix_external.txt
@@ -34,8 +34,7 @@ This fix allows external programs that are running LAMMPS through its
 "library interface"_Section_howto.html#howto_19 to modify certain
 LAMMPS properties on specific timesteps, similar to the way other
 fixes do.  The external driver can be a "C/C++ or Fortran
-program"_Section_howto.html#howto_19 or a "Python
-script"_Section_python.html.
+program"_Section_howto.html#howto_19 or a "Python script"_Python.html.
 
 :line
 
diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index ff8fe68ff1..4924ec8027 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -31,9 +31,22 @@ Modify_region.html
 Modify_body.html
 Modify_thermo.html
 Modify_variable.html
-
-Section_python.html
-Section_errors.html
+Python.html
+Python_overview.txt
+Python_run.txt
+Python_shlib.txt
+Python_install.txt
+Python_mpi.txt
+Python_test.txt
+Python_library.txt
+Python_pylammps.txt
+Python_examples.txt
+Python_call.txt
+Errors.html
+Errors_common.txt
+Errors_bugs.txt
+Errors_messages.txt
+Errors_warnings.txt
 Section_history.html
 
 lammps_tutorials.html
diff --git a/doc/src/python.txt b/doc/src/python.txt
index 1ac2b48528..d670fcc77f 100644
--- a/doc/src/python.txt
+++ b/doc/src/python.txt
@@ -99,10 +99,9 @@ They can be substituted for directly in an input script.  Or they can
 be passed to various commands as arguments, so that the variable is
 evaluated during a simulation run.
 
-A broader overview of how Python can be used with LAMMPS is
-given in "Section 11"_Section_python.html.  There is an
-examples/python directory which illustrates use of the python
-command.
+A broader overview of how Python can be used with LAMMPS is given on
+the "Python"_Python.html doc page.  There is an examples/python
+directory which illustrates use of the python command.
 
 :line
 
@@ -331,9 +330,9 @@ to the screen and log file.  Note that since the LAMMPS print command
 itself takes a string in quotes as its argument, the Python string
 must be delimited with a different style of quotes.
 
-"Section 11.7"_Section_python.html#py_7 describes the syntax for how
-Python wraps the various functions included in the LAMMPS library
-interface.
+The "Pytnon library"_Python_library.html doc page describes the syntax
+for how Python wraps the various functions included in the LAMMPS
+library interface.
 
 A more interesting example is in the examples/python/in.python script
 which loads and runs the following function from examples/python/funcs.py:
@@ -484,15 +483,16 @@ building LAMMPS.  LAMMPS must also be built as a shared library and
 your Python function must be able to to load the Python module in
 python/lammps.py that wraps the LAMMPS library interface.  These are
 the same steps required to use Python by itself to wrap LAMMPS.
-Details on these steps are explained in "Section
-python"_Section_python.html.  Note that it is important that the
-stand-alone LAMMPS executable and the LAMMPS shared library be
-consistent (built from the same source code files) in order for this
-to work.  If the two have been built at different times using
-different source files, problems may occur.
+Details on these steps are explained on the "Python"_Python.html doc
+page.  Note that it is important that the stand-alone LAMMPS
+executable and the LAMMPS shared library be consistent (built from the
+same source code files) in order for this to work.  If the two have
+been built at different times using different source files, problems
+may occur.
 
 [Related commands:]
 
-"shell"_shell.html, "variable"_variable.html, "fix python/invoke"_fix_python_invoke.html
+"shell"_shell.html, "variable"_variable.html, "fix
+python/invoke"_fix_python_invoke.html
 
 [Default:] none
diff --git a/doc/src/read_dump.txt b/doc/src/read_dump.txt
index 23f6274582..21c6df5017 100644
--- a/doc/src/read_dump.txt
+++ b/doc/src/read_dump.txt
@@ -282,11 +282,11 @@ conditions are applied to remap an atom back into the simulation box.
 
 NOTE: If you get a warning about inconsistent image flags after
 reading in a dump snapshot, it means one or more pairs of bonded atoms
-now have inconsistent image flags.  As discussed in "Section
-errors"_Section_errors.html this may or may not cause problems for
-subsequent simulations, One way this can happen is if you read image
-flag fields from the dump file but do not also use the dump file box
-parameters.
+now have inconsistent image flags.  As discussed on the "Errors
+common"_Errors_common.html doc page this may or may not cause problems
+for subsequent simulations.  One way this can happen is if you read
+image flag fields from the dump file but do not also use the dump file
+box parameters.
 
 LAMMPS knows how to compute unscaled and remapped coordinates for the
 snapshot column labels discussed above, e.g. {x}, {xs}, {xu}, {xsu}.
diff --git a/doc/src/read_restart.txt b/doc/src/read_restart.txt
index a5a2bfcc97..6f6a828229 100644
--- a/doc/src/read_restart.txt
+++ b/doc/src/read_restart.txt
@@ -76,8 +76,7 @@ different than if the run had continued.  These pair styles include
 
 If a restarted run is immediately different than the run which
 produced the restart file, it could be a LAMMPS bug, so consider
-"reporting it"_Section_errors.html#err_2 if you think the behavior is
-wrong.
+"reporting it"_Errors_bugs.html if you think the behavior is a bug.
 
 Because restart files are binary, they may not be portable to other
 machines.  In this case, you can use the "-restart command-line
diff --git a/src/pair.cpp b/src/pair.cpp
index 9bb1ad212f..5c308cc7ce 100644
--- a/src/pair.cpp
+++ b/src/pair.cpp
@@ -693,17 +693,19 @@ void Pair::compute_dummy(int eflag, int vflag)
 }
 
 /* ---------------------------------------------------------------------- */
+
 void Pair::read_restart(FILE *)
 {
   if (comm->me == 0)
-    error->warning(FLERR,"BUG: restartinfo=1 but no restart support in pair style");
+    error->warning(FLERR,"Pair style restartinfo set but has no restart support");
 }
 
 /* ---------------------------------------------------------------------- */
+
 void Pair::write_restart(FILE *)
 {
   if (comm->me == 0)
-    error->warning(FLERR,"BUG: restartinfo=1 but no restart support in pair style");
+    error->warning(FLERR,"Pair style restartinfo set but has no restart support");
 }
 
 /* -------------------------------------------------------------------
-- 
GitLab


From e6e026433c09be429fe2066d7016c0569564519a Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 25 Jul 2018 16:49:51 -0400
Subject: [PATCH 097/243] Fix clean-all in docs Makefile

---
 doc/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/Makefile b/doc/Makefile
index c8cc8bc1bd..c4bc80e7bd 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -49,11 +49,11 @@ help:
 
 # ------------------------------------------
 
-clean-all:
+clean-all: clean
 	rm -rf $(BUILDDIR)/* utils/txt2html/txt2html.exe
 
 clean:
-	rm -rf $(RSTDIR) html
+	rm -rf $(RSTDIR) html old epub
 	rm -rf spelling
 
 clean-spelling:
-- 
GitLab


From 353ecd2c7ac09f81528fa36a782ef271176c69b0 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 25 Jul 2018 16:56:28 -0400
Subject: [PATCH 098/243] Correct header levels

---
 doc/src/Errors.txt | 2 +-
 doc/src/Python.txt | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/Errors.txt b/doc/src/Errors.txt
index 8e10cb6ae4..7bc520c19d 100644
--- a/doc/src/Errors.txt
+++ b/doc/src/Errors.txt
@@ -8,7 +8,7 @@ Section"_Section_history.html :c
 
 :line
 
-Errors :h3
+Errors :h2
 
 These doc pages describe the errors you can encounter when using
 LAMMPS.  The common problems include conceptual issues.  The messages
diff --git a/doc/src/Python.txt b/doc/src/Python.txt
index 94a2e88f5e..169670d669 100644
--- a/doc/src/Python.txt
+++ b/doc/src/Python.txt
@@ -8,7 +8,7 @@ Section"_Errors.html :c
 
 :line
 
-Use Python with LAMMPS :h3
+Use Python with LAMMPS :h2
 
 These doc pages describe various ways that LAMMPS and Python can be
 used together.
-- 
GitLab


From 532d09bd567dbabdfe86ef459ad16e14d98922ed Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 25 Jul 2018 16:56:49 -0400
Subject: [PATCH 099/243] Correct lammps.book

---
 doc/src/lammps.book | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index 4924ec8027..4274ef48b3 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -32,21 +32,21 @@ Modify_body.html
 Modify_thermo.html
 Modify_variable.html
 Python.html
-Python_overview.txt
-Python_run.txt
-Python_shlib.txt
-Python_install.txt
-Python_mpi.txt
-Python_test.txt
-Python_library.txt
-Python_pylammps.txt
-Python_examples.txt
-Python_call.txt
+Python_overview.html
+Python_run.html
+Python_shlib.html
+Python_install.html
+Python_mpi.html
+Python_test.html
+Python_library.html
+Python_pylammps.html
+Python_examples.html
+Python_call.html
 Errors.html
-Errors_common.txt
-Errors_bugs.txt
-Errors_messages.txt
-Errors_warnings.txt
+Errors_common.html
+Errors_bugs.html
+Errors_messages.html
+Errors_warnings.html
 Section_history.html
 
 lammps_tutorials.html
-- 
GitLab


From c8b9a727e42460124cac2aeb5717c236367db16d Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Fri, 27 Jul 2018 00:35:08 -0400
Subject: [PATCH 100/243] Add potential files to CMake install target

---
 cmake/CMakeLists.txt | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 60a0f5d48f..44f871bfe3 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -900,6 +900,11 @@ if(BUILD_EXE)
   endif()
 endif()
 
+###############################################################################
+# Install potential files in data directory
+###############################################################################
+install(DIRECTORY ${LAMMPS_SOURCE_DIR}/../potentials DESTINATION ${CMAKE_INSTALL_DATADIR}/lammps)
+
 ###############################################################################
 # Testing
 #
-- 
GitLab


From 819e47b69e7bf46edd99db1ee0b67e1d4134c9b0 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Fri, 27 Jul 2018 02:29:10 -0400
Subject: [PATCH 101/243] Add output dir and verbose option to txt2rst

---
 doc/Makefile                               |  2 +-
 doc/utils/converters/lammpsdoc/txt2html.py | 12 +++++++++---
 doc/utils/converters/lammpsdoc/txt2rst.py  |  2 ++
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/doc/Makefile b/doc/Makefile
index c4bc80e7bd..81f3623499 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -157,7 +157,7 @@ $(RSTDIR)/%.rst : src/%.txt $(TXT2RST)
 	@(\
 		mkdir -p $(RSTDIR) ; \
 		. $(VENV)/bin/activate ;\
-		txt2rst $< > $@ ;\
+		txt2rst -v $< > $@ ;\
 		deactivate ;\
 	)
 
diff --git a/doc/utils/converters/lammpsdoc/txt2html.py b/doc/utils/converters/lammpsdoc/txt2html.py
index 79a75d72f6..ed9f47a4e4 100755
--- a/doc/utils/converters/lammpsdoc/txt2html.py
+++ b/doc/utils/converters/lammpsdoc/txt2html.py
@@ -662,14 +662,15 @@ class TxtConverter:
         parser = self.get_argument_parser()
         parsed_args = parser.parse_args(args)
 
-        write_to_files = len(parsed_args.files) > 1
+        write_to_files = parsed_args.output_dir or (len(parsed_args.files) > 1)
 
         for filename in parsed_args.files:
             if parsed_args.skip_files and filename in parsed_args.skip_files:
                 continue
 
             with open(filename, 'r') as f:
-                print("Converting", filename, "...", file=err)
+                if parsed_args.verbose:
+                    print("Converting", filename, "...", file=err)
                 content = f.read()
                 converter = self.create_converter(parsed_args)
 
@@ -683,7 +684,10 @@ class TxtConverter:
                     result = msg
 
                 if write_to_files:
-                    output_filename = self.get_output_filename(filename)
+                    if parsed_args.output_dir:
+                        output_filename = os.path.join(parsed_args.output_dir, os.path.basename(self.get_output_filename(filename)))
+                    else:
+                        output_filename = self.get_output_filename(filename)
                     with open(output_filename, "w+t") as outfile:
                         outfile.write(result)
                 else:
@@ -698,6 +702,8 @@ class Txt2HtmlConverter(TxtConverter):
                                                                               'HTML file. useful when set of HTML files'
                                                                               ' will be converted to PDF')
         parser.add_argument('-x', metavar='file-to-skip', dest='skip_files', action='append')
+        parser.add_argument('--verbose', '-v', dest='verbose', action='store_true')
+        parser.add_argument('--output-directory', '-o', dest='output_dir')
         parser.add_argument('--generate-title', dest='create_title', action='store_true', help='add HTML head page'
                                                                                                'title based on first '
                                                                                                'h1,h2,h3,h4... element')
diff --git a/doc/utils/converters/lammpsdoc/txt2rst.py b/doc/utils/converters/lammpsdoc/txt2rst.py
index 17d0916157..8119ad3a78 100755
--- a/doc/utils/converters/lammpsdoc/txt2rst.py
+++ b/doc/utils/converters/lammpsdoc/txt2rst.py
@@ -395,6 +395,8 @@ class Txt2RstConverter(TxtConverter):
         parser = argparse.ArgumentParser(description='converts a text file with simple formatting & markup into '
                                                      'Restructured Text for Sphinx.')
         parser.add_argument('-x', metavar='file-to-skip', dest='skip_files', action='append')
+        parser.add_argument('--verbose', '-v', dest='verbose', action='store_true')
+        parser.add_argument('--output-directory', '-o', dest='output_dir')
         parser.add_argument('files',  metavar='file', nargs='+', help='one or more files to convert')
         return parser
 
-- 
GitLab


From 9ffd262039924bb6c154de80d26dd6c47f4cb693 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Fri, 27 Jul 2018 02:46:36 -0400
Subject: [PATCH 102/243] Add CMake target for html documentation

---
 cmake/CMakeLists.txt       | 58 ++++++++++++++++++++++++++++++++++++++
 doc/utils/requirements.txt |  1 +
 2 files changed, 59 insertions(+)
 create mode 100644 doc/utils/requirements.txt

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 44f871bfe3..33462df5ef 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -9,6 +9,7 @@ set(SOVERSION 0)
 get_filename_component(LAMMPS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../src ABSOLUTE)
 get_filename_component(LAMMPS_LIB_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../lib ABSOLUTE)
 get_filename_component(LAMMPS_LIB_BINARY_DIR ${CMAKE_BINARY_DIR}/lib ABSOLUTE)
+get_filename_component(LAMMPS_DOC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../doc ABSOLUTE)
 
 
 # To avoid conflicts with the conventional Makefile build system, we build everything here
@@ -900,6 +901,63 @@ if(BUILD_EXE)
   endif()
 endif()
 
+###############################################################################
+# Build documentation
+###############################################################################
+option(BUILD_DOC "Build LAMMPS documentation" OFF)
+if(BUILD_DOC)
+  include(ProcessorCount)
+  ProcessorCount(NPROCS)
+  find_package(PythonInterp 3 REQUIRED)
+
+  set(VIRTUALENV ${PYTHON_EXECUTABLE} -m virtualenv)
+
+  file(GLOB DOC_SOURCES ${LAMMPS_DOC_DIR}/src/*.txt)
+  file(GLOB PDF_EXTRA_SOURCES ${LAMMPS_DOC_DIR}/src/lammps_commands*.txt ${LAMMPS_DOC_DIR}/src/lammps_support.txt ${LAMMPS_DOC_DIR}/src/lammps_tutorials.txt)
+  list(REMOVE_ITEM DOC_SOURCES ${PDF_EXTRA_SOURCES})
+
+  add_custom_command(
+    OUTPUT docenv
+    COMMAND ${VIRTUALENV} docenv
+  )
+  add_custom_command(
+    OUTPUT requirements.txt
+    DEPENDS docenv
+    COMMAND ${CMAKE_COMMAND} -E copy ${LAMMPS_DOC_DIR}/utils/requirements.txt requirements.txt
+    COMMAND ./docenv/bin/pip install -r requirements.txt --upgrade
+    COMMAND ./docenv/bin/pip install --upgrade ${LAMMPS_DOC_DIR}/utils/converters
+  )
+
+  set(RST_FILES "")
+  set(RST_DIR ${CMAKE_BINARY_DIR}/rst)
+  file(MAKE_DIRECTORY ${RST_DIR})
+  foreach(TXT_FILE ${DOC_SOURCES})
+    get_filename_component(FILENAME ${TXT_FILE} NAME_WE)
+    set(RST_FILE ${RST_DIR}/${FILENAME}.rst)
+    list(APPEND RST_FILES ${RST_FILE})
+    add_custom_command(
+      OUTPUT ${RST_FILE}
+      DEPENDS requirements.txt docenv ${TXT_FILE}
+      COMMAND ./docenv/bin/txt2rst -o ${RST_DIR} ${TXT_FILE}
+    )
+  endforeach()
+
+  add_custom_command(
+    OUTPUT html
+    DEPENDS ${RST_FILES}
+    COMMAND ${CMAKE_COMMAND} -E copy_directory ${LAMMPS_DOC_DIR}/src ${RST_DIR}
+    COMMAND ./docenv/bin/sphinx-build -j ${NPROCS} -b html -c ${LAMMPS_DOC_DIR}/utils/sphinx-config -d ${CMAKE_BINARY_DIR}/doctrees ${RST_DIR} html
+  )
+
+  add_custom_target(
+    doc
+    DEPENDS html
+    SOURCES ${LAMMPS_DOC_DIR}/utils/requirements.txt ${DOC_SOURCES}
+  )
+
+  install(DIRECTORY ${CMAKE_BINARY_DIR}/html DESTINATION ${CMAKE_INSTALL_DOCDIR})
+endif()
+
 ###############################################################################
 # Install potential files in data directory
 ###############################################################################
diff --git a/doc/utils/requirements.txt b/doc/utils/requirements.txt
new file mode 100644
index 0000000000..2806c16498
--- /dev/null
+++ b/doc/utils/requirements.txt
@@ -0,0 +1 @@
+Sphinx
-- 
GitLab


From 06335e77cb76aa58627e51f7776f3797a1f21dc3 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Fri, 27 Jul 2018 02:56:19 -0400
Subject: [PATCH 103/243] Ensure doc is built by default when enabled

---
 cmake/CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 33462df5ef..88efd90221 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -950,7 +950,7 @@ if(BUILD_DOC)
   )
 
   add_custom_target(
-    doc
+    doc ALL
     DEPENDS html
     SOURCES ${LAMMPS_DOC_DIR}/utils/requirements.txt ${DOC_SOURCES}
   )
-- 
GitLab


From f63e2b6eaf8d7370eaff5ea7e3bacfa10bd05a4c Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Fri, 27 Jul 2018 10:24:15 +0200
Subject: [PATCH 104/243] simplify code and guarantee that "mode" is
 initialized

---
 src/BODY/fix_wall_body_polygon.cpp | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/src/BODY/fix_wall_body_polygon.cpp b/src/BODY/fix_wall_body_polygon.cpp
index 5ec5a7cca8..0e7aaea1e1 100644
--- a/src/BODY/fix_wall_body_polygon.cpp
+++ b/src/BODY/fix_wall_body_polygon.cpp
@@ -641,18 +641,15 @@ int FixWallBodyPolygon::compute_distance_to_wall(double* x0, double rradi,
     mode = VERTEX;
     contact = 1;
   } else {
+    mode = NONE;
     if (side == XLO) {
       if (x0[0] < wall_pos) mode = VERTEX;
-      else mode = NONE;
     } else if (side == XHI) {
       if (x0[0] > wall_pos) mode = VERTEX;
-      else mode = NONE;
     } else if (side == YLO) {
       if (x0[1] < wall_pos) mode = VERTEX;
-      else mode = NONE;
     } else if (side == YHI) {
       if (x0[1] > wall_pos) mode = VERTEX;
-      else mode = NONE;
     }
   }
 
-- 
GitLab


From 8075b98fc53f1c56ac449c6fa428f34452b158d8 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Fri, 27 Jul 2018 10:24:38 +0200
Subject: [PATCH 105/243] initialize rsqinv

---
 src/BODY/pair_body_rounded_polyhedron.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/BODY/pair_body_rounded_polyhedron.cpp b/src/BODY/pair_body_rounded_polyhedron.cpp
index 2ff209d609..fa1d84a663 100644
--- a/src/BODY/pair_body_rounded_polyhedron.cpp
+++ b/src/BODY/pair_body_rounded_polyhedron.cpp
@@ -685,7 +685,7 @@ void PairBodyRoundedPolyhedron::sphere_against_edge(int ibody, int jbody,
 {
   int ni,nei,ifirst,iefirst,npi1,npi2,ibonus;
   double xi1[3],xi2[3],vti[3],h[3],fn[3],ft[3],d,t;
-  double delx,dely,delz,rij,rsqinv,R,fx,fy,fz,fpair,shift,energy;
+  double delx,dely,delz,rsq,rij,rsqinv,R,fx,fy,fz,fpair,shift,energy;
   double rradi,rradj,contact_dist;
   double vr1,vr2,vr3,vnnr,vn1,vn2,vn3,vt1,vt2,vt3;
   double *quat, *inertia;
@@ -749,7 +749,9 @@ void PairBodyRoundedPolyhedron::sphere_against_edge(int ibody, int jbody,
     delx = h[0] - x[jbody][0];
     dely = h[1] - x[jbody][1];
     delz = h[2] - x[jbody][2];
-    rij = sqrt(delx*delx + dely*dely + delz*delz);
+    rsq = delx*delx + dely*dely + delz*delz;
+    rsqinv = (rsq == 0.0) ? 0.0 : 1.0/rsq;
+    rij = sqrt(rsq);
     R = rij - contact_dist;
 
     energy = 0;
-- 
GitLab


From 2af88dcc26a32215568d168869a0d35f6aa4b9f0 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Fri, 27 Jul 2018 10:39:01 +0200
Subject: [PATCH 106/243] avoid uninitialized variables

---
 src/BODY/pair_body_rounded_polyhedron.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/BODY/pair_body_rounded_polyhedron.cpp b/src/BODY/pair_body_rounded_polyhedron.cpp
index fa1d84a663..051be762e5 100644
--- a/src/BODY/pair_body_rounded_polyhedron.cpp
+++ b/src/BODY/pair_body_rounded_polyhedron.cpp
@@ -2079,6 +2079,7 @@ void PairBodyRoundedPolyhedron::distance_bt_edges(const double* x1,
 
     double s1,s2,x13[3],x23[3],x13h[3];
     double t13,t23,t31,t41,x31[3],x41[3];
+    t13=t23=t31=t41=0.0;
     
     MathExtra::sub3(x1,x3,x13); // x13 = x1 - x3
     MathExtra::sub3(x2,x3,x23); // x23 = x2 - x3
-- 
GitLab


From 28993d98237b2b10b5f894de1557b4a24b2744c8 Mon Sep 17 00:00:00 2001
From: julient31 <julien.tranchida1@gmail.com>
Date: Thu, 26 Jul 2018 08:36:30 -0600
Subject: [PATCH 107/243] Commit JT 072618 - improvements documentation (dmi
 and exchange) - correction error cross product in pair_spin_dmi.cpp -
 implementation mech. part in pair_spin_dmi.cpp - correction in all pairs:
 init_one for [j][i] couples - correction in atom_vec_spin.cpp: index error in
 read_data - some improvements in pair_spin_dmi.cpp and pair_spin_magelec.cpp

---
 doc/src/Eqs/pair_spin_dmi_forces.jpg          | Bin 0 -> 13431 bytes
 doc/src/Eqs/pair_spin_dmi_forces.tex          |  14 +++
 doc/src/Eqs/pair_spin_dmi_interaction.jpg     | Bin 6316 -> 7891 bytes
 doc/src/Eqs/pair_spin_dmi_interaction.tex     |   2 +-
 doc/src/Eqs/pair_spin_exchange_forces.jpg     | Bin 13720 -> 13255 bytes
 doc/src/Eqs/pair_spin_exchange_forces.tex     |  10 +-
 .../Eqs/pair_spin_exchange_interaction.jpg    | Bin 6661 -> 5940 bytes
 .../Eqs/pair_spin_exchange_interaction.tex    |   2 +-
 doc/src/pair_spin_dmi.txt                     |  41 +++++--
 doc/src/pair_spin_exchange.txt                |  28 ++++-
 examples/SPIN/bfo/in.spin.bfo                 |  11 +-
 examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp   |  10 +-
 src/SPIN/atom_vec_spin.cpp                    |   6 +-
 src/SPIN/compute_spin.cpp                     |  20 +--
 src/SPIN/pair_spin_dmi.cpp                    | 116 ++++++++++++------
 src/SPIN/pair_spin_dmi.h                      |  15 +--
 src/SPIN/pair_spin_exchange.cpp               |  52 ++++----
 src/SPIN/pair_spin_magelec.cpp                |  88 +++++++------
 src/SPIN/pair_spin_neel.cpp                   |  12 +-
 src/SPIN/pair_spin_neel.h                     |   4 +-
 20 files changed, 273 insertions(+), 158 deletions(-)
 create mode 100644 doc/src/Eqs/pair_spin_dmi_forces.jpg
 create mode 100644 doc/src/Eqs/pair_spin_dmi_forces.tex

diff --git a/doc/src/Eqs/pair_spin_dmi_forces.jpg b/doc/src/Eqs/pair_spin_dmi_forces.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..fba6a91cbf6fdb6ee6736073a114d08c907d6d3c
GIT binary patch
literal 13431
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
Hvig4jn{I9c

literal 0
HcmV?d00001

diff --git a/doc/src/Eqs/pair_spin_dmi_forces.tex b/doc/src/Eqs/pair_spin_dmi_forces.tex
new file mode 100644
index 0000000000..1c0c246db4
--- /dev/null
+++ b/doc/src/Eqs/pair_spin_dmi_forces.tex
@@ -0,0 +1,14 @@
+\documentclass[preview]{standalone}
+\usepackage{varwidth}
+\usepackage[utf8x]{inputenc}
+\usepackage{amsmath,amssymb,amsthm,bm}
+\begin{document}
+\begin{varwidth}{50in}
+  \begin{equation}
+    \vec{\omega}_i = -\frac{1}{\hbar} \sum_{j}^{Neighb} \vec{s}_{j}\times \left(\vec{e}_{ij}\times \vec{D} \right) 
+    ~~{\rm and}~~
+    \vec{F}_i = -\sum_{j}^{Neighb} \frac{1}{r_{ij}} \vec{D} \times \left( \vec{s}_{i}\times \vec{s}_{j} \right) 
+    , \nonumber
+  \end{equation}
+\end{varwidth}
+\end{document}
diff --git a/doc/src/Eqs/pair_spin_dmi_interaction.jpg b/doc/src/Eqs/pair_spin_dmi_interaction.jpg
index 1d15b2199add75eefecb424f75ea2dbd363a1afe..3eb24c67e3b26f97c362fd05982ead5fb0f5c150 100644
GIT binary patch
literal 7891
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
WVWS<Mh8dY1&#d48z{`-E`Tqe^ww2ca

literal 6316
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
E0bZ-WQ2+n{

diff --git a/doc/src/Eqs/pair_spin_dmi_interaction.tex b/doc/src/Eqs/pair_spin_dmi_interaction.tex
index 5a5a776f03..79f63a333a 100644
--- a/doc/src/Eqs/pair_spin_dmi_interaction.tex
+++ b/doc/src/Eqs/pair_spin_dmi_interaction.tex
@@ -5,7 +5,7 @@
 \begin{document}
 \begin{varwidth}{50in}
   \begin{equation}
-    \bm{H}_{dm} = -\sum_{{ i,j}=1,i\neq j}^{N} 
+    \bm{H}_{dm} = \sum_{{ i,j}=1,i\neq j}^{N} 
     \left( \vec{e}_{ij} \times \vec{D} \right)
     \cdot\left(\vec{s}_{i}\times \vec{s}_{j}\right), 
     \nonumber
diff --git a/doc/src/Eqs/pair_spin_exchange_forces.jpg b/doc/src/Eqs/pair_spin_exchange_forces.jpg
index 2b0469bf4db84885fd8b81679cdd9571ba9e3574..b312a9ccdaaf44b7647f2c444c7d79a740cea88c 100644
GIT binary patch
literal 13255
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

literal 13720
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
YAN#n!=#A%hftx-OcW#2Ko`=Q%0oGV3X8-^I

diff --git a/doc/src/Eqs/pair_spin_exchange_forces.tex b/doc/src/Eqs/pair_spin_exchange_forces.tex
index 088696d5ef..ac5ef682f3 100644
--- a/doc/src/Eqs/pair_spin_exchange_forces.tex
+++ b/doc/src/Eqs/pair_spin_exchange_forces.tex
@@ -5,10 +5,12 @@
 \begin{document}
 \begin{varwidth}{50in}
   \begin{equation}
-    \vec{F}^{i} = \sum_{j}^{Neighbor} \frac{\partial {J} \left(r_{ij} \right)}{
-    \partial r_{ij}} \left( \vec{s}_{i}\cdot \vec{s}_{j} \right) \vec{r}_{ij}  
-    ~~{\rm and}~~ \vec{\omega}^{i} = \frac{1}{\hbar} \sum_{j}^{Neighbor} {J} 
-    \left(r_{ij} \right)\,\vec{s}_{j} \nonumber
+    \vec{\omega}_{i} = \frac{1}{\hbar} \sum_{j}^{Neighb} {J} 
+    \left(r_{ij} \right)\,\vec{s}_{j} 
+    ~~{\rm and}~~ 
+    \vec{F}_{i} = \sum_{j}^{Neighb} \frac{\partial {J} \left(r_{ij} \right)}{
+    \partial r_{ij}} \left( \vec{s}_{i}\cdot \vec{s}_{j} \right) \vec{e}_{ij}  
+    \nonumber
   \end{equation}
 \end{varwidth}
 \end{document}
diff --git a/doc/src/Eqs/pair_spin_exchange_interaction.jpg b/doc/src/Eqs/pair_spin_exchange_interaction.jpg
index d51524d27ca413ec4ded189107c2219b061f7d7e..c70d8a6554003e37472d648c1944a13ee9d3f859 100644
GIT binary patch
literal 5940
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

literal 6661
zcmb7o1yodB+xD5Dh8kdI2#EoP6eLwdV(1bWT0)5jP!uEt1O**B1cZ^2mH~vJL8ZG9
zrID0ILZmE0`0xpz_xsns-hci3>~+q4Uw5p%*4}6D``RbtCvyN?TU|>X0D(Y2_vr(i
zOaUqY1PuPwPaE{KlTnh9L7`+Y3JP*c8W;@?HH?~?mW~llOUFP*O$|rE8JG}AB$9@n
znFWPlVMHJizmk9;r!i16Dl#%E1T8f!;{Usyv;qv2z%@`g1jGP<89)#Q&`CSM4uAkK
z<kxV2H!^Yvlmblo%Zm6<{4a--Nq`1&8Uu&G0RVK6^E(WnQI&{I`B(id!C%PBf@FTH
z{|ab*`|*FZ-_ri-8o4sM-3#|O0yS@mAQDjn|2QBa5t+I{svm%54NWxlrFd|e{uw^c
z(sW9&9FckN=E^b+G4nb=V=p8J0ATSTsYE<%KTD5*Wfy#vE(p-cc{63i<;GS(Zf0>n
z7j76}!U;al*_KzQWuE(AvK`WrEOE{Zc2aOcN*=2uze}TRr5P8Q0|1K4=YsJ7F+*oi
z=^}MpKfT(^2$2xVZEM|F<EVC_0W8$F<R(GACYI$&uzQX!Q}eIU-d&WCQ$wnh;6a>s
zSYi8gS9@@j!)|>bc5LGIFZ*9j2x>!Cl=+YL`wL=sluuEwL7Pzf=4s=9!+#5cn4V8T
z(h*?xDz1>^|I-MZ4`=k5;EiA`GjIOeb~>5DZ~zPjgTQ1^Fyt>3N(LbZfdM!Z1p<l2
zp_s+742;~oe5X@Pc{=eRGVsp{`%U#{bFLv)lPKSP4arSds|1HaA3^@5*>2RRL!y-c
z>nfL!TYYU|(_@qnans!A`W*u&{YpuD*A1!n{sG%NbyKc#dVZ}hMLoS4LJm=+X;cE|
znF#^hBdx#~57}AzOIT$U^tP<zl{ohMZCqwE^X)9*eP=@NSNZuheP|omIzQo_D)55(
z!|wDBLsFhmy=-YETd^Da>-VMhsW&tSFSK=7<9|F(ROH`_g)N%brYwT=zw*~ZXXTl#
znVhCBGPfOyBu1V9uUk$4!^7^TiHD8axI$@dy{KLNZFANAtCdkMk>nGT#Lls+rj2GZ
z0oY;RxDOXw&;RJ(d;A!T3Nf|2>>(gf-Xvy{l(>qFX@@EgXR5eYNMp1D!t=dn?Q+VO
zhVIFK3g#<S%Sl+M|J3)%q%z`Wkg152ZrSTt2@lV?@uyebmT}NqoRv9_)9pSB3r*dw
zRq)QkLt$;-#EsRRofvc>caWuonnr!8yVbEn{62GmUCslWrsoRJ&FJ30CWWyOvRy@4
zbtl#<%uaF=p!Rel1>Fuyfr~E>smYnj*LXG&US&KVyn^CHA|Q!8#*yYmf`~wJbrxIA
zG%Zy-u^%P5(^StjF>DVlb)Uj^6ODVoUzgL)Ek%jqrpn#@H|1Ey={YZqDcD+}-LN{B
zCh#_E_tP55WmV{cI!1$YlzBS#9J)T2=khsQPesluOq=e1Td3-w#40g&b2_7A_%Du_
zcSpIPv}WPEU)n2D<j$a07|r{xsB~87{mA6-VD=b|9Uew03ZEyvcllC$t$NqRv20T?
zrC8l3_OgJQ(}vD2scC1grGO1-jUT!ZWGFq4?zEZ~ZUW^Tm;Ty=82)2#`g7gJ{<%O;
zH!VdFpW=V<0RQ$-KVAADFqoW-oQfLy=i&!}Ay5W@k&KC3LdgKZW9uFONApU?Jx89$
z;tcHw<%8rHaVcdLkHDw#Ez%Xk^Qzg~fBzQbis1d*^3RG})ZVdWN9x+&nqXU3qNrmG
zH?=KvE-s3A>MGhKJ96u7u5Dq|PsjDr`Y08gJnHd~Ao^+iUGzE^LnWLUMNles?@3-!
z*xM^o%rG{h99OvNaW$^?yHOai@XB^M#klJp$w*q-iI`U&nY-Y9Vex_Zq<DpfW%f0e
zYgdi5>=X;0e7%46&`EKrW9|ovxW1I2e^_o#{4&ahTcgCrF^Xe7XZ%+VAD#eD-w+D&
z!&zT-lRB_ls1B>IvZk7ASza(k%G#rr_3sbd^-WZAt}`cmwWBqZ{Cv?R`=}gItK6`@
zlE~*6O;lre^?I^xS#t30sH=sLLeSmzOu~WX;9DjJkn6V-AZ|I(n==utUABqht=s0b
zm%^E8A$3*P^bwaBVxNAf`aXwwMQ?m$A1f#@PA>Sx<uW3ri14m%F~a|k*=nD81F|?Z
z{2s0U`Mxhi^Fpo${Yh)b&(mshx+y}&vKcn}^lGd3GuS>&G>nH?35^BH#JucE>C@Y=
z4zFtJJL)$oZra+q?PKSFH+cC@lAkE<AmH$AcQ(9MPsJeq_W6e;cP{KYF_ZW6+%nsL
z?f<?*F8)AE2$l0J$}w5d@o*Qyc1Fcy3^tc*UeQt5OI7!1z411@ruz(Y2D;>G3Nmr&
ztm~`I10=$W!KmTe%d(9N{?DI83!VUFuKRAGF1%V8vkl?F1kAk+xwqCTMX3&ZDpU^N
z78f>of0noSUm3VMC9)Q~AEb>7lukf589m590eGq8R!y^cNpZ#H-3xM?Af*N&gAIGm
z<?s8#Vu!`-0gqDDo2Dh?w)=K^R<m;$YA7uFUuHZI-Rj^lYn4ohwzOuZN{%_sXAecu
zT7^k6k2$Q<z1i#Zw<3HET#mToooW;Gk{t)B;`cd1j?>rmSkgU18V`7>vA4+tPTV8Z
zyN1iEww4%hOkREc@$<*<<?fvuxCso(VT<J!QCA)ZrM)J*;?k(?#1olq;o^h5hPbc9
z5wms1r9(~cNzvE<8CAaX{*WGKWoACy%nXw<_QumPWTJkTQ!OWIV0ftOT)B?+eyT&r
zK|{5+zZy$HfT>KJql-BXnDm&PiBJ^e`yuOO@$IqI+_}EGU60O~Y@$(VaeRr_t3hMO
z+tv=7{YaWmrjkKs?7KI(Ur#@63w_t8MkJOz<t9pvT$D=bxnp(DqceJtVRVBkckMiq
zl>Irot+1^~zmm;P#h_F~a##$}2hMNee61+(#bcD|W@gTcyb>e-q1%STR3r)M9ZHDA
zIB7dOactQ>#L}?l6xH?c%GQ)Q1YLsM8#Steub~Q`=8b3;s@F9*$tE3GUOE9j2pL8d
zWK`rj8S2i9`E@lzBEwCy&GXj;WmUV!?5xsLAH;v^;BbC6Pq2GBUCn^8pA|G{D*RGU
zO2A=O^X6o_ItKjHFy%O90(WiMwXQE3$~PxyJS@H@=$rsCX<_dbzlRq%5gC-=y(GCw
z7r|oboi?gyCt{LdpX(TUYxZ-;oum@`^P^a_=C>k==w5oxSw0S}pC%4chO-+5?;1ZH
z_uUMH!7MB?;sh`EKnh&B_+zzhdBrL-($=LsK>0N^2i)nqnZKAX+nZ8&tBb^K%vXQU
zF0c5zYDjT^B?3`#{EC<L1PI?$*b6gpj#3MvWBI|?`!+=ik>JI|O4Yb`+vRhsni{W0
z9NBqUp$+NKH(ZPJ!S#WrXIS4yoH?p^ufAo#)XHn&m@3TOcxX8rc`)GtOBplVU?x3R
z!*6bFcF>AxiltE9$k(5sc7xM%DmdRCt%<HALhN27^D=erJcF(k#&&l+7CW24(ibQB
zTGyOMeM4;U@;$pt+6jr`Cf6?rW0xyKp{^+RV)NQQEs?qiIX|}q#*P#RtE8IAs)i>L
z?qSbjKgKC*C4|$F&$Y!IX=x$UY&=I3-uYiwNjx$#Vrih2FrqZ&<-ay2L(J3V8oD`L
zq^*^(z&rZprT0!Jfs_u`u@rQ<?!1hn78Hn>-E39QpG^L#85L#V>*eY?tfHbTqLV{v
zP>}-4#aPdrRuXecC_<jMfLx{AMvB?x@y)JI>C7=JRFd|P^Bf^mp(RwC%yaOi%H`fE
zni6lpD$$S4zMVqnE`*v|o3q^Et%7k>HoSgS{D@Cimrv%_i+;4>O5exN4WZmaCb5yW
z`g(RT>@6|gue~SQY*>OU-iPw{ljhzwXKYEHPrrL>S~HjtRyOTz`$x1#_G8e><soHZ
zVX}(O{=`Gyg*vT~lHxq$P{C4<xZ>|q&jgnHP0W-l-yP1RH?jMfaZR~)aUr|DP3?4b
zxc_{8<hFw|5|zBv*W&u}XrW*F4N$&ukv4UQl5i(>Uu_vYap<0+-h1)hoX${Uxji32
z)sm)aTuy>kc1%=yi)YJfBJ`*c&F(<(A>O$%XO}@>8y}MSDYr{SzBQrG^qHfY?lU-j
zreU1%OKy=lm3<tlP4pW*eQLWw=cgN9F9@0~{4&W=D{W<Vtdo(>Nz|l>yDaaYEdjHU
z#pq_{+=v;mcjJRS7$*HV1Ba0kyPSi*2V#D>gj`>AgvARIow>k;=sP~<cictIu+Iyk
zu~QPVopJ~-eU4<=w;b6yDe97%9q;zqMy4<N*kv~idc~JjzCgRQeeNJTdw-|3<^*``
z`~7H+VJmTNDua*Ubc1looOSKZfuxyt{|^3%UlsZEQT&kR)%7#7FTi83`tK3U`4fG4
z6XG(`nuvV&oKFBQ{?occ2!6_gPAh5%6h!t{jRIoe22Se<Tey1w8W;B*D_-8Ry)*bv
zJ*~)n>?ETiH9USXJR~`!4c5TBN7!)`zf8$5=RdkJUfl_%R-8{x{Vai$`=EKu{5gN%
zvTd$~hDB#qJR%(WP+|Qb2V@*+=;qEbcd3#`M1#iboa1m9rXiOriTO)_Xz)Ntl+llG
zFC3cLT<FSuP4eUOhpKI=X~hFID~8>DmJ6sc+{NYokN9Cp>PGJ?gV#J<4IZY?#!aor
zesv*(NT7E~n=%Ke^IoPiDKRu1$GyQ%qLf8m0h!ur^O>xyy&L3>L4sO*WCfE*H#*D}
z34zwQBZX9X2X-@AS4z?oj)JMw{0Cke`hh=_oW>aKgpHLwMfo<;FryLj>`6?sFIHl6
z`@dPUq)ya0vvL$Nzi1BUAxq)P%(LwdWL&qRR8O-}Dp`2=C>xGQ5yNtS&s2d9QY6Ld
z&?i3(iAMjFz0c{mCD~}Za2%0IEdHud@0afQtXz`550fUfxSn-X>H0&lNkg%!KKN0C
zLv->jLD(G4u`h>XetE#$W5~ImpaJD;Pc_1Liht<vaWI{2mT>@reLEQN%*P0M47B|@
zm8$v7D&=EBcT}*UhGX1v|K-&m$#Z@V0af1&Bw}eWPwCF#h*BLP@sz;=mMwiH>vlb|
zex*e<-(8r*0tH@viEq%1#`3r*FJ&Ubx%2KRFV<%Fh{uPomcBECu;%I|kY^n9o;zEh
zH<%JHd*u(U!EpmK^HD~>@<;0Mveq`9JJPQ;jw3@oRSV<$)8uZW85Dv9U1}^ln6X84
z!6C{8?q#2h9F3Gm;8TkzJfv0JS0p3MqpIb$7iO9Gsot<Y;Y<fFKivFkLM?>x$GfNG
zCIraXNOzX}flr0U5}W>-s?w#Z)ECz{`_}8372ovkeZdRoI|)+(GwK;gL%B^&n2j+r
zad5*Qp~mGEoTpXvA-vA&z+?yGCz&aHCJFT1zt$)LHILof+u4P2n$o9DzUORun>=bc
zAwAov-FYd+JF+-9z_gRU$_n{0+xRXW#)1LKpfmBu^-{8AB>#4?3tv)5-&fiMba4?q
ztQRJ{P}43@Nnid&pS^Bz2&-+>ohQ<U7*MxQyt&!K2Ylf0fa2B<-4lvC+ut%Nrx2Ma
zi!DR)Y{@W0flrRof#U5Ddh_c06gSCft6EduJQo&1u-Y@?M{2k{Z<f=rW|!-*(KDqL
zeWKWV8Y*t<{4sXY>733TM2C$rI|EKt<7*C8n44`&OK)B0&34+Z3G1VF#i5^bcb$(H
zt;engt({*b){X@#<X_H_QNGr!)CLCxnMK@Jb8vK+^d9MOhnPr)0wHCO=}=KY<gi0p
zWLve*0kUQ|5*+N(EaUz|AsXeD@}f2ON6*FvYwJit)>ZHckj_<6Ev{4&HmH|=shAzf
z@ao~B(f}e>hYpL}ma(T36&49$s+J_12@{^9Ee+xXU*i|#&DGoBe$))>xX;q)6z%Zn
zS=vKp-rUw9Hr5H9WtoLU8_U$JGkz@FjB64~9K!dkT~{(LSZ25HH<MTOdP7JQFVakH
z{RF~yH<q_B-XB|B*9r6T@%eyiYTIGAg$%(Nyo_zA*@^kOJ%Z-2vDJ7y|8u&2zbAP5
za^{Sp+lL?(ggqBi*Ci2Iu>~h8KALk~7qbRBSSi|f`k$Av$IMY&_~Y&NeI2^TKT?#n
zRH)03FP`pme_jm%zZe#rpoRInYXbku|APNme<P=Y=Klr6gZ=@P{>{Uvgn?_J8L7}<
zN=)o&AQlr#g<;gf;IZgH0Lpk8qJ;i4+vyt$P@bBg1T6smcm7iu4cEd1{sJ+7ccp)X
z-^gh;5ET3$>R+CLTK^8?cX*)EKdJQp3nBeQS>gXr%KDcFKm6CF9Qbqur#FXx(%!!g
z7dYDBl&oTL;@fd8|DG)H<6AE*5A+NC*}0g4dl_l2gfk^Pux6rsdyjZ%%;O_hy)sSX
zr(_LcV-wzcMe;qc<$C|EnE2qk)i#j|+e;alHi!#|4wE*@ol|Cc<n;P=P%MZK>y$1-
z&DDt4QdQOK3N`kjN~`!-x~Pz}&E@B!8La(+Q4A;jC}w!PHed!uySj8QtV<!I+=tI$
zMDuQUK&#b^!w-t5nUpgAxgjkfj|dJ4g9S<NGSMvUo>EaUkJlQ(=(Vr6Y4ZiOZwjp~
zf$z_1%15c`XH{PEU(ceCh?^VPytdSRT|I1*Q_d&R!vxoSwwmH$U%Z+k;$s<^i-%{p
ze!#^gF6ECNM(*RCIXf~Os(8CNGd(J4dHkB}^QFa=Kf3(n`T|%)6`DZ{fmdws)du?o
zlR9hZJP<hVH+OOio7Zo{kW`M}TNkrzOQv-7sg}QqI1Fmy(8%7hy5^bNLk^n3$zK%P
zf;a>FZxng1>o%s`%5l7V<?5Qw{Kkam0A(XIe%I&Y!M&f`O-?aD*FCj;t|zv$&4zu&
zrZolQ%gSCoJHBk7IqY{i3G=M;eu``Tnxic~5685Qd^tpnz~O*61~c@8;jH1Ueg{~w
z5p9sggJU)?g9@j{;i=oPPi^ctWmdbrz^ZzNzPn$T$6O26+($j3Sv;Z2Q!&NY$y>8*
zgcnHl2e(M5%FAr+dS25OduPRKXM_4>>tov+ncCi-Qt8KJn%pof?UYn7zX$-$y-uNU
z=BO*EM-G@(EorUG89{>cJ_-emNx;K<9AC9XaX!YFC=FQLjr?4{tk;>CZ=#v!?>KMA
zC}qW;MjN`Gs6<WPtoDkpQq5w=oSgi5j~iS?)boKN7@+T+<0Q=?#ZC#*UGBqLZzw(u
zv_}_=5957#M78s=ooT9~3&%-W7#tl#K<#3cWSaFCvLZ(pb0BY)9!vnYqJqaW^)hxw
zbNo9L{Z4>WepJt_g7YA@DlS+{^sA(cDt#WD3Z>7o@h-hdIxkFWoHm2O0=YCrulU4|
zDu@EOZ1Ky>@2{mBrBj8y;bISsGZqHHHz~np^3)`6=ys>1sW3USi7Nhzv(7kHZliD2
zB!bosVoc#zA86U5@rCO>mEJcIAV%1ABc^2SLom4m_6@F`vvzc2u8uikiFda!AX1}+
zsf$Emfu>D8Xu)ePZgfL5Z^zq#TG-yGzLQe&ELnJ9VAvuygl%BKtD*4n77+UsAPZKX
z*AT~|69vQLfzz__<L3&VLn9zioEUjNalaXg_qgPsUBti;zcv)1QX(8h6Bj}<ky))J
zwHlM~SJbXM7UE08UltBcz3Bj1)@3I~LR{Pl*|*%+dgrc!3*EwhtiqJ+?OPwk8y(jU
zia@wz@b*&6A4i8DwE^NXJXxIA?=Fx-{H2boO-xwMxNFecc*~Q%s8ODw5zn?)H3)GJ
zv!%AZeOByY{K1p+x`JEvGl;yf$#dwN^FDOSyas`!);D~K`gTgSPUX#^@?v6jw!zq$
zN9P*-lYQS?q1r>4Um{)#U3`~tHHkr5H}h>*(*Xd-0s#Gu((6%aRyp8;fRNCmrt!~l
zlkF;vlp%sJfMrErJ*bu2-N$pVx^Os>2(qRCfBkum^&)wSVHdf4_yQI#uCD>h9?Z&f
zy+X5;;W8AK4oa60YNg{Z?FN7NU+(l9$qy2A&;}taNuasN7$?L4Aa*x*CGC4Xo;^p*
zt;m>+lr2Q5tFF@4(k(@<3=zPE^SF(BkIxTLKX_uLU%DWK6=zB$Cl!XWqsy|8N)XmS
zCKk{~)zak?py?A+FnVeBLW>{tCQ<tBMDR2meS2iVEtoxZWn2s&jqrg+&c~`Lb%5ac
T9!{y1RMlwg`+_6alZpQU?`}{A

diff --git a/doc/src/Eqs/pair_spin_exchange_interaction.tex b/doc/src/Eqs/pair_spin_exchange_interaction.tex
index 6e598f75ac..f20b3e5740 100644
--- a/doc/src/Eqs/pair_spin_exchange_interaction.tex
+++ b/doc/src/Eqs/pair_spin_exchange_interaction.tex
@@ -5,7 +5,7 @@
 \begin{document}
 \begin{varwidth}{50in}
   \begin{equation}
-    \bm{H}_{exchange} ~=~ -\sum_{i,j,i\neq j}^{N} {J} \left(r_{ij} \right)\, \vec{s}_{i}\cdot \vec{s}_{j} \nonumber
+    \bm{H}_{ex} ~=~ -\sum_{i,j,i\neq j}^{N} {J} \left(r_{ij} \right)\, \vec{s}_{i}\cdot \vec{s}_{j} \nonumber
   \end{equation}
 \end{varwidth}
 \end{document}
diff --git a/doc/src/pair_spin_dmi.txt b/doc/src/pair_spin_dmi.txt
index 24877906f3..a1d0cb2265 100644
--- a/doc/src/pair_spin_dmi.txt
+++ b/doc/src/pair_spin_dmi.txt
@@ -25,24 +25,46 @@ pair_coeff 1 2 dmi 4.0 0.00109 0.0 0.0 1.0 :pre
 [Description:]
 
 Style {spin/dmi} computes the Dzyaloshinskii-Moriya (DM) interaction
-between pairs of magnetic spins: 
+between pairs of magnetic spins. 
+According to the expression reported in "(Rohart)"_#Rohart, one has
+the following DM energy:
 
 :c,image(Eqs/pair_spin_dmi_interaction.jpg)
 
 where si and sj are two neighboring magnetic spins of two particles, 
-eij = (ri - rj)/|ri-rj| is the normalized separation vector between the 
-two particles, and D is the DM vector defining the intensity and the 
-sign of the interaction.
+eij = (ri - rj)/|ri-rj| is the unit vector between sites i and j,
+and D is the DM vector defining the intensity (in eV) and the direction 
+of the interaction.
 
-Examples and more explanations about this interaction and its parametrization are 
-reported in "(Tranchida)"_#Tranchida5.
+In "(Rohart)"_#Rohart, D is defined as the direction normal to the film oriented 
+from the high spin-orbit layer to the magnetic ultrathin film.
 
-From this DM interaction, each spin i will be submitted to a magnetic torque
-omega and its associated atom to a force F (for spin-lattice calculations only). 
+The application of a spin-lattice Poisson bracket to this energy (as described
+in "(Tranchida)"_#Tranchida5) allows to derive a magnetic torque omega, and a
+mechanical force F (for spin-lattice calculations only) for each magnetic 
+particle i: 
+
+:c,image(Eqs/pair_spin_dmi_forces.jpg)
 
 More details about the derivation of these torques/forces are reported in
 "(Tranchida)"_#Tranchida5.
 
+For the {spin/dmi} pair style, 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, and 
+set in the following order: 
+
+rc (distance units)
+|D| (energy units)
+Dx, Dy, Dz  (direction of D) :ul
+
+Note that rc is the radius cutoff of the considered DM interaction, |D| is 
+the norm of the DM vector (in eV), and Dx, Dy and Dz define its direction. 
+
+None of those coefficients is optional.  If not specified, the {spin/dmi} 
+pair style cannot be used.
+
 :line
 
 [Restrictions:]
@@ -61,6 +83,9 @@ See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 :line
 
+:link(Rohart)
+[(Rohart)] Rohart and Thiaville,
+Physical Review B, 88(18), 184422. (2013).
 :link(Tranchida5)
 [(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
 Journal of Computational Physics, (2018).
diff --git a/doc/src/pair_spin_exchange.txt b/doc/src/pair_spin_exchange.txt
index ad3357cb5e..a4f37a98eb 100644
--- a/doc/src/pair_spin_exchange.txt
+++ b/doc/src/pair_spin_exchange.txt
@@ -32,18 +32,15 @@ pairs of magnetic spins:
 where si and sj are two neighboring magnetic spins of two particles, 
 rij = ri - rj is the inter-atomic distance between the two particles,
 and J(rij) is a function defining the intensity and the sign of the exchange 
-interaction.
-
-This function is defined as:
+interaction for different neighboring shells. This function is defined as:
 
 :c,image(Eqs/pair_spin_exchange_function.jpg)
 
 where a, b and d are the three constant coefficients defined in the associated
-"pair_coeff" command.
+"pair_coeff" command (see below for more explanations).
 
 The coefficients a, b, and d need to be fitted so that the function above matches with
 the value of the exchange interaction for the N neighbor shells taken into account.
-
 Examples and more explanations about this function and its parametrization are reported
 in "(Tranchida)"_#Tranchida3.
 
@@ -54,11 +51,30 @@ such as:
 
 :c,image(Eqs/pair_spin_exchange_forces.jpg)
 
-with h the Planck constant (in metal units).
+with h the Planck constant (in metal units), and eij = (ri - rj)/|ri-rj| the unit 
+vector between sites i and j.
 
 More details about the derivation of these torques/forces are reported in
 "(Tranchida)"_#Tranchida3.
 
+For the {spin/exchange} pair style, 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, and 
+set in the following order: 
+
+rc (distance units)
+a  (energy units)
+b  (adim parameter) 
+d  (distance units) :ul
+
+Note that rc is the radius cutoff of the considered exchange interaction,
+and a, b and d are the three coefficients performing the parametrization
+of the function J(rij) defined above.
+
+None of those coefficients is optional. If not specified, the 
+{spin/exchange} pair style cannot be used.
+
 :line
 
 [Restrictions:]
diff --git a/examples/SPIN/bfo/in.spin.bfo b/examples/SPIN/bfo/in.spin.bfo
index 2442b12b72..de23ba87ba 100644
--- a/examples/SPIN/bfo/in.spin.bfo
+++ b/examples/SPIN/bfo/in.spin.bfo
@@ -21,9 +21,11 @@ mass		1 1.0
 
 set 		group all spin/random 11 2.50
 
-pair_style 	hybrid/overlay spin/exchange 6.0 spin/magelec 4.5
+#pair_style 	hybrid/overlay spin/exchange 6.0 spin/magelec 4.5
+pair_style 	hybrid/overlay spin/exchange 6.0 spin/magelec 4.5 spin/dmi 4.5
 pair_coeff 	* * spin/exchange exchange 6.0 -0.01575 0.0 1.965
 pair_coeff 	* * spin/magelec magelec 4.5 0.000109 1.0 1.0 1.0
+pair_coeff 	* * spin/dmi dmi 4.5 0.00005 1.0 1.0 1.0
 
 neighbor 	0.1 bin
 neigh_modify 	every 10 check yes delay 20
@@ -44,10 +46,11 @@ variable 	magnorm	 equal c_out_mag[4]
 variable 	emag	 equal c_out_mag[5]
 variable 	tmag	 equal c_out_mag[6]
 
-thermo_style    custom step time v_magnorm v_emag temp etotal
-thermo          50
+#thermo_style    custom step time v_magnorm v_emag temp etotal
+thermo_style    custom step time v_magnorm pe ke v_emag temp etotal
+thermo          10
 
 compute outsp all property/atom spx spy spz sp fmx fmy fmz
 dump 100 all custom 1 dump_bfo.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3]
 
-run 		5000
+run 		2000
diff --git a/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp b/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp
index 4a42ec419a..35aa1df86c 100644
--- a/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp
+++ b/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp
@@ -19,8 +19,8 @@ create_atoms 	1 box
 
 mass		1 58.93
 
-#set 		group all spin/random 31 1.72
-set 		group all spin 1.72 0.0 0.0 1.0 
+set 		group all spin/random 31 1.72
+#set 		group all spin 1.72 0.0 0.0 1.0 
 velocity 	all create 100 4928459 rot yes dist gaussian
 
 #pair_style 	hybrid/overlay eam/alloy spin/exchange 4.0 spin/neel 4.0
@@ -29,11 +29,11 @@ pair_coeff 	* * eam/alloy Co_PurjaPun_2012.eam.alloy Co
 pair_coeff 	* * spin/exchange exchange 4.0 0.3593 1.135028015e-05 1.064568567
 #pair_coeff 	* * spin/neel neel 4.0 0.0048 0.234 1.168 2.6905 0.705 0.652  
 
-
 neighbor 	0.1 bin
 neigh_modify 	every 10 check yes delay 20
 
-fix 		1 all precession/spin zeeman 1.0 0.0 0.0 1.0
+#fix 		1 all precession/spin zeeman 1.0 0.0 0.0 1.0
+fix 		1 all precession/spin zeeman 0.0 0.0 0.0 1.0
 fix 		2 all langevin/spin 0.0 0.0 21
 fix 		3 all nve/spin lattice yes
 
@@ -56,4 +56,4 @@ thermo          10
 compute 	outsp all property/atom spx spy spz sp fmx fmy fmz
 dump 		100 all custom 1 dump_cobalt_hcp.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3]
 
-run 		2000
+run 		20000
diff --git a/src/SPIN/atom_vec_spin.cpp b/src/SPIN/atom_vec_spin.cpp
index 8b47eff624..6460a6185f 100644
--- a/src/SPIN/atom_vec_spin.cpp
+++ b/src/SPIN/atom_vec_spin.cpp
@@ -816,9 +816,9 @@ void AtomVecSpin::data_atom(double *coord, imageint imagetmp, char **values)
   x[nlocal][2] = coord[2];
 
   sp[nlocal][3] = atof(values[2]);
-  sp[nlocal][0] = atof(values[5]);
-  sp[nlocal][1] = atof(values[6]);
-  sp[nlocal][2] = atof(values[7]);
+  sp[nlocal][0] = atof(values[6]);
+  sp[nlocal][1] = atof(values[7]);
+  sp[nlocal][2] = atof(values[8]);
   double inorm = 1.0/sqrt(sp[nlocal][0]*sp[nlocal][0] +
                           sp[nlocal][1]*sp[nlocal][1] +
                           sp[nlocal][2]*sp[nlocal][2]);
diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp
index b67f62d53d..dc16190c98 100644
--- a/src/SPIN/compute_spin.cpp
+++ b/src/SPIN/compute_spin.cpp
@@ -105,16 +105,16 @@ void ComputeSpin::compute_vector()
   for (i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) {
       if (atom->sp_flag) {
-		mag[0] += sp[i][0];
-		mag[1] += sp[i][1];
-		mag[2] += sp[i][2];
-		magenergy -= (sp[i][0]*fm[i][0] + sp[i][1]*fm[i][1] + sp[i][2]*fm[i][2]);
-                tx = sp[i][1]*fm[i][2]-sp[i][2]*fm[i][1];
-                ty = sp[i][2]*fm[i][0]-sp[i][0]*fm[i][2];
-                tz = sp[i][0]*fm[i][1]-sp[i][1]*fm[i][0];
-                tempnum += tx*tx+ty*ty+tz*tz;
-                tempdenom += sp[i][0]*fm[i][0]+fm[i][1]*sp[i][1]+sp[i][2]*fm[i][2];  	
-		countsp++;
+	mag[0] += sp[i][0];
+	mag[1] += sp[i][1];
+	mag[2] += sp[i][2];
+	magenergy -= (sp[i][0]*fm[i][0] + sp[i][1]*fm[i][1] + sp[i][2]*fm[i][2]);
+        tx = sp[i][1]*fm[i][2]-sp[i][2]*fm[i][1];
+        ty = sp[i][2]*fm[i][0]-sp[i][0]*fm[i][2];
+        tz = sp[i][0]*fm[i][1]-sp[i][1]*fm[i][0];
+        tempnum += tx*tx+ty*ty+tz*tz;
+        tempdenom += sp[i][0]*fm[i][0]+fm[i][1]*sp[i][1]+sp[i][2]*fm[i][2];  	
+	countsp++;
       }
     }
     else error->all(FLERR,"Compute compute/spin requires atom/spin style");
diff --git a/src/SPIN/pair_spin_dmi.cpp b/src/SPIN/pair_spin_dmi.cpp
index b792969c5d..08e2c63e7f 100644
--- a/src/SPIN/pair_spin_dmi.cpp
+++ b/src/SPIN/pair_spin_dmi.cpp
@@ -65,6 +65,9 @@ PairSpinDmi::~PairSpinDmi()
     memory->destroy(v_dmx);
     memory->destroy(v_dmy);
     memory->destroy(v_dmz);
+    memory->destroy(vmech_dmx);
+    memory->destroy(vmech_dmy);
+    memory->destroy(vmech_dmz);
     memory->destroy(cutsq);
   }
 }
@@ -118,7 +121,7 @@ void PairSpinDmi::coeff(int narg, char **arg)
   force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   const double rij = force->numeric(FLERR,arg[3]);
-  const double dm = (force->numeric(FLERR,arg[4]))/hbar;
+  const double dm = (force->numeric(FLERR,arg[4]));
   double dmx = force->numeric(FLERR,arg[5]);
   double dmy = force->numeric(FLERR,arg[6]);
   double dmz = force->numeric(FLERR,arg[7]);
@@ -133,9 +136,12 @@ void PairSpinDmi::coeff(int narg, char **arg)
     for (int j = MAX(jlo,i); j <= jhi; j++) {
       cut_spin_dmi[i][j] = rij;
       DM[i][j] = dm;
-      v_dmx[i][j] = dmx * dm;
-      v_dmy[i][j] = dmy * dm;
-      v_dmz[i][j] = dmz * dm;
+      v_dmx[i][j] = dmx * dm / hbar;
+      v_dmy[i][j] = dmy * dm / hbar;
+      v_dmz[i][j] = dmz * dm / hbar;
+      vmech_dmx[i][j] = dmx * dm;
+      vmech_dmy[i][j] = dmy * dm;
+      vmech_dmz[i][j] = dmz * dm;
       setflag[i][j] = 1;
       count++;
     }
@@ -187,9 +193,17 @@ void PairSpinDmi::init_style()
 
 double PairSpinDmi::init_one(int i, int j)
 {
-
   if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set");
 
+  DM[j][i] = DM[i][j];
+  v_dmx[j][i] = v_dmx[i][j];
+  v_dmy[j][i] = v_dmy[i][j];
+  v_dmz[j][i] = v_dmz[i][j];
+  vmech_dmx[j][i] = vmech_dmx[i][j];
+  vmech_dmy[j][i] = vmech_dmy[i][j];
+  vmech_dmz[j][i] = vmech_dmz[i][j];
+  cut_spin_dmi[j][i] = cut_spin_dmi[i][j];
+
   return cut_spin_dmi_global;
 }
 
@@ -210,7 +224,8 @@ void PairSpinDmi::compute(int eflag, int vflag)
 {
   int i,j,ii,jj,inum,jnum,itype,jtype;
   double evdwl, ecoul;
-  double xi[3], rij[3], eij[3];
+  double xi[3], eij[3];
+  double delx,dely,delz;
   double spi[3], spj[3];
   double fi[3], fmi[3];
   double local_cut2;
@@ -264,20 +279,17 @@ void PairSpinDmi::compute(int eflag, int vflag)
       spj[2] = sp[j][2];
 
       evdwl = 0.0;
-
       fi[0] = fi[1] = fi[2] = 0.0;
       fmi[0] = fmi[1] = fmi[2] = 0.0;
-      rij[0] = rij[1] = rij[2] = 0.0;
-      eij[0] = eij[1] = eij[2] = 0.0;
 
-      rij[0] = x[j][0] - xi[0];
-      rij[1] = x[j][1] - xi[1];
-      rij[2] = x[j][2] - xi[2];
-      rsq = rij[0]*rij[0] + rij[1]*rij[1] + rij[2]*rij[2];
+      delx = xi[0] - x[j][0];
+      dely = xi[1] - x[j][1];
+      delz = xi[2] - x[j][2];
+      rsq = delx*delx + dely*dely + delz*delz;
       inorm = 1.0/sqrt(rsq);
-      eij[0] = rij[0]*inorm;
-      eij[1] = rij[1]*inorm;
-      eij[2] = rij[2]*inorm;
+      eij[0] = -inorm*delx;
+      eij[1] = -inorm*dely;
+      eij[2] = -inorm*delz;
 
       local_cut2 = cut_spin_dmi[itype][jtype]*cut_spin_dmi[itype][jtype];
 
@@ -286,7 +298,7 @@ void PairSpinDmi::compute(int eflag, int vflag)
       if (rsq <= local_cut2) {
 	compute_dmi(i,j,eij,fmi,spj);
 	if (lattice_flag) {
-	  compute_dmi_mech(fi);
+	  compute_dmi_mech(i,j,rsq,eij,fi,spi,spj);
 	}
       }
 
@@ -309,7 +321,7 @@ void PairSpinDmi::compute(int eflag, int vflag)
       } else evdwl = 0.0;
 
       if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair,
-	  evdwl,ecoul,fi[0],fi[1],fi[2],rij[0],rij[1],rij[2]);
+	  evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz);
     }
   }
 
@@ -325,8 +337,8 @@ void PairSpinDmi::compute_single_pair(int ii, double fmi[3])
   double **x = atom->x;
   double **sp = atom->sp;
   double local_cut2;
-
-  double xi[3], rij[3], eij[3];
+  double xi[3], eij[3];
+  double delx,dely,delz;
   double spj[3];
 
   int i,j,jnum,itype,jtype;
@@ -358,14 +370,14 @@ void PairSpinDmi::compute_single_pair(int ii, double fmi[3])
     spj[1] = sp[j][1];
     spj[2] = sp[j][2];
 
-    rij[0] = x[j][0] - xi[0];
-    rij[1] = x[j][1] - xi[1];
-    rij[2] = x[j][2] - xi[2];
-    rsq = rij[0]*rij[0] + rij[1]*rij[1] + rij[2]*rij[2];
+    delx = xi[0] - x[j][0];
+    dely = xi[1] - x[j][1];
+    delz = xi[2] - x[j][2];
+    rsq = delx*delx + dely*dely + delz*delz;
     inorm = 1.0/sqrt(rsq);
-    eij[0] = rij[0]*inorm;
-    eij[1] = rij[1]*inorm;
-    eij[2] = rij[2]*inorm;
+    eij[0] = -inorm*delx;
+    eij[1] = -inorm*dely;
+    eij[2] = -inorm*delz;
 
     local_cut2 = cut_spin_dmi[itype][jtype]*cut_spin_dmi[itype][jtype];
 
@@ -390,23 +402,45 @@ void PairSpinDmi::compute_dmi(int i, int j, double eij[3], double fmi[3], double
   jtype = type[j];
 
   dmix = eij[1]*v_dmz[itype][jtype] - eij[2]*v_dmy[itype][jtype];
-  dmiy = eij[2]*v_dmx[itype][jtype] - eij[2]*v_dmz[itype][jtype];
+  dmiy = eij[2]*v_dmx[itype][jtype] - eij[0]*v_dmz[itype][jtype];
   dmiz = eij[0]*v_dmy[itype][jtype] - eij[1]*v_dmx[itype][jtype];
 
-  fmi[0] += (spj[1]*dmiz - spj[2]*dmiy);
-  fmi[1] += (spj[2]*dmix - spj[0]*dmiz);
-  fmi[2] += (spj[0]*dmiy - spj[1]*dmix);
+  fmi[0] -= (spj[1]*dmiz - spj[2]*dmiy);
+  fmi[1] -= (spj[2]*dmix - spj[0]*dmiz);
+  fmi[2] -= (spj[0]*dmiy - spj[1]*dmix);
 }
 
 /* ----------------------------------------------------------------------
    compute the mechanical force due to the dmi interaction between atom i and atom j
 ------------------------------------------------------------------------- */
 
-void PairSpinDmi::compute_dmi_mech(double fi[3])
+void PairSpinDmi::compute_dmi_mech(int i, int j, double rsq, double eij[3], 
+    double fi[3],  double spi[3], double spj[3])
 {
-  fi[0] += 0.0;
-  fi[1] += 0.0;
-  fi[2] += 0.0;
+  int *type = atom->type;
+  int itype, jtype;
+  double dmix,dmiy,dmiz;	
+  itype = type[i];
+  jtype = type[j];
+  double csx,csy,csz,cdmx,cdmy,cdmz,irij;
+
+  irij = 1.0/sqrt(rsq);
+
+  dmix = vmech_dmx[itype][jtype];
+  dmiy = vmech_dmy[itype][jtype];
+  dmiz = vmech_dmz[itype][jtype];
+
+  csx = (spi[1]*spj[2] - spi[2]*spj[1]);
+  csy = (spi[2]*spj[0] - spi[0]*spj[2]);
+  csz = (spi[0]*spj[1] - spi[1]*spj[0]);
+
+  cdmx = (dmiy*csz - dmiz*csy);
+  cdmy = (dmiz*csx - dmix*csz);
+  cdmz = (dmix*csy - dmiy*csz);
+
+  fi[0] += irij*cdmx;
+  fi[1] += irij*cdmy;
+  fi[2] += irij*cdmz;
 }
 
 /* ----------------------------------------------------------------------
@@ -428,6 +462,9 @@ void PairSpinDmi::allocate()
   memory->create(v_dmx,n+1,n+1,"pair:DM_vector_x");
   memory->create(v_dmy,n+1,n+1,"pair:DM_vector_y");
   memory->create(v_dmz,n+1,n+1,"pair:DM_vector_z");
+  memory->create(vmech_dmx,n+1,n+1,"pair:DMmech_vector_x");
+  memory->create(vmech_dmy,n+1,n+1,"pair:DMmech_vector_y");
+  memory->create(vmech_dmz,n+1,n+1,"pair:DMmech_vector_z");
 
   memory->create(cutsq,n+1,n+1,"pair:cutsq");
 
@@ -451,6 +488,9 @@ void PairSpinDmi::write_restart(FILE *fp)
         fwrite(&v_dmx[i][j],sizeof(double),1,fp);
         fwrite(&v_dmy[i][j],sizeof(double),1,fp);
         fwrite(&v_dmz[i][j],sizeof(double),1,fp);
+        fwrite(&vmech_dmx[i][j],sizeof(double),1,fp);
+        fwrite(&vmech_dmy[i][j],sizeof(double),1,fp);
+        fwrite(&vmech_dmz[i][j],sizeof(double),1,fp);
         fwrite(&cut_spin_dmi[i][j],sizeof(double),1,fp);
       }
     }
@@ -478,12 +518,18 @@ void PairSpinDmi::read_restart(FILE *fp)
           fread(&v_dmx[i][j],sizeof(double),1,fp);
           fread(&v_dmy[i][j],sizeof(double),1,fp);
           fread(&v_dmz[i][j],sizeof(double),1,fp);
+          fread(&vmech_dmx[i][j],sizeof(double),1,fp);
+          fread(&vmech_dmy[i][j],sizeof(double),1,fp);
+          fread(&vmech_dmz[i][j],sizeof(double),1,fp);
           fread(&cut_spin_dmi[i][j],sizeof(double),1,fp);
         }
         MPI_Bcast(&DM[i][j],1,MPI_DOUBLE,0,world);
         MPI_Bcast(&v_dmx[i][j],1,MPI_DOUBLE,0,world);
         MPI_Bcast(&v_dmy[i][j],1,MPI_DOUBLE,0,world);
         MPI_Bcast(&v_dmz[i][j],1,MPI_DOUBLE,0,world);
+        MPI_Bcast(&vmech_dmx[i][j],1,MPI_DOUBLE,0,world);
+        MPI_Bcast(&vmech_dmy[i][j],1,MPI_DOUBLE,0,world);
+        MPI_Bcast(&vmech_dmz[i][j],1,MPI_DOUBLE,0,world);
         MPI_Bcast(&cut_spin_dmi[i][j],1,MPI_DOUBLE,0,world);
       }
     }
diff --git a/src/SPIN/pair_spin_dmi.h b/src/SPIN/pair_spin_dmi.h
index a309f0c8d5..68e42e879d 100644
--- a/src/SPIN/pair_spin_dmi.h
+++ b/src/SPIN/pair_spin_dmi.h
@@ -38,22 +38,23 @@ class PairSpinDmi : public PairSpin {
   void compute_single_pair(int, double *);
 
   void compute_dmi(int, int, double *, double *, double *);
-  void compute_dmi_mech(double *);
+  void compute_dmi_mech(int, int, double, double *, double *, double *, double *);
 
   void write_restart(FILE *);
   void read_restart(FILE *);
   void write_restart_settings(FILE *);
   void read_restart_settings(FILE *);
 
-  double cut_spin_dmi_global;		// short range pair cutoff
+  double cut_spin_dmi_global;			// short range pair cutoff
 
  protected:
-  double **DM;                     	// dmi coeff in eV
-  double **v_dmx, **v_dmy, **v_dmz;	// dmi direction
-  double **cut_spin_dmi;      		// cutoff distance dmi
+  double **DM;                     		// dmi coeff in eV
+  double **v_dmx, **v_dmy, **v_dmz;		// dmi direction
+  double **vmech_dmx, **vmech_dmy, **vmech_dmz;	// dmi mech direction
+  double **cut_spin_dmi;      			// cutoff distance dmi
 
-  int lattice_flag;                     // flag for mech force computation
-  class FixNVESpin *lockfixnvespin;     // ptr to FixNVESpin for setups
+  int lattice_flag;             	        // flag for mech force computation
+  class FixNVESpin *lockfixnvespin;     	// ptr to FixNVESpin for setups
 
   void allocate();
 };
diff --git a/src/SPIN/pair_spin_exchange.cpp b/src/SPIN/pair_spin_exchange.cpp
index 1b7b36b6db..cc074bb97d 100644
--- a/src/SPIN/pair_spin_exchange.cpp
+++ b/src/SPIN/pair_spin_exchange.cpp
@@ -65,7 +65,7 @@ PairSpinExchange::~PairSpinExchange()
     memory->destroy(J1_mech);
     memory->destroy(J2);
     memory->destroy(J3);
-    memory->destroy(cutsq); // to be deleted
+    memory->destroy(cutsq); // to be implemented
   }
 }
 
@@ -134,8 +134,8 @@ void PairSpinExchange::coeff(int narg, char **arg)
       count++;
     }
   }
-  if (count == 0)
-    error->all(FLERR,"Incorrect args in pair_style command");
+  
+  if (count == 0) error->all(FLERR,"Incorrect args in pair_style command");
 }
 
 /* ----------------------------------------------------------------------
@@ -183,6 +183,12 @@ double PairSpinExchange::init_one(int i, int j)
 
    if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set");
 
+  J1_mag[j][i] = J1_mag[i][j];
+  J1_mech[j][i] = J1_mech[i][j];
+  J2[j][i] = J2[i][j];
+  J3[j][i] = J3[i][j];
+  cut_spin_exchange[j][i] = cut_spin_exchange[i][j];
+
   return cut_spin_exchange_global;
 }
 
@@ -203,7 +209,8 @@ void PairSpinExchange::compute(int eflag, int vflag)
 {
   int i,j,ii,jj,inum,jnum,itype,jtype;
   double evdwl, ecoul;
-  double xi[3], rij[3], eij[3];
+  double xi[3], eij[3];
+  double delx,dely,delz;
   double spi[3], spj[3];
   double fi[3], fmi[3];
   double local_cut2;
@@ -255,18 +262,17 @@ void PairSpinExchange::compute(int eflag, int vflag)
       spj[2] = sp[j][2];
 
       evdwl = 0.0;
-
       fi[0] = fi[1] = fi[2] = 0.0;
       fmi[0] = fmi[1] = fmi[2] = 0.0;
 
-      rij[0] = x[j][0] - xi[0];
-      rij[1] = x[j][1] - xi[1];
-      rij[2] = x[j][2] - xi[2];
-      rsq = rij[0]*rij[0] + rij[1]*rij[1] + rij[2]*rij[2];
+      delx = xi[0] - x[j][0];
+      dely = xi[1] - x[j][1];
+      delz = xi[2] - x[j][2];
+      rsq = delx*delx + dely*dely + delz*delz;
       inorm = 1.0/sqrt(rsq);
-      eij[0] = inorm*rij[0];
-      eij[1] = inorm*rij[1];
-      eij[2] = inorm*rij[2];
+      eij[0] = -inorm*delx;
+      eij[1] = -inorm*dely;
+      eij[2] = -inorm*delz;
 
       local_cut2 = cut_spin_exchange[itype][jtype]*cut_spin_exchange[itype][jtype];
 
@@ -298,7 +304,7 @@ void PairSpinExchange::compute(int eflag, int vflag)
       } else evdwl = 0.0;
 
       if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair,
-	  evdwl,ecoul,fi[0],fi[1],fi[2],rij[0],rij[1],rij[2]);
+	  evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz);
     }
   }
 
@@ -317,8 +323,8 @@ void PairSpinExchange::compute_single_pair(int ii, double fmi[3])
   double **x = atom->x;
   double **sp = atom->sp;
   double local_cut2;
-
   double xi[3], rij[3];
+  double delx,dely,delz;
   double spj[3];
 
   int i,j,jnum,itype,jtype;
@@ -351,15 +357,14 @@ void PairSpinExchange::compute_single_pair(int ii, double fmi[3])
     spj[1] = sp[j][1];
     spj[2] = sp[j][2];
 
-    rij[0] = x[j][0] - xi[0];
-    rij[1] = x[j][1] - xi[1];
-    rij[2] = x[j][2] - xi[2];
-    rsq = rij[0]*rij[0] + rij[1]*rij[1] + rij[2]*rij[2];
+    delx = xi[0] - x[j][0];
+    dely = xi[1] - x[j][1];
+    delz = xi[2] - x[j][2];
+    rsq = delx*delx + dely*dely + delz*delz;
 
     if (rsq <= local_cut2) {
       compute_exchange(i,j,rsq,fmi,spj);
     }
-
   }
 
 }
@@ -390,7 +395,8 @@ void PairSpinExchange::compute_exchange(int i, int j, double rsq, double fmi[3],
    compute the mechanical force due to the exchange interaction between atom i and atom j
 ------------------------------------------------------------------------- */
 
-void PairSpinExchange::compute_exchange_mech(int i, int j, double rsq, double rij[3], double fi[3],  double spi[3], double spj[3])
+void PairSpinExchange::compute_exchange_mech(int i, int j, double rsq, double eij[3], 
+    double fi[3],  double spi[3], double spj[3])
 {
   int *type = atom->type;
   int itype, jtype;
@@ -408,9 +414,9 @@ void PairSpinExchange::compute_exchange_mech(int i, int j, double rsq, double ri
   Jex_mech *= 8.0*Jex*rr*exp(-ra);
   Jex_mech *= (spi[0]*spj[0]+spi[1]*spj[1]+spi[2]*spj[2]);
 
-  fi[0] -= Jex_mech*rij[0];
-  fi[1] -= Jex_mech*rij[1];
-  fi[2] -= Jex_mech*rij[2];
+  fi[0] -= Jex_mech*eij[0];
+  fi[1] -= Jex_mech*eij[1];
+  fi[2] -= Jex_mech*eij[2];
 }
 
 /* ----------------------------------------------------------------------
diff --git a/src/SPIN/pair_spin_magelec.cpp b/src/SPIN/pair_spin_magelec.cpp
index 315b691d17..6bc1f71947 100644
--- a/src/SPIN/pair_spin_magelec.cpp
+++ b/src/SPIN/pair_spin_magelec.cpp
@@ -187,8 +187,14 @@ void PairSpinMagelec::init_style()
 
 double PairSpinMagelec::init_one(int i, int j)
 {
+  if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set");
 
-   if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set");
+  ME[j][i] = ME[i][j];
+  ME_mech[j][i] = ME_mech[i][j];
+  v_mex[j][i] = v_mex[i][j];
+  v_mey[j][i] = v_mey[i][j];
+  v_mez[j][i] = v_mez[i][j];
+  cut_spin_magelec[j][i] = cut_spin_magelec[i][j];
 
   return cut_spin_magelec_global;
 }
@@ -211,7 +217,8 @@ void PairSpinMagelec::compute(int eflag, int vflag)
 {
   int i,j,ii,jj,inum,jnum,itype,jtype;
   double evdwl, ecoul;
-  double xi[3], rij[3], eij[3];
+  double xi[3], eij[3];
+  double delx,dely,delz;
   double spi[3], spj[3];
   double fi[3], fmi[3];
   double local_cut2;
@@ -263,18 +270,17 @@ void PairSpinMagelec::compute(int eflag, int vflag)
       spj[2] = sp[j][2];
 
       evdwl = 0.0;
-
       fi[0] = fi[1] = fi[2] = 0.0;
       fmi[0] = fmi[1] = fmi[2] = 0.0;
 
-      rij[0] = x[j][0] - xi[0];
-      rij[1] = x[j][1] - xi[1];
-      rij[2] = x[j][2] - xi[2];
-      rsq = rij[0]*rij[0] + rij[1]*rij[1] + rij[2]*rij[2];
+      delx = xi[0] - x[j][0];
+      dely = xi[1] - x[j][1];
+      delz = xi[2] - x[j][2];
+      rsq = delx*delx + dely*dely + delz*delz;
       inorm = 1.0/sqrt(rsq);
-      eij[0] = inorm*rij[0];
-      eij[1] = inorm*rij[1];
-      eij[2] = inorm*rij[2];
+      eij[0] = -inorm*delx;
+      eij[1] = -inorm*dely;
+      eij[2] = -inorm*delz;
 
       local_cut2 = cut_spin_magelec[itype][jtype]*cut_spin_magelec[itype][jtype];
 
@@ -301,12 +307,12 @@ void PairSpinMagelec::compute(int eflag, int vflag)
       }
 
       if (eflag) {
-        evdwl = (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]);
+        evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]);
         evdwl *= hbar;
       } else evdwl = 0.0;
 
       if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair,
-          evdwl,ecoul,fi[0],fi[1],fi[2],rij[0],rij[1],rij[2]);
+          evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz);
     }
   }
 
@@ -322,8 +328,8 @@ void PairSpinMagelec::compute_single_pair(int ii, double fmi[3])
   double **x = atom->x;
   double **sp = atom->sp;
   double local_cut2;
-
-  double xi[3], rij[3], eij[3];
+  double xi[3], eij[3];
+  double delx,dely,delz;
   double spj[3];
 
   int i,j,jnum,itype,jtype;
@@ -342,8 +348,6 @@ void PairSpinMagelec::compute_single_pair(int ii, double fmi[3])
   xi[1] = x[i][1];
   xi[2] = x[i][2];
 
-  eij[0] = eij[1] = eij[2] = 0.0;
-
   jlist = firstneigh[i];
   jnum = numneigh[i];
 
@@ -358,14 +362,14 @@ void PairSpinMagelec::compute_single_pair(int ii, double fmi[3])
     spj[1] = sp[j][1];
     spj[2] = sp[j][2];
 
-    rij[0] = x[j][0] - xi[0];
-    rij[1] = x[j][1] - xi[1];
-    rij[2] = x[j][2] - xi[2];
-    rsq = rij[0]*rij[0] + rij[1]*rij[1] + rij[2]*rij[2];
+    delx = xi[0] - x[j][0];
+    dely = xi[1] - x[j][1];
+    delz = xi[2] - x[j][2];
+    rsq = delx*delx + dely*dely + delz*delz;
     inorm = 1.0/sqrt(rsq);
-    eij[0] = inorm*rij[0];
-    eij[1] = inorm*rij[1];
-    eij[2] = inorm*rij[2];
+    eij[0] = -inorm*delx;
+    eij[1] = -inorm*dely;
+    eij[2] = -inorm*delz;
 
     if (rsq <= local_cut2) {
       compute_magelec(i,j,rsq,eij,fmi,spj);
@@ -380,36 +384,26 @@ void PairSpinMagelec::compute_magelec(int i, int j, double rsq, double eij[3], d
 {
   int *type = atom->type;
   int itype, jtype;
+  double meix,meiy,meiz;
+  double vx,vy,vz;
   itype = type[i];
   jtype = type[j];
 
-  double local_cut2 = cut_spin_magelec[itype][jtype]*cut_spin_magelec[itype][jtype];
-
-  if (rsq <= local_cut2) {
-    double meix,meiy,meiz;
-    double rx, ry, rz;
-    double vx, vy, vz;
-
-    rx = eij[0];
-    ry = eij[1];
-    rz = eij[2];
-
-    vx = v_mex[itype][jtype];
-    vy = v_mey[itype][jtype];
-    vz = v_mez[itype][jtype];
+  vx = v_mex[itype][jtype];
+  vy = v_mey[itype][jtype];
+  vz = v_mez[itype][jtype];
 
-    meix = vy*rz - vz*ry;
-    meiy = vz*rx - vx*rz;
-    meiz = vx*ry - vy*rx;
+  meix = vy*eij[2] - vz*eij[1];
+  meiy = vz*eij[0] - vx*eij[2];
+  meiz = vx*eij[1] - vy*eij[0];
 
-    meix *= ME[itype][jtype];
-    meiy *= ME[itype][jtype];
-    meiz *= ME[itype][jtype];
+  meix *= ME[itype][jtype];
+  meiy *= ME[itype][jtype];
+  meiz *= ME[itype][jtype];
 
-    fmi[0] += spj[1]*meiz - spj[2]*meiy;
-    fmi[1] += spj[2]*meix - spj[0]*meiz;
-    fmi[2] += spj[0]*meiy - spj[1]*meix;
-  }
+  fmi[0] += spj[1]*meiz - spj[2]*meiy;
+  fmi[1] += spj[2]*meix - spj[0]*meiz;
+  fmi[2] += spj[0]*meiy - spj[1]*meix;
 }
 
 /* ---------------------------------------------------------------------- */
diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp
index 0daafad756..55f537cf4f 100644
--- a/src/SPIN/pair_spin_neel.cpp
+++ b/src/SPIN/pair_spin_neel.cpp
@@ -193,8 +193,16 @@ void PairSpinNeel::init_style()
 
 double PairSpinNeel::init_one(int i, int j)
 {
-
-   if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set");
+  if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set");
+
+  g1[j][i] = g1[i][j];
+  g1_mech[j][i] = g1_mech[i][j];
+  g2[j][i] = g2[i][j];
+  g3[j][i] = g3[i][j];
+  q1[j][i] = q1[i][j];
+  q1_mech[j][i] = q1_mech[i][j];
+  q2[j][i] = q2[i][j];
+  q3[j][i] = q3[i][j];
 
   return cut_spin_neel_global;
 }
diff --git a/src/SPIN/pair_spin_neel.h b/src/SPIN/pair_spin_neel.h
index 934d4a93ad..f60d7d2dca 100644
--- a/src/SPIN/pair_spin_neel.h
+++ b/src/SPIN/pair_spin_neel.h
@@ -51,9 +51,9 @@ class PairSpinNeel : public PairSpin {
 
   // pseudo-dipolar and pseudo-quadrupolar coeff.
 
-  double **g1, **g1_mech; 		// exchange coeffs gij
+  double **g1, **g1_mech; 		// neel coeffs gij
   double **g2, **g3; 			// g1 in eV, g2 adim, g3 in Ang
-  double **q1, **q1_mech; 		// exchange coeffs qij
+  double **q1, **q1_mech; 		// neel coeffs qij
   double **q2, **q3; 			// q1 in eV, q2 adim, q3 in Ang
   double **cut_spin_neel;		// cutoff distance exchange
 
-- 
GitLab


From 6cd7299920a56d75c9d7d9cde5946d61c1e03dba Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Fri, 27 Jul 2018 12:10:43 +0200
Subject: [PATCH 108/243] update CODEOWNERS file to automatically notify
 @julient31 on changes to the SPIN package

---
 .github/CODEOWNERS | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 75b79443c3..53b0a7b4f2 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -17,6 +17,7 @@ src/GPU/*             @ndtrung81
 src/KOKKOS/*          @stanmoore1
 src/KIM/*             @ellio167
 src/LATTE/*           @cnegre
+src/SPIN/*            @julient31
 src/USER-CGDNA/*      @ohenrich
 src/USER-CGSDK/*      @akohlmey
 src/USER-COLVARS/*    @giacomofiorin
-- 
GitLab


From 99985a1d5bc4072db6e1858b6b99223f080fdd51 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Fri, 27 Jul 2018 20:31:53 -0400
Subject: [PATCH 109/243] Add profile.d files to set LAMMPS_POTENTIALS
 environment variable

---
 cmake/CMakeLists.txt              | 11 ++++++++++-
 cmake/etc/profile.d/lammps.csh.in |  2 ++
 cmake/etc/profile.d/lammps.sh.in  |  2 ++
 3 files changed, 14 insertions(+), 1 deletion(-)
 create mode 100644 cmake/etc/profile.d/lammps.csh.in
 create mode 100644 cmake/etc/profile.d/lammps.sh.in

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 88efd90221..8567e4395e 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -961,7 +961,16 @@ endif()
 ###############################################################################
 # Install potential files in data directory
 ###############################################################################
-install(DIRECTORY ${LAMMPS_SOURCE_DIR}/../potentials DESTINATION ${CMAKE_INSTALL_DATADIR}/lammps)
+set(LAMMPS_POTENTIALS_DIR ${CMAKE_INSTALL_FULL_DATADIR}/lammps/potentials)
+install(DIRECTORY ${LAMMPS_SOURCE_DIR}/../potentials DESTINATION ${CMAKE_INSTALL_DATADIR}/lammps/potentials)
+
+configure_file(etc/profile.d/lammps.sh.in ${CMAKE_BINARY_DIR}/etc/profile.d/lammps.sh @ONLY)
+configure_file(etc/profile.d/lammps.csh.in ${CMAKE_BINARY_DIR}/etc/profile.d/lammps.csh @ONLY)
+install(
+  FILES ${CMAKE_BINARY_DIR}/etc/profile.d/lammps.sh
+        ${CMAKE_BINARY_DIR}/etc/profile.d/lammps.csh
+  DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/profile.d
+)
 
 ###############################################################################
 # Testing
diff --git a/cmake/etc/profile.d/lammps.csh.in b/cmake/etc/profile.d/lammps.csh.in
new file mode 100644
index 0000000000..def49bf75c
--- /dev/null
+++ b/cmake/etc/profile.d/lammps.csh.in
@@ -0,0 +1,2 @@
+# set environment for LAMMPS executables to find potential files
+if ( "$?LAMMPS_POTENTIALS" == 0 ) setenv LAMMPS_POTENTIALS @LAMMPS_POTENTIALS_DIR@
diff --git a/cmake/etc/profile.d/lammps.sh.in b/cmake/etc/profile.d/lammps.sh.in
new file mode 100644
index 0000000000..acd75fa0cf
--- /dev/null
+++ b/cmake/etc/profile.d/lammps.sh.in
@@ -0,0 +1,2 @@
+# set environment for LAMMPS executables to find potential files
+export LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS-@LAMMPS_POTENTIALS_DIR@}
-- 
GitLab


From 8fccf6b9b4535bc2fb2dc801804e9c640fdad469 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Sat, 28 Jul 2018 23:31:50 -0400
Subject: [PATCH 110/243] Use absolute paths for docenv

---
 cmake/CMakeLists.txt | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 8567e4395e..485e2df91c 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -920,12 +920,15 @@ if(BUILD_DOC)
     OUTPUT docenv
     COMMAND ${VIRTUALENV} docenv
   )
+
+  set(DOCENV_BINARY_DIR ${CMAKE_BINARY_DIR}/docenv/bin)
+
   add_custom_command(
     OUTPUT requirements.txt
     DEPENDS docenv
     COMMAND ${CMAKE_COMMAND} -E copy ${LAMMPS_DOC_DIR}/utils/requirements.txt requirements.txt
-    COMMAND ./docenv/bin/pip install -r requirements.txt --upgrade
-    COMMAND ./docenv/bin/pip install --upgrade ${LAMMPS_DOC_DIR}/utils/converters
+    COMMAND ${DOCENV_BINARY_DIR}/pip install -r requirements.txt --upgrade
+    COMMAND ${DOCENV_BINARY_DIR}/pip install --upgrade ${LAMMPS_DOC_DIR}/utils/converters
   )
 
   set(RST_FILES "")
@@ -938,7 +941,7 @@ if(BUILD_DOC)
     add_custom_command(
       OUTPUT ${RST_FILE}
       DEPENDS requirements.txt docenv ${TXT_FILE}
-      COMMAND ./docenv/bin/txt2rst -o ${RST_DIR} ${TXT_FILE}
+      COMMAND ${DOCENV_BINARY_DIR}/txt2rst -o ${RST_DIR} ${TXT_FILE}
     )
   endforeach()
 
@@ -946,7 +949,7 @@ if(BUILD_DOC)
     OUTPUT html
     DEPENDS ${RST_FILES}
     COMMAND ${CMAKE_COMMAND} -E copy_directory ${LAMMPS_DOC_DIR}/src ${RST_DIR}
-    COMMAND ./docenv/bin/sphinx-build -j ${NPROCS} -b html -c ${LAMMPS_DOC_DIR}/utils/sphinx-config -d ${CMAKE_BINARY_DIR}/doctrees ${RST_DIR} html
+    COMMAND ${DOCENV_BINARY_DIR}/sphinx-build -j ${NPROCS} -b html -c ${LAMMPS_DOC_DIR}/utils/sphinx-config -d ${CMAKE_BINARY_DIR}/doctrees ${RST_DIR} html
   )
 
   add_custom_target(
-- 
GitLab


From fa9b46fb40dcaba96802ad88dcebde7816eac36f Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Sun, 29 Jul 2018 00:08:20 -0400
Subject: [PATCH 111/243] Add BUILD_DOC option to CMake README.md

---
 cmake/README.md | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/cmake/README.md b/cmake/README.md
index bafd440a64..b6644ffda9 100644
--- a/cmake/README.md
+++ b/cmake/README.md
@@ -275,6 +275,16 @@ cmake -C ../cmake/presets/std_nolib.cmake ../cmake -DPKG_GPU=on
   </dl>
   </td>
 </tr>
+<tr>
+  <td><code>BUILD_DOC</code></td>
+  <td>control whether to build LAMMPS documentation</td>
+  <td>
+  <dl>
+    <dt><code>off</code> (default)</dt>
+    <dt><code>on</code></dt>
+  </dl>
+  </td>
+</tr>
 <tr>
   <td><code>LAMMPS_LONGLONG_TO_LONG</code></td>
   <td>Workaround if your system or MPI version does not recognize <code>long long</code> data types</td>
-- 
GitLab


From 82fc3b99d9049bbd98ec2fd55ffebfd58f823c29 Mon Sep 17 00:00:00 2001
From: HaoZeke <rohit.goswami@aol.com>
Date: Mon, 30 Jul 2018 16:59:25 +0530
Subject: [PATCH 112/243] emacs: Update mode file

This is a squashed commit including the following changes:
1) Update mode header
2) Clean up white-space
3) Fix free variable warning
4) Add proper file ending stuff
5) Rename to keep conventional naming scheme
6) Updates to the readme
7) Update to conform to `package-lint` criteria
8) Add license header
9) Add in-file instructions
---
 tools/emacs/README.txt                    | 36 +++++++++++++-
 tools/emacs/{lammps.el => lammps-mode.el} | 57 ++++++++++++++++++++---
 2 files changed, 84 insertions(+), 9 deletions(-)
 rename tools/emacs/{lammps.el => lammps-mode.el} (73%)

diff --git a/tools/emacs/README.txt b/tools/emacs/README.txt
index 8dfc37cb85..43add16505 100644
--- a/tools/emacs/README.txt
+++ b/tools/emacs/README.txt
@@ -1,6 +1,7 @@
 === Emacs Syntax Highlighting ===
 Created by Aidan Thompson 12/2010
 ===============================
+Updated by Roit Goswami Mon Jul 30 2018 
 
 The lammps.el file provided in this directory will enable syntax 
 highlighting for the lammps script syntax in emacs. The groupings
@@ -15,9 +16,40 @@ some basic syntax highlighting of strings, comments, etc.
 ============================
 (0) Create/edit the emacs init file ~/.emacs to contain:
    
-(load "~/.emacs.d/lammps")
+(load "~/.emacs.d/lammps-mode.el")
 
 This file may also be called ~/.emacs.el, or ~/.emacs.d/init.el
 
-(1) Copy lammps.el to the directory ~/.emacs.d
+(1) Copy lammps-mode.el to the directory ~/.emacs.d
 
+=Update:
+========
+
+The package may now also be installed by a MELPA style recipe, namely:
+
+```lisp
+(lammps-mode :fetcher github :repo "HaoZeke/lammps-mode")
+```
+
+For a simpler installation with `use-package` simply add:
+
+```lisp
+(use-package lammps-mode)
+```
+
+The latest version of the package will be kept in sync as a squashed update on
+the lammps repository as well.
+
+It is advisable to use the MELPA installation methods listed here:
+https://melpa.org/#/getting-started
+
+For autoloading and auto-recognizing "in.*" and "*.lmp" files add the following
+to `.emacs`:
+
+```lisp
+(autoload 'lammps-mode "lammps-mode.el" "LAMMPS mode." t)
+(setq auto-mode-alist (append auto-mode-alist
+                              '(("in\\." . lammps-mode))
+                              '(("\\.lmp\\'" . lammps-mode))
+                              ))
+```
diff --git a/tools/emacs/lammps.el b/tools/emacs/lammps-mode.el
similarity index 73%
rename from tools/emacs/lammps.el
rename to tools/emacs/lammps-mode.el
index d1ebebbbbf..9dfd119d0a 100644
--- a/tools/emacs/lammps.el
+++ b/tools/emacs/lammps-mode.el
@@ -1,7 +1,49 @@
-;; LAMMPS auto-mode
+;;; lammps-mode.el --- basic syntax highlighting for LAMMPS files
+
+;; Copyright (C) 2010-18 Aidan Thompson
+;; Copyright (C) 2018 Rohit Goswami
+
+;; Author: Aidan Thompson <athomps at sandia.gov>
+;; Maintainer: Rohit Goswami <r95g10 at gmail.com>
+;; Created: December 4, 2010
+;; Modified: July 30, 2018
+;; Version: 1.5.0
+;; Keywords: languages, faces
+;; Homepage: https://github.com/lammps/lammps/tree/master/tools/emacs
+;; Package-Requires: ((emacs "24.4"))
+
+;; This file is not part of GNU Emacs.
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
 ;; translation of keyword classes from tools/vim
 ;; see http://xahlee.org/emacs/elisp_syntax_coloring.html
 
+;; Put this in your .emacs file to enable autoloading of lammps-mode
+;; and auto-recognition of "in.*" and "*.lmp" files:
+;;
+;; (autoload 'lammps-mode "lammps-mode.el" "LAMMPS mode." t)
+;; (setq auto-mode-alist (append auto-mode-alist
+;;                               '(("in\\." . lammps-mode))
+;;                               '(("\\.lmp\\'" . lammps-mode))
+;;                               ))
+;;
+
+;;; Code:
  ;; define several keyword classes
 (defvar lammps-output
   '("log"
@@ -136,6 +178,8 @@
 (defvar lammps-variable-regexp
   "\\$\\({[a-zA-Z0-9_]+}\\)\\|\\$[A-Za-z]")
 
+(defvar lammps-font-lock-keywords)
+
 ;; clear memory
 (setq lammps-output nil)
 (setq lammps-read nil)
@@ -151,8 +195,7 @@
 
 ;; create the list for font-lock.
 ;; each class of keyword is given a particular face
-(setq 
- lammps-font-lock-keywords
+(setq lammps-font-lock-keywords
  `((,lammps-output-regexp . font-lock-function-name-face)
    (,lammps-read-regexp . font-lock-preprocessor-face)
    (,lammps-lattice-regexp . font-lock-type-face)
@@ -200,11 +243,11 @@
   (setq lammps-variable-regexp nil))
 
 ;; apply it to specified filename patterns
-(setq 
- auto-mode-alist
- (append 
-  auto-mode-alist
+(setq auto-mode-alist
+ (append auto-mode-alist
   '(("in\\." . lammps-mode))
   '(("\\.lmp\\'" . lammps-mode))
   ))
 
+(provide 'lammps-mode)
+;;; lammps-mode.el ends here
-- 
GitLab


From 2c9e96be116bafca79671625fa7fb2539343a334 Mon Sep 17 00:00:00 2001
From: HaoZeke <rohit.goswami@aol.com>
Date: Mon, 30 Jul 2018 19:58:18 +0530
Subject: [PATCH 113/243] emacs: Stop forcing filename patterns

---
 tools/emacs/lammps-mode.el | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/tools/emacs/lammps-mode.el b/tools/emacs/lammps-mode.el
index 9dfd119d0a..9ba2669982 100644
--- a/tools/emacs/lammps-mode.el
+++ b/tools/emacs/lammps-mode.el
@@ -242,12 +242,5 @@
   (setq lammps-comment-regexp nil)
   (setq lammps-variable-regexp nil))
 
-;; apply it to specified filename patterns
-(setq auto-mode-alist
- (append auto-mode-alist
-  '(("in\\." . lammps-mode))
-  '(("\\.lmp\\'" . lammps-mode))
-  ))
-
 (provide 'lammps-mode)
 ;;; lammps-mode.el ends here
-- 
GitLab


From a00d7becc30ae782fe3d991e7cc8693ae5ed5b9b Mon Sep 17 00:00:00 2001
From: HaoZeke <rohit.goswami@aol.com>
Date: Mon, 30 Jul 2018 20:10:29 +0530
Subject: [PATCH 114/243] emacs: Major readme update and refactor

Also update the license and switch to GPL v2 like lammps
---
 tools/emacs/README.md      | 76 ++++++++++++++++++++++++++++++++++++++
 tools/emacs/README.txt     | 55 ---------------------------
 tools/emacs/lammps-mode.el | 15 ++++----
 3 files changed, 83 insertions(+), 63 deletions(-)
 create mode 100644 tools/emacs/README.md
 delete mode 100644 tools/emacs/README.txt

diff --git a/tools/emacs/README.md b/tools/emacs/README.md
new file mode 100644
index 0000000000..ce502a27e3
--- /dev/null
+++ b/tools/emacs/README.md
@@ -0,0 +1,76 @@
+# GNU Emacs Syntax Highlighting
+
+> Copyright (C) 2010-2018  Aidan Thompson <athomps at sandia.gov>
+> Copyright (C) 2018  Rohit Goswami <r95g10 at gmail.com>
+
+The `lammps-mode.el` file provided in this directory will enable syntax
+highlighting for the lammps script syntax in GNU Emacs. The groupings of
+commands were originally copied from `tools/vim`.
+
+## Installation
+**Requirements: GNU Emacs 24.\***
+
+### Obtaining the Package
+
+#### MELPA
+
+The easiest installation method is via MELPA and it is advisable to use one of
+the many [MELPA installation methods](https://melpa.org/#/getting-started).
+
+For example, with [use-package](https://github.com/jwiegley/use-package) one can
+simply use the following:
+
+``` emacs-lisp
+(use-package lammps-mode)
+```
+
+#### Manually
+
+Assuming for some reason you have downloaded the file to `~/.emacs.d/lisp` you
+would do the following (kanged [from here](http://ergoemacs.org/emacs/emacs_installing_packages.html)):
+
+``` emacs-lisp
+;; Tell emacs where is your personal elisp lib dir
+(add-to-list 'load-path "~/.emacs.d/lisp/")
+
+;; load the package.
+(load "lammps-mode")
+```
+
+### Autoloading \& Auto-recognition
+
+For autoloading and auto-recognizing `in.*` and `*.lmp` files add the following
+to `.emacs`:
+
+``` emacs-lisp
+(autoload 'lammps-mode "lammps-mode.el" "LAMMPS mode." t)
+(setq auto-mode-alist (append auto-mode-alist
+                              '(("in\\." . lammps-mode))
+                              '(("\\.lmp\\'" . lammps-mode))
+                              ))
+```
+
+## Status
+
+By far not all commands are included in the syntax file (lammps-mode.el). You
+can easily add new ones to the existing classes.
+
+## Implementation Details
+
+`lammps-mode` is derived from `shell-script-mode` which provides some basic
+syntax highlighting of strings, comments, etc.
+
+The MELPA recipe used for this package is simply:
+
+``` emacs-lisp
+(lammps-mode :fetcher github :repo "HaoZeke/lammps-mode")
+```
+ 
+## Caveats
+
+* Does not work with Xemacs [See [this comment](https://github.com/lammps/lammps/pull/1022#issuecomment-408871233)]
+
+## License
+
+[GNU GPL v2](https://github.com/HaoZeke/lammps-mode/blob/master/LICENSE).
+Check the file for more details.
diff --git a/tools/emacs/README.txt b/tools/emacs/README.txt
deleted file mode 100644
index 43add16505..0000000000
--- a/tools/emacs/README.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-=== Emacs Syntax Highlighting ===
-Created by Aidan Thompson 12/2010
-===============================
-Updated by Roit Goswami Mon Jul 30 2018 
-
-The lammps.el file provided in this directory will enable syntax 
-highlighting for the lammps script syntax in emacs. The groupings
-of commands were copied from tools/vim. The simulation scripts have to
-end on *.lmp or start with in.* (see lammps.el). By far not all 
-commands are included in the syntax file (lammps.el). 
-You can easily add new ones to the existing classes.
-'lammps-mode' is derived from 'shell-script-mode' which provides
-some basic syntax highlighting of strings, comments, etc.
-
-=To enable the highlighting:
-============================
-(0) Create/edit the emacs init file ~/.emacs to contain:
-   
-(load "~/.emacs.d/lammps-mode.el")
-
-This file may also be called ~/.emacs.el, or ~/.emacs.d/init.el
-
-(1) Copy lammps-mode.el to the directory ~/.emacs.d
-
-=Update:
-========
-
-The package may now also be installed by a MELPA style recipe, namely:
-
-```lisp
-(lammps-mode :fetcher github :repo "HaoZeke/lammps-mode")
-```
-
-For a simpler installation with `use-package` simply add:
-
-```lisp
-(use-package lammps-mode)
-```
-
-The latest version of the package will be kept in sync as a squashed update on
-the lammps repository as well.
-
-It is advisable to use the MELPA installation methods listed here:
-https://melpa.org/#/getting-started
-
-For autoloading and auto-recognizing "in.*" and "*.lmp" files add the following
-to `.emacs`:
-
-```lisp
-(autoload 'lammps-mode "lammps-mode.el" "LAMMPS mode." t)
-(setq auto-mode-alist (append auto-mode-alist
-                              '(("in\\." . lammps-mode))
-                              '(("\\.lmp\\'" . lammps-mode))
-                              ))
-```
diff --git a/tools/emacs/lammps-mode.el b/tools/emacs/lammps-mode.el
index 9ba2669982..37e8a32116 100644
--- a/tools/emacs/lammps-mode.el
+++ b/tools/emacs/lammps-mode.el
@@ -14,20 +14,19 @@
 
 ;; This file is not part of GNU Emacs.
 
-;; This file is free software; you can redistribute it and/or modify
+;; This program is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation; either version 2 of the License, or
+;; (at your option) any later version.
 
-;; This file is distributed in the hope that it will be useful,
+;; This program is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 ;; GNU General Public License for more details.
 
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to
-;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; You should have received a copy of the GNU General Public License along
+;; with this program; if not, write to the Free Software Foundation, Inc.,
+;; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 ;;; Commentary:
 ;; translation of keyword classes from tools/vim
-- 
GitLab


From b76f86602a4f7fb2cdfa7464f276b45e9dbe9e06 Mon Sep 17 00:00:00 2001
From: Amrita Goswami <32496815+amritagos@users.noreply.github.com>
Date: Mon, 30 Jul 2018 21:18:59 +0530
Subject: [PATCH 115/243] docs: Fix spelling mistakes and clarify Tools.txt

---
 doc/src/Tools.txt | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/src/Tools.txt b/doc/src/Tools.txt
index 4c5fbbd453..7165010da3 100644
--- a/doc/src/Tools.txt
+++ b/doc/src/Tools.txt
@@ -249,9 +249,9 @@ These tools were provided by Andres Jaramillo-Botero at CalTech
 
 emacs tool :h4,link(emacs)
 
-The tools/emacs directory contains a Lips add-on file for Emacs that
-enables a lammps-mode for editing of input scripts when using Emacs,
-with various highlighting options setup.
+The tools/emacs directory contains an Emacs Lisp add-on file for GNU Emacs 
+that enables a lammps-mode for editing input scripts when using GNU Emacs,
+with various highlighting options set up.
 
 These tools were provided by Aidan Thompson at Sandia
 (athomps at sandia.gov).
-- 
GitLab


From 882e1e5138387bfe6b68333ba4364e8d3b13f13c Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Mon, 30 Jul 2018 18:32:28 +0200
Subject: [PATCH 116/243] resolve dependency problem between RIGID and USER-OMP
 package

---
 cmake/CMakeLists.txt | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 60a0f5d48f..e5db6c8bbb 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -585,8 +585,14 @@ if(PKG_USER-OMP)
     # detects styles which have USER-OMP version
     RegisterStylesExt(${USER-OMP_SOURCES_DIR} omp OMP_SOURCES)
 
+
     get_property(USER-OMP_SOURCES GLOBAL PROPERTY OMP_SOURCES)
 
+    # manually add classes, that are not styles
+    if(PKG_RIGID)
+      list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_rigid_nh_omp.cpp)
+    endif()
+
     list(APPEND LIB_SOURCES ${USER-OMP_SOURCES})
     include_directories(${USER-OMP_SOURCES_DIR})
 endif()
-- 
GitLab


From 82c9e8a52c88f32617adbe1d54a4aff106724071 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Mon, 30 Jul 2018 18:56:56 +0200
Subject: [PATCH 117/243] add explicit pattern based dependencies for CORESHELL
 packages, so KSPACE is no longer enforced

---
 cmake/CMakeLists.txt | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index e5db6c8bbb..40b0a8f01f 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -153,7 +153,7 @@ if(ENABLE_TESTING)
   enable_testing()
 endif(ENABLE_TESTING)
 
-set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GRANULAR
+set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE GRANULAR
   KSPACE MANYBODY MC MEAM MISC MOLECULE PERI QEQ REAX REPLICA RIGID SHOCK SPIN SNAP
   SRD KIM PYTHON MSCG MPIIO VORONOI POEMS LATTE USER-ATC USER-AWPMD USER-BOCS
   USER-CGDNA USER-MESO USER-CGSDK USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE
@@ -161,6 +161,7 @@ set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GRANU
   USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-QTB USER-REAXC USER-SMD
   USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM)
 set(ACCEL_PACKAGES USER-OMP KOKKOS OPT USER-INTEL GPU)
+set(OTHER_PACKAGES CORESHELL)
 foreach(PKG ${DEFAULT_PACKAGES})
   option(PKG_${PKG} "Build ${PKG} Package" OFF)
 endforeach()
@@ -180,7 +181,6 @@ pkg_depends(USER-ATC MANYBODY)
 pkg_depends(USER-LB MPI)
 pkg_depends(USER-MISC MANYBODY)
 pkg_depends(USER-PHONON KSPACE)
-pkg_depends(CORESHELL KSPACE)
 
 ######################################################
 # packages with special compiler needs or external libs
@@ -574,6 +574,20 @@ endif()
 # packages which selectively include variants based on enabled styles
 # e.g. accelerator packages
 ######################################################################
+if(PKG_CORESHELL)
+    set(CORESHELL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/CORESHELL)
+    set(CORESHELL_SOURCES)
+    set_property(GLOBAL PROPERTY "CORESHELL_SOURCES" "${CORESHELL_SOURCES}")
+
+    # detects styles which have a CORESHELL version
+    RegisterStylesExt(${CORESHELL_SOURCES_DIR} cs CORESHELL_SOURCES)
+
+    get_property(CORESHELL_SOURCES GLOBAL PROPERTY CORESHELL_SOURCES)
+
+    list(APPEND LIB_SOURCES ${CORESHELL_SOURCES})
+    include_directories(${CORESHELL_SOURCES_DIR})
+endif()
+
 if(PKG_USER-OMP)
     set(USER-OMP_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-OMP)
     set(USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/thr_data.cpp
-- 
GitLab


From b02362b94317eb503c1994a1e0eaab374f4b00e6 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Mon, 30 Jul 2018 19:09:16 +0200
Subject: [PATCH 118/243] add manual treatment of source dependencies between
 USER-REAXC and USER-OMP

---
 cmake/CMakeLists.txt | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 40b0a8f01f..1c86ebc695 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -602,11 +602,24 @@ if(PKG_USER-OMP)
 
     get_property(USER-OMP_SOURCES GLOBAL PROPERTY OMP_SOURCES)
 
-    # manually add classes, that are not styles
+    # manually add package dependent source files from USER-OMP that do not provide styles
+
     if(PKG_RIGID)
       list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_rigid_nh_omp.cpp)
     endif()
 
+    if(PKG_USER-REAXC)
+      list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/reaxc_bond_orders_omp.cpp
+                                   ${USER-OMP_SOURCES_DIR}/reaxc_hydrogen_bonds_omp.cpp
+                                   ${USER-OMP_SOURCES_DIR}/reaxc_nonbonded_omp.cpp
+                                   ${USER-OMP_SOURCES_DIR}/reaxc_bonds_omp.cpp
+                                   ${USER-OMP_SOURCES_DIR}/reaxc_init_md_omp.cpp
+                                   ${USER-OMP_SOURCES_DIR}/reaxc_torsion_angles_omp.cpp
+                                   ${USER-OMP_SOURCES_DIR}/reaxc_forces_omp.cpp
+                                   ${USER-OMP_SOURCES_DIR}/reaxc_multi_body_omp.cpp
+                                   ${USER-OMP_SOURCES_DIR}/reaxc_valence_angles_omp.cpp)
+    endif()
+
     list(APPEND LIB_SOURCES ${USER-OMP_SOURCES})
     include_directories(${USER-OMP_SOURCES_DIR})
 endif()
-- 
GitLab


From ee822bec1be9b7bac77c6ca014568da467e80440 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Mon, 30 Jul 2018 20:04:31 +0200
Subject: [PATCH 119/243] selectively handle dependency of qeq/fire on MANYBODY

---
 cmake/CMakeLists.txt | 27 ++++++++++++++++++++++++---
 1 file changed, 24 insertions(+), 3 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 1c86ebc695..1e58a670aa 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -154,14 +154,14 @@ if(ENABLE_TESTING)
 endif(ENABLE_TESTING)
 
 set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE GRANULAR
-  KSPACE MANYBODY MC MEAM MISC MOLECULE PERI QEQ REAX REPLICA RIGID SHOCK SPIN SNAP
+  KSPACE MANYBODY MC MEAM MISC MOLECULE PERI REAX REPLICA RIGID SHOCK SPIN SNAP
   SRD KIM PYTHON MSCG MPIIO VORONOI POEMS LATTE USER-ATC USER-AWPMD USER-BOCS
   USER-CGDNA USER-MESO USER-CGSDK USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE
   USER-EFF USER-FEP USER-H5MD USER-LB USER-MANIFOLD USER-MEAMC USER-MGPT USER-MISC
   USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-QTB USER-REAXC USER-SMD
   USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM)
 set(ACCEL_PACKAGES USER-OMP KOKKOS OPT USER-INTEL GPU)
-set(OTHER_PACKAGES CORESHELL)
+set(OTHER_PACKAGES CORESHELL QEQ)
 foreach(PKG ${DEFAULT_PACKAGES})
   option(PKG_${PKG} "Build ${PKG} Package" OFF)
 endforeach()
@@ -176,7 +176,7 @@ macro(pkg_depends PKG1 PKG2)
 endmacro()
 
 pkg_depends(MPIIO MPI)
-pkg_depends(QEQ MANYBODY)
+#pkg_depends(QEQ MANYBODY)
 pkg_depends(USER-ATC MANYBODY)
 pkg_depends(USER-LB MPI)
 pkg_depends(USER-MISC MANYBODY)
@@ -588,6 +588,27 @@ if(PKG_CORESHELL)
     include_directories(${CORESHELL_SOURCES_DIR})
 endif()
 
+# Fix qeq/fire requires MANYBODY (i.e. COMB and COMB3) to be installed
+if(PKG_QEQ)
+  set(QEQ_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/QEQ)
+  file(GLOB QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix*.h)
+  file(GLOB QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix*.cpp)
+
+  if(NOT PKG_MANYBODY)
+    list(REMOVE_ITEM QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix_qeq_fire.h)
+    list(REMOVE_ITEM QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix_qeq_fire.cpp)
+  endif()
+  set_property(GLOBAL PROPERTY "QEQ_SOURCES" "${QEQ_SOURCES}")
+
+  foreach(MY_HEADER ${QEQ_HEADERS})
+    AddStyleHeader(${MY_HEADER} FIX)
+  endforeach()
+
+  get_property(QEQ_SOURCES GLOBAL PROPERTY QEQ_SOURCES)
+  list(APPEND LIB_SOURCES ${QEQ_SOURCES})
+  include_directories(${QEQ_SOURCES_DIR})
+endif()
+
 if(PKG_USER-OMP)
     set(USER-OMP_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-OMP)
     set(USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/thr_data.cpp
-- 
GitLab


From d9c328932fac636d6d0d187bde2fdeb9ea3884e7 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Mon, 30 Jul 2018 12:31:12 -0600
Subject: [PATCH 120/243] changes to Packages and Speed doc files

---
 doc/src/Errors_messages.txt                   |   6 +-
 doc/src/Errors_warnings.txt                   |   6 +-
 doc/src/Examples.txt                          |   2 +-
 doc/src/Manual.txt                            |  29 +-
 doc/src/Packages.txt                          |  39 ++
 ...tion_packages.txt => Packages_details.txt} | 336 ++++++---------
 doc/src/Packages_standard.txt                 |  65 +++
 doc/src/Packages_user.txt                     |  74 ++++
 doc/src/Section_accelerate.txt                | 391 ------------------
 doc/src/Section_commands.txt                  |  44 +-
 doc/src/Section_intro.txt                     |   2 +-
 doc/src/Section_start.txt                     | 100 ++---
 doc/src/Speed.txt                             |  69 ++++
 doc/src/{Section_perf.txt => Speed_bench.txt} |  19 +-
 doc/src/Speed_compare.txt                     |  73 ++++
 doc/src/{accelerate_gpu.txt => Speed_gpu.txt} |  15 +-
 .../{accelerate_intel.txt => Speed_intel.txt} |  14 +-
 ...accelerate_kokkos.txt => Speed_kokkos.txt} |  20 +-
 doc/src/Speed_measure.txt                     |  55 +++
 doc/src/{accelerate_omp.txt => Speed_omp.txt} |  11 +-
 doc/src/{accelerate_opt.txt => Speed_opt.txt} |  11 +-
 doc/src/Speed_packages.txt                    | 191 +++++++++
 doc/src/Speed_tips.txt                        |  63 +++
 doc/src/angle_charmm.txt                      |  11 +-
 doc/src/angle_class2.txt                      |  11 +-
 doc/src/angle_cosine.txt                      |  11 +-
 doc/src/angle_cosine_delta.txt                |  11 +-
 doc/src/angle_cosine_periodic.txt             |  11 +-
 doc/src/angle_cosine_shift.txt                |  11 +-
 doc/src/angle_cosine_shift_exp.txt            |  11 +-
 doc/src/angle_cosine_squared.txt              |  11 +-
 doc/src/angle_dipole.txt                      |  11 +-
 doc/src/angle_fourier.txt                     |  11 +-
 doc/src/angle_fourier_simple.txt              |  11 +-
 doc/src/angle_harmonic.txt                    |  11 +-
 doc/src/angle_quartic.txt                     |  11 +-
 doc/src/angle_table.txt                       |  11 +-
 doc/src/atom_style.txt                        |  12 +-
 doc/src/bond_class2.txt                       |  11 +-
 doc/src/bond_fene.txt                         |  11 +-
 doc/src/bond_fene_expand.txt                  |  11 +-
 doc/src/bond_gromos.txt                       |  11 +-
 doc/src/bond_harmonic.txt                     |  11 +-
 doc/src/bond_harmonic_shift.txt               |  11 +-
 doc/src/bond_harmonic_shift_cut.txt           |  11 +-
 doc/src/bond_morse.txt                        |  11 +-
 doc/src/bond_nonlinear.txt                    |  11 +-
 doc/src/bond_quartic.txt                      |  11 +-
 doc/src/bond_table.txt                        |  11 +-
 doc/src/compute_pressure.txt                  |  11 +-
 doc/src/compute_temp.txt                      |  11 +-
 doc/src/compute_temp_partial.txt              |  11 +-
 doc/src/dihedral_charmm.txt                   |  11 +-
 doc/src/dihedral_class2.txt                   |  11 +-
 doc/src/dihedral_cosine_shift_exp.txt         |  11 +-
 doc/src/dihedral_fourier.txt                  |  11 +-
 doc/src/dihedral_harmonic.txt                 |  11 +-
 doc/src/dihedral_helix.txt                    |  11 +-
 doc/src/dihedral_multi_harmonic.txt           |  11 +-
 doc/src/dihedral_nharmonic.txt                |  11 +-
 doc/src/dihedral_opls.txt                     |  11 +-
 doc/src/dihedral_quadratic.txt                |  11 +-
 doc/src/dihedral_table.txt                    |  11 +-
 doc/src/fix_addforce.txt                      |  16 +-
 doc/src/fix_aveforce.txt                      |  16 +-
 doc/src/fix_deform.txt                        |  13 +-
 doc/src/fix_dpd_energy.txt                    |  11 +-
 doc/src/fix_enforce2d.txt                     |  11 +-
 doc/src/fix_eos_table_rx.txt                  |  11 +-
 doc/src/fix_freeze.txt                        |  16 +-
 doc/src/fix_gravity.txt                       |  11 +-
 doc/src/fix_langevin.txt                      |  11 +-
 doc/src/fix_momentum.txt                      |  11 +-
 doc/src/fix_nh.txt                            |  11 +-
 doc/src/fix_nph_asphere.txt                   |  11 +-
 doc/src/fix_nph_body.txt                      |  11 +-
 doc/src/fix_nph_sphere.txt                    |  11 +-
 doc/src/fix_nphug.txt                         |  11 +-
 doc/src/fix_npt_asphere.txt                   |  11 +-
 doc/src/fix_npt_body.txt                      |  11 +-
 doc/src/fix_npt_sphere.txt                    |  11 +-
 doc/src/fix_nve.txt                           |  11 +-
 doc/src/fix_nve_asphere.txt                   |  11 +-
 doc/src/fix_nve_sphere.txt                    |  11 +-
 doc/src/fix_nvt_asphere.txt                   |  11 +-
 doc/src/fix_nvt_body.txt                      |  11 +-
 doc/src/fix_nvt_sllod.txt                     |  11 +-
 doc/src/fix_nvt_sphere.txt                    |  11 +-
 doc/src/fix_qeq_comb.txt                      |  11 +-
 doc/src/fix_qeq_reax.txt                      |  11 +-
 doc/src/fix_rigid.txt                         |  11 +-
 doc/src/fix_rx.txt                            |  11 +-
 doc/src/fix_setforce.txt                      |  16 +-
 doc/src/fix_shake.txt                         |  16 +-
 doc/src/fix_shardlow.txt                      |  11 +-
 doc/src/fix_wall.txt                          |  11 +-
 doc/src/fix_wall_reflect.txt                  |  11 +-
 doc/src/improper_class2.txt                   |  11 +-
 doc/src/improper_cossq.txt                    |  11 +-
 doc/src/improper_cvff.txt                     |  11 +-
 doc/src/improper_fourier.txt                  |  11 +-
 doc/src/improper_harmonic.txt                 |  11 +-
 doc/src/improper_ring.txt                     |  11 +-
 doc/src/improper_umbrella.txt                 |  11 +-
 doc/src/kspace_style.txt                      |  15 +-
 doc/src/lammps.book                           |  12 +-
 doc/src/package.txt                           |   6 +-
 doc/src/pair_adp.txt                          |  11 +-
 doc/src/pair_agni.txt                         |  14 +-
 doc/src/pair_airebo.txt                       |  11 +-
 doc/src/pair_beck.txt                         |  11 +-
 doc/src/pair_born.txt                         |  11 +-
 doc/src/pair_buck.txt                         |  11 +-
 doc/src/pair_buck_long.txt                    |  11 +-
 doc/src/pair_charmm.txt                       |  11 +-
 doc/src/pair_class2.txt                       |  11 +-
 doc/src/pair_colloid.txt                      |  11 +-
 doc/src/pair_comb.txt                         |  11 +-
 doc/src/pair_coul.txt                         |  11 +-
 doc/src/pair_dipole.txt                       |  11 +-
 doc/src/pair_dpd.txt                          |  11 +-
 doc/src/pair_dpd_fdt.txt                      |  11 +-
 doc/src/pair_eam.txt                          |   9 +-
 doc/src/pair_edip.txt                         |  11 +-
 doc/src/pair_eim.txt                          |  11 +-
 doc/src/pair_exp6_rx.txt                      |  11 +-
 doc/src/pair_gauss.txt                        |  11 +-
 doc/src/pair_gayberne.txt                     |  11 +-
 doc/src/pair_gran.txt                         |  11 +-
 doc/src/pair_gromacs.txt                      |  11 +-
 doc/src/pair_hbond_dreiding.txt               |  11 +-
 doc/src/pair_hybrid.txt                       |   8 +-
 doc/src/pair_kim.txt                          |   4 +-
 doc/src/pair_lj.txt                           |  11 +-
 doc/src/pair_lj96.txt                         |  11 +-
 doc/src/pair_lj_cubic.txt                     |  11 +-
 doc/src/pair_lj_expand.txt                    |  11 +-
 doc/src/pair_lj_long.txt                      |  11 +-
 doc/src/pair_lj_smooth.txt                    |  11 +-
 doc/src/pair_lj_smooth_linear.txt             |  11 +-
 doc/src/pair_lj_soft.txt                      |  11 +-
 doc/src/pair_meam_spline.txt                  |  11 +-
 doc/src/pair_morse.txt                        |  11 +-
 doc/src/pair_multi_lucy_rx.txt                |  11 +-
 doc/src/pair_nb3b_harmonic.txt                |  11 +-
 doc/src/pair_nm.txt                           |  11 +-
 doc/src/pair_peri.txt                         |  11 +-
 doc/src/pair_reaxc.txt                        |  21 +-
 doc/src/pair_resquared.txt                    |  11 +-
 doc/src/pair_sdk.txt                          |  11 +-
 doc/src/pair_snap.txt                         |  11 +-
 doc/src/pair_soft.txt                         |  11 +-
 doc/src/pair_sw.txt                           |  11 +-
 doc/src/pair_table.txt                        |  11 +-
 doc/src/pair_table_rx.txt                     |  11 +-
 doc/src/pair_tersoff.txt                      |  11 +-
 doc/src/pair_tersoff_mod.txt                  |  11 +-
 doc/src/pair_tersoff_zbl.txt                  |  11 +-
 doc/src/pair_thole.txt                        |  11 +-
 doc/src/pair_ufm.txt                          |  11 +-
 doc/src/pair_vashishta.txt                    |  11 +-
 doc/src/pair_yukawa.txt                       |  11 +-
 doc/src/pair_yukawa_colloid.txt               |  11 +-
 doc/src/pair_zbl.txt                          |  11 +-
 doc/src/region.txt                            |  16 +-
 doc/src/run_style.txt                         |  30 +-
 166 files changed, 1621 insertions(+), 1640 deletions(-)
 create mode 100644 doc/src/Packages.txt
 rename doc/src/{Section_packages.txt => Packages_details.txt} (86%)
 create mode 100644 doc/src/Packages_standard.txt
 create mode 100644 doc/src/Packages_user.txt
 delete mode 100644 doc/src/Section_accelerate.txt
 create mode 100644 doc/src/Speed.txt
 rename doc/src/{Section_perf.txt => Speed_bench.txt} (86%)
 create mode 100644 doc/src/Speed_compare.txt
 rename doc/src/{accelerate_gpu.txt => Speed_gpu.txt} (96%)
 rename doc/src/{accelerate_intel.txt => Speed_intel.txt} (98%)
 rename doc/src/{accelerate_kokkos.txt => Speed_kokkos.txt} (97%)
 create mode 100644 doc/src/Speed_measure.txt
 rename doc/src/{accelerate_omp.txt => Speed_omp.txt} (96%)
 rename doc/src/{accelerate_opt.txt => Speed_opt.txt} (86%)
 create mode 100644 doc/src/Speed_packages.txt
 create mode 100644 doc/src/Speed_tips.txt

diff --git a/doc/src/Errors_messages.txt b/doc/src/Errors_messages.txt
index 1563e02901..39eabbd232 100644
--- a/doc/src/Errors_messages.txt
+++ b/doc/src/Errors_messages.txt
@@ -21,9 +21,9 @@ means that line #78 in the file src/velocity.cpp generated the error.
 Looking in the source code may help you figure out what went wrong.
 
 Note that error messages from "user-contributed
-packages"_Section_package.html#table_user are not listed here.  If
-such an error occurs and is not self-explanatory, you'll need to look
-in the source code or contact the author of the package.
+packages"_Packages_user.html are not listed here.  If such an error
+occurs and is not self-explanatory, you'll need to look in the source
+code or contact the author of the package.
 
 Doc page with "WARNING messages"_Errors_warnings.html
 
diff --git a/doc/src/Errors_warnings.txt b/doc/src/Errors_warnings.txt
index 0324f563b6..1da777043c 100644
--- a/doc/src/Errors_warnings.txt
+++ b/doc/src/Errors_warnings.txt
@@ -21,9 +21,9 @@ means that line #187 in the file src/domain.cpp generated the error.
 Looking in the source code may help you figure out what went wrong.
 
 Note that warning messages from "user-contributed
-packages"_Section_start.html#table_user are not listed here.  If such
-a warning occurs and is not self-explanatory, you'll need to look in
-the source code or contact the author of the package.
+packages"_Packages_user.html are not listed here.  If such a warning
+occurs and is not self-explanatory, you'll need to look in the source
+code or contact the author of the package.
 
 Doc page with "ERROR messages"_Errors_messages.html
 
diff --git a/doc/src/Examples.txt b/doc/src/Examples.txt
index 08afca8b20..467ddcc959 100644
--- a/doc/src/Examples.txt
+++ b/doc/src/Examples.txt
@@ -143,5 +143,5 @@ The USER directory has a large number of sub-directories which
 correspond by name to a USER package.  They contain scripts that
 illustrate how to use the command(s) provided in that package.  Many
 of the sub-directories have their own README files which give further
-instructions.  See the "Section 4"_Section_packages.html doc
+instructions.  See the "Packages_details"_Packages_details.html doc
 page for more info on specific USER packages.
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index 4481c911a0..31b8a6a1d4 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -111,11 +111,10 @@ it gives quick access to documentation for all LAMMPS commands.
    Section_intro
    Section_start
    Section_commands
-   Section_packages
-   Section_accelerate
+   Packages
+   Speed
    Section_howto
    Examples
-   Section_perf
    Tools
    Modify
    Python
@@ -167,19 +166,8 @@ END_RST -->
   3.3 "Input script structure"_cmd_3 :b
   3.4 "Commands listed by category"_cmd_4 :b
   3.5 "Commands listed alphabetically"_cmd_5 :ule,b
-"Packages"_Section_packages.html :l
-  4.1 "Standard packages"_pkg_1 :ulb,b
-  4.2 "User packages"_pkg_2 :ule,b
-"Accelerating LAMMPS performance"_Section_accelerate.html :l
-  5.1 "Measuring performance"_acc_1 :ulb,b
-  5.2 "Algorithms and code options to boost performace"_acc_2 :b
-  5.3 "Accelerator packages with optimized styles"_acc_3 :b
-    5.3.1 "GPU package"_accelerate_gpu.html :b
-    5.3.2 "USER-INTEL package"_accelerate_intel.html :b
-    5.3.3 "KOKKOS package"_accelerate_kokkos.html :b
-    5.3.4 "USER-OMP package"_accelerate_omp.html :b
-    5.3.5 "OPT package"_accelerate_opt.html :b
-  5.4 "Comparison of various accelerator packages"_acc_4 :ule,b
+"Optional packages"_Packages.html :l
+"Accelerate performance"_Speed.html :l
 "How-to discussions"_Section_howto.html :l
   6.1 "Restarting a simulation"_howto_1 :ulb,b
   6.2 "2d simulations"_howto_2 :b
@@ -209,7 +197,6 @@ END_RST -->
   6.26 "Adiabatic core/shell model"_howto_26 :b
   6.27 "Drude induced dipoles"_howto_27 :ule,b
 "Example scripts"_Examples.html :l
-"Performance & scalability"_Section_perf.html :l
 "Auxiliary tools"_Tools.html :l
 "Modify & extend LAMMPS"_Modify.html :l
 "Use Python with LAMMPS"_Python.html :l
@@ -240,14 +227,6 @@ END_RST -->
 :link(cmd_4,Section_commands.html#cmd_4)
 :link(cmd_5,Section_commands.html#cmd_5)
 
-:link(pkg_1,Section_packages.html#pkg_1)
-:link(pkg_2,Section_packages.html#pkg_2)
-
-:link(acc_1,Section_accelerate.html#acc_1)
-:link(acc_2,Section_accelerate.html#acc_2)
-:link(acc_3,Section_accelerate.html#acc_3)
-:link(acc_4,Section_accelerate.html#acc_4)
-
 :link(howto_1,Section_howto.html#howto_1)
 :link(howto_2,Section_howto.html#howto_2)
 :link(howto_3,Section_howto.html#howto_3)
diff --git a/doc/src/Packages.txt b/doc/src/Packages.txt
new file mode 100644
index 0000000000..6498d03063
--- /dev/null
+++ b/doc/src/Packages.txt
@@ -0,0 +1,39 @@
+"Previous Section"_Section_commands.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Speed.html :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Optional packages :h2
+
+This section gives an overview of the optional packages that extend
+LAMMPS functionality.  Packages are groups of files that enable a
+specific set of features.  For example, force fields for molecular
+systems or rigid-body constraint are in packages.  You can see the
+list of all packages and "make" commands to manage them by typing
+"make package" from within the src directory of the LAMMPS
+distribution.  "Section 2.3"_Section_start.html#start_3 gives general
+info on how to install and un-install packages as part of the LAMMPS
+build process.
+
+<!-- RST
+
+.. toctree::
+
+   Packages_standard
+   Packages_user
+   Packages_details
+
+END_RST -->
+
+<!-- HTML_ONLY -->
+
+"Standard packages"_Packages_standard.html
+"User packages"_Packages_user.html
+"Details on each package"_Packages_details.html :ul
+
+<!-- END_HTML_ONLY -->
diff --git a/doc/src/Section_packages.txt b/doc/src/Packages_details.txt
similarity index 86%
rename from doc/src/Section_packages.txt
rename to doc/src/Packages_details.txt
index 340a77310d..af18d097d9 100644
--- a/doc/src/Section_packages.txt
+++ b/doc/src/Packages_details.txt
@@ -1,6 +1,5 @@
-"Previous Section"_Section_commands.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Section_accelerate.html :c
+"Higher level section"_Packages.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -8,152 +7,89 @@ Section"_Section_accelerate.html :c
 
 :line
 
-4. Packages :h2
-
-This section gives an overview of the optional packages that extend
-LAMMPS functionality with instructions on how to build LAMMPS with
-each of them.  Packages are groups of files that enable a specific set
-of features.  For example, force fields for molecular systems or
-granular systems are in packages.  You can see the list of all
-packages and "make" commands to manage them by typing "make package"
-from within the src directory of the LAMMPS distribution.  "Section
-2.3"_Section_start.html#start_3 gives general info on how to install
-and un-install packages as part of the LAMMPS build process.
-
-There are two kinds of packages in LAMMPS, standard and user packages:
-
-"Table of standard packages"_#table_standard
-"Table of user packages"_#table_user :ul
-
-Either of these kinds of packages may work as is, may require some
-additional code compiled located in the lib folder, or may require
-an external library to be downloaded, compiled, installed, and LAMMPS
-configured to know about its location and additional compiler flags.
-You can often do the build of the internal or external libraries
-in one step by typing "make lib-name args='...'" from the src dir,
-with appropriate arguments included in args='...'. If you just type
-"make lib-name" you should see a help message about supported flags
-and some examples. For more details about this, please study the
-tables below and the sections about the individual packages.
-
-Standard packages are supported by the LAMMPS developers and are
-written in a syntax and style consistent with the rest of LAMMPS.
-This means the developers will answer questions about them, debug and
-fix them if necessary, and keep them compatible with future changes to
-LAMMPS.
-
-User packages have been contributed by users, and begin with the
-"user" prefix.  If they are a single command (single file), they are
-typically in the user-misc package.  User packages don't necessarily
-meet the requirements of the standard packages. This means the
-developers will try to keep things working and usually can answer
-technical questions about compiling the package. If you have problems
-using a feature provided in a user package, you may need to contact
-the contributor directly to get help.  Information on how to submit
-additions you make to LAMMPS as single files or as a standard or user
-package are given in the "Modify contribute"_Modify.html doc page.
-
-Following the next two tables is a sub-section for each package.  It
-lists authors (if applicable) and summarizes the package contents.  It
-has specific instructions on how to install the package, including (if
-necessary) downloading or building any extra library it requires. It
-also gives links to documentation, example scripts, and
-pictures/movies (if available) that illustrate use of the package.
+Package details :h3
+
+Here is a brief description of all the standard and user packages in
+LAMMPS.  It lists authors (if applicable) and summarizes the package
+contents.  It has specific instructions on how to install the package,
+including, if necessary, info on how to download or build any extra
+library it requires.  It also gives links to documentation, example
+scripts, and pictures/movies (if available) that illustrate use of the
+package.
 
 NOTE: To see the complete list of commands a package adds to LAMMPS,
-just look at the files in its src directory, e.g. "ls src/GRANULAR".
-Files with names that start with fix, compute, atom, pair, bond,
-angle, etc correspond to commands with the same style names.
-
-In these two tables, the "Example" column is a sub-directory in the
-examples directory of the distribution which has an input script that
-uses the package.  E.g. "peptide" refers to the examples/peptide
-directory; USER/atc refers to the examples/USER/atc directory.  The
-"Library" column indicates whether an extra library is needed to build
-and use the package:
-
-dash = no library
-sys = system library: you likely have it on your machine
-int = internal library: provided with LAMMPS, but you may need to build it
-ext = external library: you will need to download and install it on your machine :ul
-
-:line
-:line
-
-[Standard packages] :link(table_standard),p
-
-Package, Description, Doc page, Example, Library
-"ASPHERE"_#ASPHERE, aspherical particle models, "Section 6.6.14"_Section_howto.html#howto_14, ellipse, -
-"BODY"_#BODY, body-style particles, "body"_body.html, body, -
-"CLASS2"_#CLASS2, class 2 force fields, "pair_style lj/class2"_pair_class2.html, -, -
-"COLLOID"_#COLLOID, colloidal particles, "atom_style colloid"_atom_style.html, colloid, -
-"COMPRESS"_#COMPRESS, I/O compression, "dump */gz"_dump.html, -, sys
-"CORESHELL"_#CORESHELL, adiabatic core/shell model, "Section 6.6.25"_Section_howto.html#howto_25, coreshell, -
-"DIPOLE"_#DIPOLE, point dipole particles, "pair_style dipole/cut"_pair_dipole.html, dipole, -
-"GPU"_#GPU, GPU-enabled styles, "Section 5.3.1"_accelerate_gpu.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, int
-"GRANULAR"_#GRANULAR, granular systems, "Section 6.6.6"_Section_howto.html#howto_6, pour, -
-"KIM"_#KIM, OpenKIM wrapper, "pair_style kim"_pair_kim.html, kim, ext
-"KOKKOS"_#KOKKOS, Kokkos-enabled styles, "Section 5.3.3"_accelerate_kokkos.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
-"KSPACE"_#KSPACE, long-range Coulombic solvers, "kspace_style"_kspace_style.html, peptide, -
-"LATTE"_#LATTE, quantum DFTB forces via LATTE, "fix latte"_fix_latte.html, latte, ext
-"MANYBODY"_#MANYBODY, many-body potentials, "pair_style tersoff"_pair_tersoff.html, shear, -
-"MC"_#MC, Monte Carlo options, "fix gcmc"_fix_gcmc.html, -, -
-"MEAM"_#MEAM, modified EAM potential, "pair_style meam"_pair_meam.html, meam, int
-"MISC"_#MISC, miscellanous single-file commands, -, -, -
-"MOLECULE"_#MOLECULE, molecular system force fields, "Section 6.6.3"_Section_howto.html#howto_3, peptide, -
-"MPIIO"_#MPIIO, MPI parallel I/O dump and restart, "dump"_dump.html, -, -
-"MSCG"_#MSCG, multi-scale coarse-graining wrapper, "fix mscg"_fix_mscg.html, mscg, ext
-"OPT"_#OPT, optimized pair styles, "Section 5.3.5"_accelerate_opt.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
-"PERI"_#PERI, Peridynamics models, "pair_style peri"_pair_peri.html, peri, -
-"POEMS"_#POEMS, coupled rigid body motion, "fix poems"_fix_poems.html, rigid, int
-"PYTHON"_#PYTHON, embed Python code in an input script, "python"_python.html, python, sys
-"QEQ"_#QEQ, QEq charge equilibration, "fix qeq"_fix_qeq.html, qeq, -
-"REAX"_#REAX, ReaxFF potential (Fortran), "pair_style reax"_pair_reax.html, reax, int
-"REPLICA"_#REPLICA, multi-replica methods, "Section 6.6.5"_Section_howto.html#howto_5, tad, -
-"RIGID"_#RIGID, rigid bodies and constraints, "fix rigid"_fix_rigid.html, rigid, -
-"SHOCK"_#SHOCK, shock loading methods, "fix msst"_fix_msst.html, -, -
-"SNAP"_#SNAP, quantum-fitted potential, "pair_style snap"_pair_snap.html, snap, -
-"SPIN"_#SPIN, magnetic atomic spin dynamics, "Section 6.6.28"_Section_howto.html#howto_28, SPIN, -
-"SRD"_#SRD, stochastic rotation dynamics, "fix srd"_fix_srd.html, srd, -
-"VORONOI"_#VORONOI, Voronoi tesselation, "compute voronoi/atom"_compute_voronoi_atom.html, -, ext :tb(ea=c,ca1=l)
-
-[USER packages] :link(table_user),p
-
-Package, Description, Doc page, Example, Library
-"USER-ATC"_#USER-ATC, atom-to-continuum coupling, "fix atc"_fix_atc.html, USER/atc, int
-"USER-AWPMD"_#USER-AWPMD, wave-packet MD, "pair_style awpmd/cut"_pair_awpmd.html, USER/awpmd, int
-"USER-BOCS"_#USER-BOCS, BOCS bottom up coarse graining, "fix bocs"_fix_bocs.html, USER/bocs, -
-"USER-CGDNA"_#USER-CGDNA, coarse-grained DNA force fields, src/USER-CGDNA/README, USER/cgdna, -
-"USER-CGSDK"_#USER-CGSDK, SDK coarse-graining model, "pair_style lj/sdk"_pair_sdk.html, USER/cgsdk, -
-"USER-COLVARS"_#USER-COLVARS, collective variables library, "fix colvars"_fix_colvars.html, USER/colvars, int
-"USER-DIFFRACTION"_#USER-DIFFRACTION, virtual x-ray and electron diffraction,"compute xrd"_compute_xrd.html, USER/diffraction, -
-"USER-DPD"_#USER-DPD, reactive dissipative particle dynamics, src/USER-DPD/README, USER/dpd, -
-"USER-DRUDE"_#USER-DRUDE, Drude oscillators, "tutorial"_tutorial_drude.html, USER/drude, -
-"USER-EFF"_#USER-EFF, electron force field,"pair_style eff/cut"_pair_eff.html, USER/eff, -
-"USER-FEP"_#USER-FEP, free energy perturbation,"compute fep"_compute_fep.html, USER/fep, -
-"USER-H5MD"_#USER-H5MD, dump output via HDF5,"dump h5md"_dump_h5md.html, -, ext
-"USER-INTEL"_#USER-INTEL, optimized Intel CPU and KNL styles,"Section 5.3.2"_accelerate_intel.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
-"USER-LB"_#USER-LB, Lattice Boltzmann fluid,"fix lb/fluid"_fix_lb_fluid.html, USER/lb, -
-"USER-MANIFOLD"_#USER-MANIFOLD, motion on 2d surfaces,"fix manifoldforce"_fix_manifoldforce.html, USER/manifold, -
-"USER-MEAMC"_#USER-MEAMC, modified EAM potential (C++), "pair_style meam/c"_pair_meam.html, meam, -
-"USER-MESO"_#USER-MESO, mesoscale DPD models, "pair_style edpd"_pair_meso.html, USER/meso, -
-"USER-MGPT"_#USER-MGPT, fast MGPT multi-ion potentials, "pair_style mgpt"_pair_mgpt.html, USER/mgpt, -
-"USER-MISC"_#USER-MISC, single-file contributions, USER-MISC/README, USER/misc, -
-"USER-MOFFF"_#USER-MOFFF, styles for "MOF-FF"_MOFplus force field, "pair_style buck6d/coul/gauss"_pair_buck6d_coul_gauss.html, USER/mofff, -
-"USER-MOLFILE"_#USER-MOLFILE, "VMD"_vmd_home molfile plug-ins,"dump molfile"_dump_molfile.html, -, ext
-"USER-NETCDF"_#USER-NETCDF, dump output via NetCDF,"dump netcdf"_dump_netcdf.html, -, ext
-"USER-OMP"_#USER-OMP, OpenMP-enabled styles,"Section 5.3.4"_accelerate_omp.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
-"USER-PHONON"_#USER-PHONON, phonon dynamical matrix,"fix phonon"_fix_phonon.html, USER/phonon, -
-"USER-QMMM"_#USER-QMMM, QM/MM coupling,"fix qmmm"_fix_qmmm.html, USER/qmmm, ext
-"USER-QTB"_#USER-QTB, quantum nuclear effects,"fix qtb"_fix_qtb.html "fix qbmsst"_fix_qbmsst.html, qtb, -
-"USER-QUIP"_#USER-QUIP, QUIP/libatoms interface,"pair_style quip"_pair_quip.html, USER/quip, ext
-"USER-REAXC"_#USER-REAXC, ReaxFF potential (C/C++) ,"pair_style reaxc"_pair_reaxc.html, reax, -
-"USER-SMD"_#USER-SMD, smoothed Mach dynamics,"SMD User Guide"_PDF/SMD_LAMMPS_userguide.pdf, USER/smd, ext
-"USER-SMTBQ"_#USER-SMTBQ, second moment tight binding QEq potential,"pair_style smtbq"_pair_smtbq.html, USER/smtbq, -
-"USER-SPH"_#USER-SPH, smoothed particle hydrodynamics,"SPH User Guide"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, -
-"USER-TALLY"_#USER-TALLY, pairwise tally computes,"compute XXX/tally"_compute_tally.html, USER/tally, -
-"USER-UEF"_#USER-UEF, extensional flow,"fix nvt/uef"_fix_nh_uef.html, USER/uef, -
-"USER-VTK"_#USER-VTK, dump output via VTK, "compute vtk"_dump_vtk.html, -, ext :tb(ea=c,ca1=l)
+you can examine the files in its src directory, e.g. "ls
+src/GRANULAR".  Files with names that start with fix, compute, atom,
+pair, bond, angle, etc correspond to commands with the same style name
+as contained in the file name.
+
+"ASPHERE"_#ASPHERE,
+"BODY"_#BODY,
+"CLASS2"_#CLASS2,
+"COLLOID"_#COLLOID,
+"COMPRESS"_#COMPRESS,
+"CORESHELL"_#CORESHELL,
+"DIPOLE"_#DIPOLE,
+"GPU"_#GPU,
+"GRANULAR"_#GRANULAR,
+"KIM"_#KIM,
+"KOKKOS"_#KOKKOS,
+"KSPACE"_#KSPACE,
+"LATTE"_#LATTE,
+"MANYBODY"_#MANYBODY,
+"MC"_#MC,
+"MEAM"_#MEAM,
+"MISC"_#MISC,
+"MOLECULE"_#MOLECULE,
+"MPIIO"_#MPIIO,
+"MSCG"_#MSCG,
+"OPT"_#OPT,
+"PERI"_#PERI,
+"POEMS"_#POEMS,
+"PYTHON"_#PYTHON,
+"QEQ"_#QEQ,
+"REAX"_#REAX,
+"REPLICA"_#REPLICA,
+"RIGID"_#RIGID,
+"SHOCK"_#SHOCK,
+"SNAP"_#SNAP,
+"SRD"_#SRD,
+"VORONOI"_#VORONOI :tb(c=6,ea=c)
+
+"USER-ATC"_#USER-ATC,
+"USER-AWPMD"_#USER-AWPMD,
+"USER-BOCS"_#USER-BOCS,
+"USER-CGDNA"_#USER-CGDNA,
+"USER-CGSDK"_#USER-CGSDK,
+"USER-COLVARS"_#USER-COLVARS,
+"USER-DIFFRACTION"_#USER-DIFFRACTION,
+"USER-DPD"_#USER-DPD,
+"USER-DRUDE"_#USER-DRUDE,
+"USER-EFF"_#USER-EFF,
+"USER-FEP"_#USER-FEP,
+"USER-H5MD"_#USER-H5MD,
+"USER-INTEL"_#USER-INTEL,
+"USER-LB"_#USER-LB,
+"USER-MANIFOLD"_#USER-MANIFOLD,
+"USER-MEAMC"_#USER-MEAMC,
+"USER-MESO"_#USER-MESO,
+"USER-MGPT"_#USER-MGPT,
+"USER-MISC"_#USER-MISC,
+"USER-MOFFF"_#USER-MOFFF,
+"USER-MOLFILE"_#USER-MOLFILE,
+"USER-NETCDF"_#USER-NETCDF,
+"USER-OMP"_#USER-OMP,
+"USER-PHONON"_#USER-PHONON,
+"USER-QMMM"_#USER-QMMM,
+"USER-QTB"_#USER-QTB,
+"USER-QUIP"_#USER-QUIP,
+"USER-REAXC"_#USER-REAXC,
+"USER-SMD"_#USER-SMD,
+"USER-SMTBQ"_#USER-SMTBQ,
+"USER-SPH"_#USER-SPH,
+"USER-TALLY"_#USER-TALLY,
+"USER-UEF"_#USER-UEF,
+"USER-VTK"_#USER-VTK :tb(c=6,ea=c)
 
 :line
 :line
@@ -380,14 +316,14 @@ GPU package :link(GPU),h4
 [Contents:]
 
 Dozens of pair styles and a version of the PPPM long-range Coulombic
-solver optimized for GPUs.  All such styles have a "gpu" as a
-suffix in their style name. The GPU code can be compiled with either
-CUDA or OpenCL, however the OpenCL variants are no longer actively
-maintained and only the CUDA versions are regularly tested.
-"Section 5.3.1"_accelerate_gpu.html gives details of what
-hardware and GPU software is required on your system,
-and details on how to build and use this package.  Its styles can be
-invoked at run time via the "-sf gpu" or "-suffix gpu" "command-line
+solver optimized for GPUs.  All such styles have a "gpu" as a suffix
+in their style name. The GPU code can be compiled with either CUDA or
+OpenCL, however the OpenCL variants are no longer actively maintained
+and only the CUDA versions are regularly tested.  The "Speed
+gpu"_Speed_gpu.html doc page gives details of what hardware and GPU
+software is required on your system, and details on how to build and
+use this package.  Its styles can be invoked at run time via the "-sf
+gpu" or "-suffix gpu" "command-line
 switches"_Section_start.html#start_6.  See also the "KOKKOS"_#KOKKOS
 package, which has GPU-enabled styles.
 
@@ -453,8 +389,8 @@ GPU library.
 src/GPU: filenames -> commands
 src/GPU/README
 lib/gpu/README
-"Section 5.3"_Section_accelerate.html#acc_3
-"Section 5.3.1"_accelerate_gpu.html
+"Speed packages"_Speed_packages.html
+"Speed gpu"_Speed_gpu.html.html
 "Section 2.6 -sf gpu"_Section_start.html#start_6
 "Section 2.6 -pk gpu"_Section_start.html#start_6
 "package gpu"_package.html
@@ -579,10 +515,10 @@ Dozens of atom, pair, bond, angle, dihedral, improper, fix, compute
 styles adapted to compile using the Kokkos library which can convert
 them to OpenMP or CUDA code so that they run efficiently on multicore
 CPUs, KNLs, or GPUs.  All the styles have a "kk" as a suffix in their
-style name.  "Section 5.3.3"_accelerate_kokkos.html gives details of
-what hardware and software is required on your system, and how to
-build and use this package.  Its styles can be invoked at run time via
-the "-sf kk" or "-suffix kk" "command-line
+style name.  The "Speed kokkos"_Speed_kokkos.html doc page gives
+details of what hardware and software is required on your system, and
+how to build and use this package.  Its styles can be invoked at run
+time via the "-sf kk" or "-suffix kk" "command-line
 switches"_Section_start.html#start_6.  Also see the "GPU"_#GPU,
 "OPT"_#OPT, "USER-INTEL"_#USER-INTEL, and "USER-OMP"_#USER-OMP
 packages, which have styles optimized for CPUs, KNLs, and GPUs.
@@ -649,8 +585,8 @@ make machine :pre
 src/KOKKOS: filenames -> commands
 src/KOKKOS/README
 lib/kokkos/README
-"Section 5.3"_Section_accelerate.html#acc_3
-"Section 5.3.3"_accelerate_kokkos.html
+"Speed packages"_Speed_packages.html
+"Speed kokkos"_Speed_kokkos.html
 "Section 2.6 -k on ..."_Section_start.html#start_6
 "Section 2.6 -sf kk"_Section_start.html#start_6
 "Section 2.6 -pk kokkos"_Section_start.html#start_6
@@ -1048,9 +984,9 @@ OPT package :link(OPT),h4
 A handful of pair styles which are optimized for improved CPU
 performance on single or multiple cores.  These include EAM, LJ,
 CHARMM, and Morse potentials.  The styles have an "opt" suffix in
-their style name.  "Section 5.3.5"_accelerate_opt.html gives details
-of how to build and use this package.  Its styles can be invoked at
-run time via the "-sf opt" or "-suffix opt" "command-line
+their style name.  The "Speed opt"_Speed_opt.html doc page gives
+details of how to build and use this package.  Its styles can be
+invoked at run time via the "-sf opt" or "-suffix opt" "command-line
 switches"_Section_start.html#start_6.  See also the "KOKKOS"_#KOKKOS,
 "USER-INTEL"_#USER-INTEL, and "USER-OMP"_#USER-OMP packages, which
 have styles optimized for CPU performance.
@@ -1076,8 +1012,8 @@ CCFLAGS: add -restrict for Intel compilers :ul
 [Supporting info:]
 
 src/OPT: filenames -> commands
-"Section 5.3"_Section_accelerate.html#acc_3
-"Section 5.3.5"_accelerate_opt.html
+"Speed packages"_Speed_packages.html
+"Speed opt"_Speed_opt.html
 "Section 2.6 -sf opt"_Section_start.html#start_6
 Pair Styles section of "Section 3.5"_Section_commands.html#cmd_5 for pair styles followed by (t)
 "Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
@@ -1178,10 +1114,10 @@ PYTHON package :link(PYTHON),h4
 
 A "python"_python.html command which allow you to execute Python code
 from a LAMMPS input script.  The code can be in a separate file or
-embedded in the input script itself.  See the "Python
-call"_Python_call.html doc page for an overview of using Python from
-LAMMPS in this manner and the "Python"_Python.html doc page for other
-ways to use LAMMPS and Python together.
+embedded in the input script itself.  See "Section
+11.2"_Section_python.html#py_2 for an overview of using Python from
+LAMMPS in this manner and the entire section for other ways to use
+LAMMPS and Python together.
 
 [Install or un-install:]
 
@@ -1202,7 +1138,7 @@ to Makefile.lammps) if the LAMMPS build fails.
 [Supporting info:]
 
 src/PYTHON: filenames -> commands
-"Python call"_Python_call.html
+"Section 11"_Section_python.html
 lib/python/README
 examples/python :ul
 
@@ -1415,38 +1351,6 @@ examples/snap :ul
 
 :line
 
-SPIN package :link(SPIN),h4
-
-[Contents:]
-
-Model atomic magnetic spins classically, coupled to atoms moving in
-the usual manner via MD.  Various pair, fix, and compute styles.
-
-[Author:] Julian Tranchida (Sandia).
-
-[Install or un-install:]
-
-make yes-spin
-make machine :pre
-
-make no-spin
-make machine :pre
-
-[Supporting info:]
-
-src/SPIN: filenames -> commands
-"Section 6.28"_Section_howto.html#howto_28
-"pair_style spin/dmi"_pair_spin_dmi.html
-"pair_style spin/exchange"_pair_spin_exchange.html
-"pair_style spin/magelec"_pair_spin_magelec.html
-"pair_style spin/neel"_pair_spin_neel.html
-"fix nve/spin"_fix_nve_spin.html
-"fix precession/spin"_fix_precession_spin.html
-"compute spin"_compute_spin.html
-examples/SPIN :ul
-
-:line
-
 SRD package :link(SRD),h4
 
 [Contents:]
@@ -2065,8 +1969,8 @@ USER-INTEL package :link(USER-INTEL),h4
 
 Dozens of pair, fix, bond, angle, dihedral, improper, and kspace
 styles which are optimized for Intel CPUs and KNLs (Knights Landing).
-All of them have an "intel" in their style name.  "Section
-5.3.2"_accelerate_intel.html gives details of what hardware and
+All of them have an "intel" in their style name.  The "Speed
+intel"_Speed_intel.html doc page gives details of what hardware and
 compilers are required on your system, and how to build and use this
 package.  Its styles can be invoked at run time via the "-sf intel" or
 "-suffix intel" "command-line switches"_Section_start.html#start_6.
@@ -2116,7 +2020,7 @@ hardware target, to produce a separate executable.
 
 You should also typically install the USER-OMP package, as it can be
 used in tandem with the USER-INTEL package to good effect, as
-explained in "Section 5.3.2"_accelerate_intel.html.
+explained on the "Speed intel"_Speed_intel.html doc page.
 
 make yes-user-intel yes-user-omp
 make machine :pre
@@ -2128,8 +2032,8 @@ make machine :pre
 
 src/USER-INTEL: filenames -> commands
 src/USER-INTEL/README
-"Section 5.3"_Section_accelerate.html#acc_3
-"Section 5.3.2"_accelerate_gpu.html
+"Speed packages"_Speed_packages.html
+"Speed intel"_Speed_intel.html
 "Section 2.6 -sf intel"_Section_start.html#start_6
 "Section 2.6 -pk intel"_Section_start.html#start_6
 "package intel"_package.html
@@ -2475,10 +2379,10 @@ USER-OMP package :link(USER-OMP),h4
 Hundreds of pair, fix, compute, bond, angle, dihedral, improper, and
 kspace styles which are altered to enable threading on many-core CPUs
 via OpenMP directives.  All of them have an "omp" in their style name.
-"Section 5.3.4"_accelerate_omp.html gives details of what hardware and
-compilers are required on your system, and how to build and use this
-package.  Its styles can be invoked at run time via the "-sf omp" or
-"-suffix omp" "command-line switches"_Section_start.html#start_6.
+The "Speed omp"_Speed_omp.html doc page gives details of what hardware
+and compilers are required on your system, and how to build and use
+this package.  Its styles can be invoked at run time via the "-sf omp"
+or "-suffix omp" "command-line switches"_Section_start.html#start_6.
 Also see the "KOKKOS"_#KOKKOS, "OPT"_#OPT, and
 "USER-INTEL"_#USER-INTEL packages, which have styles optimized for
 CPUs.
@@ -2513,8 +2417,8 @@ LINKFLAGS: add -fopenmp :ul
 
 src/USER-OMP: filenames -> commands
 src/USER-OMP/README
-"Section 5.3"_Section_accelerate.html#acc_3
-"Section 5.3.4"_accelerate_omp.html
+"Speed packages"_Speed_packages.html
+"Speed omp"_Speed_omp.html
 "Section 2.6 -sf omp"_Section_start.html#start_6
 "Section 2.6 -pk omp"_Section_start.html#start_6
 "package omp"_package.html
diff --git a/doc/src/Packages_standard.txt b/doc/src/Packages_standard.txt
new file mode 100644
index 0000000000..095bf699a6
--- /dev/null
+++ b/doc/src/Packages_standard.txt
@@ -0,0 +1,65 @@
+"Higher level section"_Packages.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Standard packages :h3
+
+This is the list of standard packages in LAMMPS.  The link for each
+package name gives more details.
+
+Standard packages are supported by the LAMMPS developers and are
+written in a syntax and style consistent with the rest of LAMMPS.
+This means the developers will answer questions about them, debug and
+fix them if necessary, and keep them compatible with future changes to
+LAMMPS.
+
+The "Example" column is a sub-directory in the examples directory of
+the distribution which has an input script that uses the package.
+E.g. "peptide" refers to the examples/peptide directory; USER/atc
+refers to the examples/USER/atc directory.  The "Library" column
+indicates whether an extra library is needed to build and use the
+package:
+
+dash = no library
+sys = system library: you likely have it on your machine
+int = internal library: provided with LAMMPS, but you may need to build it
+ext = external library: you will need to download and install it on your machine :ul
+
+Package, Description, Doc page, Example, Library
+"ASPHERE"_Packages_details.html#ASPHERE, aspherical particle models, "Section 6.6.14"_Section_howto.html#howto_14, ellipse, -
+"BODY"_Packages_details.html#BODY, body-style particles, "body"_body.html, body, -
+"CLASS2"_Packages_details.html#CLASS2, class 2 force fields, "pair_style lj/class2"_pair_class2.html, -, -
+"COLLOID"_Packages_details.html#COLLOID, colloidal particles, "atom_style colloid"_atom_style.html, colloid, -
+"COMPRESS"_Packages_details.html#COMPRESS, I/O compression, "dump */gz"_dump.html, -, sys
+"CORESHELL"_Packages_details.html#CORESHELL, adiabatic core/shell model, "Section 6.6.25"_Section_howto.html#howto_25, coreshell, -
+"DIPOLE"_Packages_details.html#DIPOLE, point dipole particles, "pair_style dipole/cut"_pair_dipole.html, dipole, -
+"GPU"_Packages_details.html#GPU, GPU-enabled styles, "Section gpu"_Speed_gpu.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, int
+"GRANULAR"_Packages_details.html#GRANULAR, granular systems, "Section 6.6.6"_Section_howto.html#howto_6, pour, -
+"KIM"_Packages_details.html#KIM, OpenKIM wrapper, "pair_style kim"_pair_kim.html, kim, ext
+"KOKKOS"_Packages_details.html#KOKKOS, Kokkos-enabled styles, "Speed kokkos"_Speed_kokkos.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
+"KSPACE"_Packages_details.html#KSPACE, long-range Coulombic solvers, "kspace_style"_kspace_style.html, peptide, -
+"LATTE"_Packages_details.html#LATTE, quantum DFTB forces via LATTE, "fix latte"_fix_latte.html, latte, ext
+"MANYBODY"_Packages_details.html#MANYBODY, many-body potentials, "pair_style tersoff"_pair_tersoff.html, shear, -
+"MC"_Packages_details.html#MC, Monte Carlo options, "fix gcmc"_fix_gcmc.html, -, -
+"MEAM"_Packages_details.html#MEAM, modified EAM potential, "pair_style meam"_pair_meam.html, meam, int
+"MISC"_Packages_details.html#MISC, miscellanous single-file commands, -, -, -
+"MOLECULE"_Packages_details.html#MOLECULE, molecular system force fields, "Section 6.6.3"_Section_howto.html#howto_3, peptide, -
+"MPIIO"_Packages_details.html#MPIIO, MPI parallel I/O dump and restart, "dump"_dump.html, -, -
+"MSCG"_Packages_details.html#MSCG, multi-scale coarse-graining wrapper, "fix mscg"_fix_mscg.html, mscg, ext
+"OPT"_Packages_details.html#OPT, optimized pair styles, "Speed opt"_Speed_opt.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
+"PERI"_Packages_details.html#PERI, Peridynamics models, "pair_style peri"_pair_peri.html, peri, -
+"POEMS"_Packages_details.html#POEMS, coupled rigid body motion, "fix poems"_fix_poems.html, rigid, int
+"PYTHON"_Packages_details.html#PYTHON, embed Python code in an input script, "python"_python.html, python, sys
+"QEQ"_Packages_details.html#QEQ, QEq charge equilibration, "fix qeq"_fix_qeq.html, qeq, -
+"REAX"_Packages_details.html#REAX, ReaxFF potential (Fortran), "pair_style reax"_pair_reax.html, reax, int
+"REPLICA"_Packages_details.html#REPLICA, multi-replica methods, "Section 6.6.5"_Section_howto.html#howto_5, tad, -
+"RIGID"_Packages_details.html#RIGID, rigid bodies and constraints, "fix rigid"_fix_rigid.html, rigid, -
+"SHOCK"_Packages_details.html#SHOCK, shock loading methods, "fix msst"_fix_msst.html, -, -
+"SNAP"_Packages_details.html#SNAP, quantum-fitted potential, "pair_style snap"_pair_snap.html, snap, -
+"SRD"_Packages_details.html#SRD, stochastic rotation dynamics, "fix srd"_fix_srd.html, srd, -
+"VORONOI"_Packages_details.html#VORONOI, Voronoi tesselation, "compute voronoi/atom"_compute_voronoi_atom.html, -, ext :tb(ea=c,ca1=l)
diff --git a/doc/src/Packages_user.txt b/doc/src/Packages_user.txt
new file mode 100644
index 0000000000..73c7fdb65d
--- /dev/null
+++ b/doc/src/Packages_user.txt
@@ -0,0 +1,74 @@
+"Higher level section"_Packages.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+User packages :h3
+
+This is a list of user packages in LAMMPS.  The link for each package
+name gives more details.
+
+User packages have been contributed by users, and begin with the
+"user" prefix.  If a contribution is a single command (single file),
+it is typically in the user-misc package.  User packages don't
+necessarily meet the requirements of the "standard
+packages"_Packages_standard.html. This means the developers will try
+to keep things working and usually can answer technical questions
+about compiling the package. If you have problems using a specific
+feature provided in a user package, you may need to contact the
+contributor directly to get help.  Information on how to submit
+additions you make to LAMMPS as single files or as a standard or user
+package is explained on the "Modify contribute"_Modify_contribute.html
+doc page.
+
+The "Example" column is a sub-directory in the examples directory of
+the distribution which has an input script that uses the package.
+E.g. "peptide" refers to the examples/peptide directory; USER/atc
+refers to the examples/USER/atc directory.  The "Library" column
+indicates whether an extra library is needed to build and use the
+package:
+
+dash = no library
+sys = system library: you likely have it on your machine
+int = internal library: provided with LAMMPS, but you may need to build it
+ext = external library: you will need to download and install it on your machine :ul
+
+Package, Description, Doc page, Example, Library
+"USER-ATC"_Packages_details.html#USER-ATC, atom-to-continuum coupling, "fix atc"_fix_atc.html, USER/atc, int
+"USER-AWPMD"_Packages_details.html#USER-AWPMD, wave-packet MD, "pair_style awpmd/cut"_pair_awpmd.html, USER/awpmd, int
+"USER-BOCS"_Packages_details.html#USER-BOCS, BOCS bottom up coarse graining, "fix bocs"_fix_bocs.html, USER/bocs, -
+"USER-CGDNA"_Packages_details.html#USER-CGDNA, coarse-grained DNA force fields, src/USER-CGDNA/README, USER/cgdna, -
+"USER-CGSDK"_Packages_details.html#USER-CGSDK, SDK coarse-graining model, "pair_style lj/sdk"_pair_sdk.html, USER/cgsdk, -
+"USER-COLVARS"_Packages_details.html#USER-COLVARS, collective variables library, "fix colvars"_fix_colvars.html, USER/colvars, int
+"USER-DIFFRACTION"_Packages_details.html#USER-DIFFRACTION, virtual x-ray and electron diffraction,"compute xrd"_compute_xrd.html, USER/diffraction, -
+"USER-DPD"_Packages_details.html#USER-DPD, reactive dissipative particle dynamics, src/USER-DPD/README, USER/dpd, -
+"USER-DRUDE"_Packages_details.html#USER-DRUDE, Drude oscillators, "tutorial"_tutorial_drude.html, USER/drude, -
+"USER-EFF"_Packages_details.html#USER-EFF, electron force field,"pair_style eff/cut"_pair_eff.html, USER/eff, -
+"USER-FEP"_Packages_details.html#USER-FEP, free energy perturbation,"compute fep"_compute_fep.html, USER/fep, -
+"USER-H5MD"_Packages_details.html#USER-H5MD, dump output via HDF5,"dump h5md"_dump_h5md.html, -, ext
+"USER-INTEL"_Packages_details.html#USER-INTEL, optimized Intel CPU and KNL styles,"Speed intel"_Speed_intel.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
+"USER-LB"_Packages_details.html#USER-LB, Lattice Boltzmann fluid,"fix lb/fluid"_fix_lb_fluid.html, USER/lb, -
+"USER-MANIFOLD"_Packages_details.html#USER-MANIFOLD, motion on 2d surfaces,"fix manifoldforce"_fix_manifoldforce.html, USER/manifold, -
+"USER-MEAMC"_Packages_details.html#USER-MEAMC, modified EAM potential (C++), "pair_style meam/c"_pair_meam.html, meam, -
+"USER-MESO"_Packages_details.html#USER-MESO, mesoscale DPD models, "pair_style edpd"_pair_meso.html, USER/meso, -
+"USER-MGPT"_Packages_details.html#USER-MGPT, fast MGPT multi-ion potentials, "pair_style mgpt"_pair_mgpt.html, USER/mgpt, -
+"USER-MISC"_Packages_details.html#USER-MISC, single-file contributions, USER-MISC/README, USER/misc, -
+"USER-MOFFF"_Packages_details.html#USER-MOFFF, styles for "MOF-FF"_MOFplus force field, "pair_style buck6d/coul/gauss"_pair_buck6d_coul_gauss.html, USER/mofff, -
+"USER-MOLFILE"_Packages_details.html#USER-MOLFILE, "VMD"_vmd_home molfile plug-ins,"dump molfile"_dump_molfile.html, -, ext
+"USER-NETCDF"_Packages_details.html#USER-NETCDF, dump output via NetCDF,"dump netcdf"_dump_netcdf.html, -, ext
+"USER-OMP"_Packages_details.html#USER-OMP, OpenMP-enabled styles,"Speed omp"_Speed_omp.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
+"USER-PHONON"_Packages_details.html#USER-PHONON, phonon dynamical matrix,"fix phonon"_fix_phonon.html, USER/phonon, -
+"USER-QMMM"_Packages_details.html#USER-QMMM, QM/MM coupling,"fix qmmm"_fix_qmmm.html, USER/qmmm, ext
+"USER-QTB"_Packages_details.html#USER-QTB, quantum nuclear effects,"fix qtb"_fix_qtb.html "fix qbmsst"_fix_qbmsst.html, qtb, -
+"USER-QUIP"_Packages_details.html#USER-QUIP, QUIP/libatoms interface,"pair_style quip"_pair_quip.html, USER/quip, ext
+"USER-REAXC"_Packages_details.html#USER-REAXC, ReaxFF potential (C/C++) ,"pair_style reaxc"_pair_reaxc.html, reax, -
+"USER-SMD"_Packages_details.html#USER-SMD, smoothed Mach dynamics,"SMD User Guide"_PDF/SMD_LAMMPS_userguide.pdf, USER/smd, ext
+"USER-SMTBQ"_Packages_details.html#USER-SMTBQ, second moment tight binding QEq potential,"pair_style smtbq"_pair_smtbq.html, USER/smtbq, -
+"USER-SPH"_Packages_details.html#USER-SPH, smoothed particle hydrodynamics,"SPH User Guide"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, -
+"USER-TALLY"_Packages_details.html#USER-TALLY, pairwise tally computes,"compute XXX/tally"_compute_tally.html, USER/tally, -
+"USER-UEF"_Packages_details.html#USER-UEF, extensional flow,"fix nvt/uef"_fix_nh_uef.html, USER/uef, -
+"USER-VTK"_Packages_details.html#USER-VTK, dump output via VTK, "compute vtk"_dump_vtk.html, -, ext :tb(ea=c,ca1=l)
diff --git a/doc/src/Section_accelerate.txt b/doc/src/Section_accelerate.txt
deleted file mode 100644
index d5cbf77a84..0000000000
--- a/doc/src/Section_accelerate.txt
+++ /dev/null
@@ -1,391 +0,0 @@
-"Previous Section"_Section_packages.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Section_howto.html :c
-
-:link(lws,http://lammps.sandia.gov)
-:link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
-
-:line
-
-5. Accelerating LAMMPS performance :h2
-
-This section describes various methods for improving LAMMPS
-performance for different classes of problems running on different
-kinds of machines.
-
-There are two thrusts to the discussion that follows.  The
-first is using code options that implement alternate algorithms
-that can speed-up a simulation.  The second is to use one
-of the several accelerator packages provided with LAMMPS that
-contain code optimized for certain kinds of hardware, including
-multi-core CPUs, GPUs, and Intel Xeon Phi coprocessors.
-
-5.1 "Measuring performance"_#acc_1 :ulb,l
-5.2 "Algorithms and code options to boost performace"_#acc_2 :l
-5.3 "Accelerator packages with optimized styles"_#acc_3 :l
-    5.3.1 "GPU package"_accelerate_gpu.html :l
-    5.3.2 "USER-INTEL package"_accelerate_intel.html :l
-    5.3.3 "KOKKOS package"_accelerate_kokkos.html :l
-    5.3.4 "USER-OMP package"_accelerate_omp.html :l
-    5.3.5 "OPT package"_accelerate_opt.html :l
-5.4 "Comparison of various accelerator packages"_#acc_4 :l
-:ule
-
-The "Benchmark page"_http://lammps.sandia.gov/bench.html of the LAMMPS
-web site gives performance results for the various accelerator
-packages discussed in Section 5.2, for several of the standard LAMMPS
-benchmark problems, as a function of problem size and number of
-compute nodes, on different hardware platforms.
-
-:line
-:line
-
-5.1 Measuring performance :h3,link(acc_1)
-
-Before trying to make your simulation run faster, you should
-understand how it currently performs and where the bottlenecks are.
-
-The best way to do this is run the your system (actual number of
-atoms) for a modest number of timesteps (say 100 steps) on several
-different processor counts, including a single processor if possible.
-Do this for an equilibrium version of your system, so that the
-100-step timings are representative of a much longer run.  There is
-typically no need to run for 1000s of timesteps to get accurate
-timings; you can simply extrapolate from short runs.
-
-For the set of runs, look at the timing data printed to the screen and
-log file at the end of each LAMMPS run.  "This
-section"_Section_start.html#start_7 of the manual has an overview.
-
-Running on one (or a few processors) should give a good estimate of
-the serial performance and what portions of the timestep are taking
-the most time.  Running the same problem on a few different processor
-counts should give an estimate of parallel scalability.  I.e. if the
-simulation runs 16x faster on 16 processors, its 100% parallel
-efficient; if it runs 8x faster on 16 processors, it's 50% efficient.
-
-The most important data to look at in the timing info is the timing
-breakdown and relative percentages.  For example, trying different
-options for speeding up the long-range solvers will have little impact
-if they only consume 10% of the run time.  If the pairwise time is
-dominating, you may want to look at GPU or OMP versions of the pair
-style, as discussed below.  Comparing how the percentages change as
-you increase the processor count gives you a sense of how different
-operations within the timestep are scaling.  Note that if you are
-running with a Kspace solver, there is additional output on the
-breakdown of the Kspace time.  For PPPM, this includes the fraction
-spent on FFTs, which can be communication intensive.
-
-Another important detail in the timing info are the histograms of
-atoms counts and neighbor counts.  If these vary widely across
-processors, you have a load-imbalance issue.  This often results in
-inaccurate relative timing data, because processors have to wait when
-communication occurs for other processors to catch up.  Thus the
-reported times for "Communication" or "Other" may be higher than they
-really are, due to load-imbalance.  If this is an issue, you can
-uncomment the MPI_Barrier() lines in src/timer.cpp, and recompile
-LAMMPS, to obtain synchronized timings.
-
-:line
-
-5.2 General strategies :h3,link(acc_2)
-
-NOTE: this section 5.2 is still a work in progress
-
-Here is a list of general ideas for improving simulation performance.
-Most of them are only applicable to certain models and certain
-bottlenecks in the current performance, so let the timing data you
-generate be your guide.  It is hard, if not impossible, to predict how
-much difference these options will make, since it is a function of
-problem size, number of processors used, and your machine.  There is
-no substitute for identifying performance bottlenecks, and trying out
-various options.
-
-rRESPA
-2-FFT PPPM
-Staggered PPPM
-single vs double PPPM
-partial charge PPPM
-verlet/split run style
-processor command for proc layout and numa layout
-load-balancing: balance and fix balance :ul
-
-2-FFT PPPM, also called {analytic differentiation} or {ad} PPPM, uses
-2 FFTs instead of the 4 FFTs used by the default {ik differentiation}
-PPPM. However, 2-FFT PPPM also requires a slightly larger mesh size to
-achieve the same accuracy as 4-FFT PPPM. For problems where the FFT
-cost is the performance bottleneck (typically large problems running
-on many processors), 2-FFT PPPM may be faster than 4-FFT PPPM.
-
-Staggered PPPM performs calculations using two different meshes, one
-shifted slightly with respect to the other.  This can reduce force
-aliasing errors and increase the accuracy of the method, but also
-doubles the amount of work required. For high relative accuracy, using
-staggered PPPM allows one to half the mesh size in each dimension as
-compared to regular PPPM, which can give around a 4x speedup in the
-kspace time. However, for low relative accuracy, using staggered PPPM
-gives little benefit and can be up to 2x slower in the kspace
-time. For example, the rhodopsin benchmark was run on a single
-processor, and results for kspace time vs. relative accuracy for the
-different methods are shown in the figure below.  For this system,
-staggered PPPM (using ik differentiation) becomes useful when using a
-relative accuracy of slightly greater than 1e-5 and above.
-
-:c,image(JPG/rhodo_staggered.jpg)
-
-NOTE: Using staggered PPPM may not give the same increase in accuracy
-of energy and pressure as it does in forces, so some caution must be
-used if energy and/or pressure are quantities of interest, such as
-when using a barostat.
-
-:line
-
-5.3 Packages with optimized styles :h3,link(acc_3)
-
-Accelerated versions of various "pair_style"_pair_style.html,
-"fixes"_fix.html, "computes"_compute.html, and other commands have
-been added to LAMMPS, which will typically run faster than the
-standard non-accelerated versions.  Some require appropriate hardware
-to be present on your system, e.g. GPUs or Intel Xeon Phi
-coprocessors.
-
-All of these commands are in packages provided with LAMMPS.  An
-overview of packages is give in "Section
-packages"_Section_packages.html.
-
-These are the accelerator packages
-currently in LAMMPS, either as standard or user packages:
-
-"GPU Package"_accelerate_gpu.html : for NVIDIA GPUs as well as OpenCL support
-"USER-INTEL Package"_accelerate_intel.html : for Intel CPUs and Intel Xeon Phi
-"KOKKOS Package"_accelerate_kokkos.html : for Nvidia GPUs, Intel Xeon Phi, and OpenMP threading
-"USER-OMP Package"_accelerate_omp.html : for OpenMP threading and generic CPU optimizations
-"OPT Package"_accelerate_opt.html : generic CPU optimizations :tb(s=:)
-
-<!-- RST
-
-.. toctree::
-   :maxdepth: 1
-   :hidden:
-
-   accelerate_gpu
-   accelerate_intel
-   accelerate_kokkos
-   accelerate_omp
-   accelerate_opt
-
-END_RST -->
-
-Inverting this list, LAMMPS currently has acceleration support for
-three kinds of hardware, via the listed packages:
-
-Many-core CPUs : "USER-INTEL"_accelerate_intel.html, "KOKKOS"_accelerate_kokkos.html, "USER-OMP"_accelerate_omp.html, "OPT"_accelerate_opt.html packages
-NVIDIA GPUs : "GPU"_accelerate_gpu.html, "KOKKOS"_accelerate_kokkos.html packages
-Intel Phi : "USER-INTEL"_accelerate_intel.html, "KOKKOS"_accelerate_kokkos.html packages :tb(s=:)
-
-Which package is fastest for your hardware may depend on the size
-problem you are running and what commands (accelerated and
-non-accelerated) are invoked by your input script.  While these doc
-pages include performance guidelines, there is no substitute for
-trying out the different packages appropriate to your hardware.
-
-Any accelerated style has the same name as the corresponding standard
-style, except that a suffix is appended.  Otherwise, the syntax for
-the command that uses the style is identical, their functionality is
-the same, and the numerical results it produces should also be the
-same, except for precision and round-off effects.
-
-For example, all of these styles are accelerated variants of the
-Lennard-Jones "pair_style lj/cut"_pair_lj.html:
-
-"pair_style lj/cut/gpu"_pair_lj.html
-"pair_style lj/cut/intel"_pair_lj.html
-"pair_style lj/cut/kk"_pair_lj.html
-"pair_style lj/cut/omp"_pair_lj.html
-"pair_style lj/cut/opt"_pair_lj.html :ul
-
-To see what accelerate styles are currently available, see
-"Section 3.5"_Section_commands.html#cmd_5 of the manual.  The
-doc pages for individual commands (e.g. "pair lj/cut"_pair_lj.html or
-"fix nve"_fix_nve.html) also list any accelerated variants available
-for that style.
-
-To use an accelerator package in LAMMPS, and one or more of the styles
-it provides, follow these general steps.  Details vary from package to
-package and are explained in the individual accelerator doc pages,
-listed above:
-
-build the accelerator library |
-  only for GPU package |
-install the accelerator package |
-  make yes-opt, make yes-user-intel, etc |
-add compile/link flags to Makefile.machine in src/MAKE |
-  only for USER-INTEL, KOKKOS, USER-OMP, OPT packages |
-re-build LAMMPS |
-  make machine |
-prepare and test a regular LAMMPS simulation |
-  lmp_machine -in in.script; mpirun -np 32 lmp_machine -in in.script |
-enable specific accelerator support via '-k on' "command-line switch"_Section_start.html#start_6, |
-  only needed for KOKKOS package |
-set any needed options for the package via "-pk" "command-line switch"_Section_start.html#start_6 or "package"_package.html command, |
-  only if defaults need to be changed |
-use accelerated styles in your input via "-sf" "command-line switch"_Section_start.html#start_6 or "suffix"_suffix.html command | lmp_machine -in in.script -sf gpu
-:tb(c=2,s=|)
-
-Note that the first 4 steps can be done as a single command with
-suitable make command invocations. This is discussed in "Section
-4"_Section_packages.html of the manual, and its use is
-illustrated in the individual accelerator sections.  Typically these
-steps only need to be done once, to create an executable that uses one
-or more accelerator packages.
-
-The last 4 steps can all be done from the command-line when LAMMPS is
-launched, without changing your input script, as illustrated in the
-individual accelerator sections.  Or you can add
-"package"_package.html and "suffix"_suffix.html commands to your input
-script.
-
-NOTE: With a few exceptions, you can build a single LAMMPS executable
-with all its accelerator packages installed.  Note however that the
-USER-INTEL and KOKKOS packages require you to choose one of their
-hardware options when building for a specific platform.  I.e. CPU or
-Phi option for the USER-INTEL package.  Or the OpenMP, Cuda, or Phi
-option for the KOKKOS package.
-
-These are the exceptions.  You cannot build a single executable with:
-
-both the USER-INTEL Phi and KOKKOS Phi options
-the USER-INTEL Phi or Kokkos Phi option, and the GPU package :ul
-
-See the examples/accelerate/README and make.list files for sample
-Make.py commands that build LAMMPS with any or all of the accelerator
-packages.  As an example, here is a command that builds with all the
-GPU related packages installed (GPU, KOKKOS with Cuda), including
-settings to build the needed auxiliary GPU libraries for Kepler GPUs:
-
-Make.py -j 16 -p omp gpu kokkos -cc nvcc wrap=mpi \
-  -gpu mode=double arch=35 -kokkos cuda arch=35 lib-all file mpi :pre
-
-The examples/accelerate directory also has input scripts that can be
-used with all of the accelerator packages.  See its README file for
-details.
-
-Likewise, the bench directory has FERMI and KEPLER and PHI
-sub-directories with Make.py commands and input scripts for using all
-the accelerator packages on various machines.  See the README files in
-those dirs.
-
-As mentioned above, the "Benchmark
-page"_http://lammps.sandia.gov/bench.html of the LAMMPS web site gives
-performance results for the various accelerator packages for several
-of the standard LAMMPS benchmark problems, as a function of problem
-size and number of compute nodes, on different hardware platforms.
-
-Here is a brief summary of what the various packages provide.  Details
-are in the individual accelerator sections.
-
-Styles with a "gpu" suffix are part of the GPU package, and can be run
-on NVIDIA GPUs.  The speed-up on a GPU depends on a variety of
-factors, discussed in the accelerator sections. :ulb,l
-
-Styles with an "intel" suffix are part of the USER-INTEL
-package. These styles support vectorized single and mixed precision
-calculations, in addition to full double precision.  In extreme cases,
-this can provide speedups over 3.5x on CPUs.  The package also
-supports acceleration in "offload" mode to Intel(R) Xeon Phi(TM)
-coprocessors.  This can result in additional speedup over 2x depending
-on the hardware configuration. :l
-
-Styles with a "kk" suffix are part of the KOKKOS package, and can be
-run using OpenMP on multicore CPUs, on an NVIDIA GPU, or on an Intel
-Xeon Phi in "native" mode.  The speed-up depends on a variety of
-factors, as discussed on the KOKKOS accelerator page. :l
-
-Styles with an "omp" suffix are part of the USER-OMP package and allow
-a pair-style to be run in multi-threaded mode using OpenMP.  This can
-be useful on nodes with high-core counts when using less MPI processes
-than cores is advantageous, e.g. when running with PPPM so that FFTs
-are run on fewer MPI processors or when the many MPI tasks would
-overload the available bandwidth for communication. :l
-
-Styles with an "opt" suffix are part of the OPT package and typically
-speed-up the pairwise calculations of your simulation by 5-25% on a
-CPU. :l
-:ule
-
-The individual accelerator package doc pages explain:
-
-what hardware and software the accelerated package requires
-how to build LAMMPS with the accelerated package
-how to run with the accelerated package either via command-line switches or modifying the input script
-speed-ups to expect
-guidelines for best performance
-restrictions :ul
-
-:line
-
-5.4 Comparison of various accelerator packages :h3,link(acc_4)
-
-NOTE: this section still needs to be re-worked with additional KOKKOS
-and USER-INTEL information.
-
-The next section compares and contrasts the various accelerator
-options, since there are multiple ways to perform OpenMP threading,
-run on GPUs, and run on Intel Xeon Phi coprocessors.
-
-All 3 of these packages accelerate a LAMMPS calculation using NVIDIA
-hardware, but they do it in different ways.
-
-As a consequence, for a particular simulation on specific hardware,
-one package may be faster than the other.  We give guidelines below,
-but the best way to determine which package is faster for your input
-script is to try both of them on your machine.  See the benchmarking
-section below for examples where this has been done.
-
-[Guidelines for using each package optimally:]
-
-The GPU package allows you to assign multiple CPUs (cores) to a single
-GPU (a common configuration for "hybrid" nodes that contain multicore
-CPU(s) and GPU(s)) and works effectively in this mode. :ulb,l
-
-The GPU package moves per-atom data (coordinates, forces)
-back-and-forth between the CPU and GPU every timestep.  The
-KOKKOS/CUDA package only does this on timesteps when a CPU calculation
-is required (e.g. to invoke a fix or compute that is non-GPU-ized).
-Hence, if you can formulate your input script to only use GPU-ized
-fixes and computes, and avoid doing I/O too often (thermo output, dump
-file snapshots, restart files), then the data transfer cost of the
-KOKKOS/CUDA package can be very low, causing it to run faster than the
-GPU package. :l
-
-The GPU package is often faster than the KOKKOS/CUDA package, if the
-number of atoms per GPU is smaller.  The crossover point, in terms of
-atoms/GPU at which the KOKKOS/CUDA package becomes faster depends
-strongly on the pair style.  For example, for a simple Lennard Jones
-system the crossover (in single precision) is often about 50K-100K
-atoms per GPU.  When performing double precision calculations the
-crossover point can be significantly smaller. :l
-
-Both packages compute bonded interactions (bonds, angles, etc) on the
-CPU.  If the GPU package is running with several MPI processes
-assigned to one GPU, the cost of computing the bonded interactions is
-spread across more CPUs and hence the GPU package can run faster. :l
-
-When using the GPU package with multiple CPUs assigned to one GPU, its
-performance depends to some extent on high bandwidth between the CPUs
-and the GPU.  Hence its performance is affected if full 16 PCIe lanes
-are not available for each GPU.  In HPC environments this can be the
-case if S2050/70 servers are used, where two devices generally share
-one PCIe 2.0 16x slot.  Also many multi-GPU mainboards do not provide
-full 16 lanes to each of the PCIe 2.0 16x slots. :l
-:ule
-
-[Differences between the two packages:]
-
-The GPU package accelerates only pair force, neighbor list, and PPPM
-calculations. :ulb,l
-
-The GPU package requires neighbor lists to be built on the CPU when using
-exclusion lists, hybrid pair styles, or a triclinic simulation box. :l
-:ule
diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt
index 7b9349a233..7948e0de32 100644
--- a/doc/src/Section_commands.txt
+++ b/doc/src/Section_commands.txt
@@ -1,4 +1,4 @@
-"Previous Section"_Section_start.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_packages.html :c
+"Previous Section"_Section_start.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Packages.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -554,8 +554,8 @@ Fix styles :h3
 See the "fix"_fix.html command for one-line descriptions of each style
 or click on the style itself for a full description.  Some of the
 styles have accelerated versions, which can be used if LAMMPS is built
-with the "appropriate accelerated package"_Section_accelerate.html.
-This is indicated by additional letters in parenthesis: g = GPU, i =
+with the "appropriate accelerated package"_Speed_packages.html.  This
+is indicated by additional letters in parenthesis: g = GPU, i =
 USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.
 
 "adapt"_fix_adapt.html,
@@ -775,9 +775,9 @@ See the "compute"_compute.html command for one-line descriptions of
 each style or click on the style itself for a full description.  Some
 of the styles have accelerated versions, which can be used if LAMMPS
 is built with the "appropriate accelerated
-package"_Section_accelerate.html.  This is indicated by additional
-letters in parenthesis: g = GPU, i = USER-INTEL, k =
-KOKKOS, o = USER-OMP, t = OPT.
+package"_Speed_packages.html.  This is indicated by additional letters
+in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
+OPT.
 
 "aggregate/atom"_compute_cluster_atom.html,
 "angle"_compute_angle.html,
@@ -920,9 +920,9 @@ See the "pair_style"_pair_style.html command for an overview of pair
 potentials.  Click on the style itself for a full description.  Many
 of the styles have accelerated versions, which can be used if LAMMPS
 is built with the "appropriate accelerated
-package"_Section_accelerate.html.  This is indicated by additional
-letters in parenthesis: g = GPU, i = USER-INTEL, k =
-KOKKOS, o = USER-OMP, t = OPT.
+package"_Speed_packages.html.  This is indicated by additional letters
+in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
+OPT.
 
 "none"_pair_none.html,
 "zero"_pair_zero.html,
@@ -1142,9 +1142,9 @@ See the "bond_style"_bond_style.html command for an overview of bond
 potentials.  Click on the style itself for a full description.  Some
 of the styles have accelerated versions, which can be used if LAMMPS
 is built with the "appropriate accelerated
-package"_Section_accelerate.html.  This is indicated by additional
-letters in parenthesis: g = GPU, i = USER-INTEL, k =
-KOKKOS, o = USER-OMP, t = OPT.
+package"_Speed_packages.html.  This is indicated by additional letters
+in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
+OPT.
 
 "none"_bond_none.html,
 "zero"_bond_zero.html,
@@ -1176,9 +1176,9 @@ See the "angle_style"_angle_style.html command for an overview of
 angle potentials.  Click on the style itself for a full description.
 Some of the styles have accelerated versions, which can be used if
 LAMMPS is built with the "appropriate accelerated
-package"_Section_accelerate.html.  This is indicated by additional
-letters in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o =
-USER-OMP, t = OPT.
+package"_Speed_packages.html.  This is indicated by additional letters
+in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
+OPT.
 
 "none"_angle_none.html,
 "zero"_angle_zero.html,
@@ -1212,7 +1212,7 @@ See the "dihedral_style"_dihedral_style.html command for an overview
 of dihedral potentials.  Click on the style itself for a full
 description.  Some of the styles have accelerated versions, which can
 be used if LAMMPS is built with the "appropriate accelerated
-package"_Section_accelerate.html.  This is indicated by additional
+package"_Speed_packages.html.  This is indicated by additional
 letters in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o =
 USER-OMP, t = OPT.
 
@@ -1247,9 +1247,9 @@ See the "improper_style"_improper_style.html command for an overview
 of improper potentials.  Click on the style itself for a full
 description.  Some of the styles have accelerated versions, which can
 be used if LAMMPS is built with the "appropriate accelerated
-package"_Section_accelerate.html.  This is indicated by additional
-letters in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o =
-USER-OMP, t = OPT.
+package"_Speed_packages.html.  This is indicated by additional letters
+in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
+OPT.
 
 "none"_improper_none.html,
 "zero"_improper_zero.html,
@@ -1276,9 +1276,9 @@ See the "kspace_style"_kspace_style.html command for an overview of
 Kspace solvers.  Click on the style itself for a full description.
 Some of the styles have accelerated versions, which can be used if
 LAMMPS is built with the "appropriate accelerated
-package"_Section_accelerate.html.  This is indicated by additional
-letters in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o =
-USER-OMP, t = OPT.
+package"_Speed_packages.html.  This is indicated by additional letters
+in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
+OPT.
 
 "ewald (o)"_kspace_style.html,
 "ewald/disp"_kspace_style.html,
diff --git a/doc/src/Section_intro.txt b/doc/src/Section_intro.txt
index c7cf5bf8d2..36a1181ca7 100644
--- a/doc/src/Section_intro.txt
+++ b/doc/src/Section_intro.txt
@@ -253,7 +253,7 @@ Specialized features :h4
 
 LAMMPS can be built with optional packages which implement a variety
 of additional capabilities.  An overview of all the packages is "given
-here"_Section_packages.html.
+here"_Packages.html.
 
 These are some LAMMPS capabilities which you may not think of as
 typical classical molecular dynamics options:
diff --git a/doc/src/Section_start.txt b/doc/src/Section_start.txt
index d8f340b179..cd445b3e14 100644
--- a/doc/src/Section_start.txt
+++ b/doc/src/Section_start.txt
@@ -119,10 +119,11 @@ lower-case name of the package, e.g. replica or user-misc.
 
 If you want to do one of the following:
 
-use a LAMMPS command that requires an extra library (e.g. "dump image"_dump_image.html)
-build with a package that requires an extra library
-build with an accelerator package that requires special compiler/linker settings
-run on a machine that has its own compilers, settings, or libraries :ul
+use a LAMMPS command that requires an extra library (e.g. "dump
+image"_dump_image.html) build with a package that requires an extra
+library build with an accelerator package that requires special
+compiler/linker settings run on a machine that has its own compilers,
+settings, or libraries :ul
 
 then building LAMMPS is more complicated.  You may need to find where
 extra libraries exist on your machine or install them if they don't.
@@ -697,8 +698,8 @@ are always included, plus optional packages.  Packages are groups of
 files that enable a specific set of features.  For example, force
 fields for molecular systems or granular systems are in packages.
 
-"Section 4"_Section_packages.html in the manual has details about all
-the packages, which come in two flavors: [standard] and [user]
+The "Packages"_Packages.html doc pages has details about all the
+packages, which come in two flavors: [standard] and [user]
 packages. It also has specific instructions for building LAMMPS with
 any package which requires an extra library.  General instructions are
 below.
@@ -828,45 +829,47 @@ options.
 Packages that require extra libraries :h4,link(start_3_3)
 
 A few of the standard and user packages require extra libraries.  See
-"Section 4"_Section_packages.html for two tables of packages which
-indicate which ones require libraries.  For each such package, the
-Section 4 doc page gives details on how to build the extra library,
-including how to download it if necessary.  The basic ideas are
-summarized here.
+the "Packages"_Packages.html doc pages for two tables of packages
+which indicate which ones require libraries.  For each such package,
+the Section 4 doc page gives details on how to build the extra
+library, including how to download it if necessary.  The basic ideas
+are summarized here.
 
 [System libraries:]
 
-Packages in the tables "Section 4"_Section_packages.html with a "sys"
-in the last column link to system libraries that typically already
-exist on your machine.  E.g. the python package links to a system
-Python library.  If your machine does not have the required library,
-you will have to download and install it on your machine, in either
-the system or user space.
+Packages in the standard and user tables of the
+"Packages"_Packages.html doc pages with a "sys" in the last column
+link to system libraries that typically already exist on your machine.
+E.g. the python package links to a system Python library.  If your
+machine does not have the required library, you will have to download
+and install it on your machine, in either the system or user space.
 
 [Internal libraries:]
 
-Packages in the tables "Section 4"_Section_packages.html with an "int"
-in the last column link to internal libraries whose source code is
-included with LAMMPS, in the lib/name directory where name is the
-package name.  You must first build the library in that directory
-before building LAMMPS with that package installed.  E.g. the gpu
-package links to a library you build in the lib/gpu dir.  You can
-often do the build in one step by typing "make lib-name args=..."
-from the src dir, with appropriate arguments.  You can leave off the
-args to see a help message.  See "Section 4"_Section_packages.html for
-details for each package.
+Packages in the standard and user tables of the
+"Packages"_Packages.html doc pages with an "int" in the last column
+link to internal libraries whose source code is included with LAMMPS,
+in the lib/name directory where name is the package name.  You must
+first build the library in that directory before building LAMMPS with
+that package installed.  E.g. the gpu package links to a library you
+build in the lib/gpu dir.  You can often do the build in one step by
+typing "make lib-name args=..."  from the src dir, with appropriate
+arguments.  You can leave off the args to see a help message.  See the
+"Packages details"_Packages_details.html doc page for details for each
+package.
 
 [External libraries:]
 
-Packages in the tables "Section 4"_Section_packages.html with an "ext"
-in the last column link to external libraries whose source code is not
-included with LAMMPS.  You must first download and install the library
-before building LAMMPS with that package installed.  E.g. the voronoi
-package links to the freely available "Voro++ library"_voro_home2.  You
-can often do the download/build in one step by typing "make lib-name
+Packages in the standard and user tables of the
+"Packages"_Packages.html doc pages with an "ext" in the last column
+link to external libraries whose source code is not included with
+LAMMPS.  You must first download and install the library before
+building LAMMPS with that package installed.  E.g. the voronoi package
+links to the freely available "Voro++ library"_voro_home2.  You can
+often do the download/build in one step by typing "make lib-name
 args=..." from the src dir, with appropriate arguments.  You can leave
-off the args to see a help message.  See "Section
-4"_Section_packages.html for details for each package.
+off the args to see a help message.  See the "Packages
+details"_Packages_details.html doc page for details for each package.
 
 :link(voro_home2,http://math.lbl.gov/voro++)
 
@@ -888,9 +891,9 @@ copied from a lib/name/Makefile.lammps.* file when the library is
 built.  If those settings are not correct for your machine you will
 need to edit or create an appropriate Makefile.lammps file.
 
-Package-specific details for these steps are given in "Section
-4"_Section_packages.html an in README files in the lib/name
-directories.
+Package-specific details for these steps are given on the "Packages
+details"_Packages_details.html doc page and in README files in the
+lib/name directories.
 
 [Compiler options needed for accelerator packages:]
 
@@ -901,14 +904,14 @@ these accelerator packages for optimal performance requires specific
 settings in the Makefile.machine file you use.
 
 A summary of the Makefile.machine settings needed for each of these
-packages is given in "Section 4"_Section_packages.html.  More info is
-given on the doc pages that describe each package in detail:
+packages is given on the "Packages"_Packages.html doc pages.  More
+info is given on the doc pages that describe each package in detail:
 
-5.3.1 "USER-INTEL package"_accelerate_intel.html
-5.3.2 "GPU package"_accelerate_intel.html
-5.3.3 "KOKKOS package"_accelerate_kokkos.html
-5.3.4 "USER-OMP package"_accelerate_omp.html
-5.3.5 "OPT package"_accelerate_opt.html :all(b)
+"USER-INTEL package"_Speed_intel.html
+"GPU package"_Speed_gpu.html
+"KOKKOS package"_Speed_kokkos.html
+"USER-OMP package"_Speed_omp.html
+"OPT package"_Speed_opt.html :all(b)
 
 You can also use or examine the following machine Makefiles in
 src/MAKE/OPTIONS, which include the settings.  Note that the
@@ -1276,8 +1279,8 @@ Either the full word or an abbreviation can be used for the keywords.
 Note that the keywords do not use a leading minus sign.  I.e. the
 keyword is "t", not "-t".  Also note that each of the keywords has a
 default setting.  Example of when to use these options and what
-settings to use on different platforms is given in "Section
-5.3"_Section_accelerate.html#acc_3.
+settings to use on different platforms is given on the "Speed
+kokkos"_Speed_kokkos.html doc page.
 
 d or device
 g or gpus
@@ -1461,8 +1464,7 @@ cores within each node are ranked in a desired order.  Or when using
 the "run_style verlet/split"_run_style.html command with 2 partitions
 to insure that a specific Kspace processor (in the 2nd partition) is
 matched up with a specific set of processors in the 1st partition.
-See the "Section 5"_Section_accelerate.html doc pages for
-more details.
+See the "Speed tips"_Speed_tips.html doc page for more details.
 
 If the keyword {nth} is used with a setting {N}, then it means every
 Nth processor will be moved to the end of the ranking.  This is useful
diff --git a/doc/src/Speed.txt b/doc/src/Speed.txt
new file mode 100644
index 0000000000..2339a11c06
--- /dev/null
+++ b/doc/src/Speed.txt
@@ -0,0 +1,69 @@
+"Previous Section"_Package.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Section_howto.html :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Accelerate performance :h2
+
+This section describes various methods for improving LAMMPS
+performance for different classes of problems running on different
+kinds of machines.
+
+There are two thrusts to the discussion that follows.  The first is
+using code options that implement alternate algorithms that can
+speed-up a simulation.  The second is to use one of the several
+accelerator packages provided with LAMMPS that contain code optimized
+for certain kinds of hardware, including multi-core CPUs, GPUs, and
+Intel Xeon Phi coprocessors.
+
+The "Benchmark page"_http://lammps.sandia.gov/bench.html of the LAMMPS
+web site gives performance results for the various accelerator
+packages discussed on the "Speed packages"_Speed_packages.html doc
+page, for several of the standard LAMMPS benchmark problems, as a
+function of problem size and number of compute nodes, on different
+hardware platforms.
+
+<!-- RST
+
+.. toctree::
+
+   Speed_bench
+   Speed_measure
+
+.. toctree::
+
+   Speed_tips
+
+.. toctree::
+
+   Speed_packages
+   Speed_gpu
+   Speed_intel
+   Speed_kokkos
+   Speed_omp
+   Speed_opt
+   Speed_compare
+
+END_RST -->
+
+<!-- HTML_ONLY -->
+
+"Benchmarks"_Speed_bench.html
+"Measuring performance"_Speed_measure.html :all(b)
+
+"General tips"_Speed_tips.html :all(b)
+
+"Accelerator packages"_Speed_packages.html
+"GPU package"_Speed_gpu.html
+"USER-INTEL package"_Speed_intel.html
+"KOKKOS package"_Speed_kokkos.html
+"USER-OMP package"_Speed_omp.html
+"OPT package"_Speed_opt.html
+"Comparison of accelerator packages"_Speed_compare.html :all(b)
+
+<!-- END_HTML_ONLY -->
diff --git a/doc/src/Section_perf.txt b/doc/src/Speed_bench.txt
similarity index 86%
rename from doc/src/Section_perf.txt
rename to doc/src/Speed_bench.txt
index f320780129..dc76588c11 100644
--- a/doc/src/Section_perf.txt
+++ b/doc/src/Speed_bench.txt
@@ -1,6 +1,5 @@
-"Previous Section"_Examples.html - "LAMMPS WWW Site"_lws - "LAMMPS
-Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Tools.html
-:c
+"Higher level section"_Speed.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -8,12 +7,12 @@ Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Tools.html
 
 :line
 
-8. Performance & scalability :h2
+Benchmarks :h3
 
-Current LAMMPS performance is discussed on the Benchmarks page of the
-"LAMMPS WWW Site"_lws where CPU timings and parallel efficiencies are
-listed.  The page has several sections, which are briefly described
-below:
+Current LAMMPS performance is discussed on the "Benchmarks
+page"_http://lammps.sandia.gov/bench.html of the "LAMMPS website"_lws
+where timings and parallel efficiencies are listed.  The page has
+several sections, which are briefly described below:
 
 CPU performance on 5 standard problems, strong and weak scaling
 GPU and Xeon Phi performance on same and related problems
@@ -53,8 +52,8 @@ of these 5 problems on 1 or 4 cores of Linux desktop.  The bench/FERMI
 and bench/KEPLER dirs have input files and scripts and instructions
 for running the same (or similar) problems using OpenMP or GPU or Xeon
 Phi acceleration options.  See the README files in those dirs and the
-"Section 5.3"_Section_accelerate.html#acc_3 doc pages for
-instructions on how to build LAMMPS and run on that kind of hardware.
+"Speed packages"_Speed_packages.html doc pages for instructions on how
+to build LAMMPS and run on that kind of hardware.
 
 The bench/POTENTIALS directory has input files which correspond to the
 table of results on the
diff --git a/doc/src/Speed_compare.txt b/doc/src/Speed_compare.txt
new file mode 100644
index 0000000000..6c947b9662
--- /dev/null
+++ b/doc/src/Speed_compare.txt
@@ -0,0 +1,73 @@
+"Higher level section"_Speed.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Comparison of various accelerator packages :h3
+
+NOTE: this section still needs to be re-worked with additional KOKKOS
+and USER-INTEL information.
+
+The next section compares and contrasts the various accelerator
+options, since there are multiple ways to perform OpenMP threading,
+run on GPUs, and run on Intel Xeon Phi coprocessors.
+
+All 3 of these packages accelerate a LAMMPS calculation using NVIDIA
+hardware, but they do it in different ways.
+
+As a consequence, for a particular simulation on specific hardware,
+one package may be faster than the other.  We give guidelines below,
+but the best way to determine which package is faster for your input
+script is to try both of them on your machine.  See the benchmarking
+section below for examples where this has been done.
+
+[Guidelines for using each package optimally:]
+
+The GPU package allows you to assign multiple CPUs (cores) to a single
+GPU (a common configuration for "hybrid" nodes that contain multicore
+CPU(s) and GPU(s)) and works effectively in this mode. :ulb,l
+
+The GPU package moves per-atom data (coordinates, forces)
+back-and-forth between the CPU and GPU every timestep.  The
+KOKKOS/CUDA package only does this on timesteps when a CPU calculation
+is required (e.g. to invoke a fix or compute that is non-GPU-ized).
+Hence, if you can formulate your input script to only use GPU-ized
+fixes and computes, and avoid doing I/O too often (thermo output, dump
+file snapshots, restart files), then the data transfer cost of the
+KOKKOS/CUDA package can be very low, causing it to run faster than the
+GPU package. :l
+
+The GPU package is often faster than the KOKKOS/CUDA package, if the
+number of atoms per GPU is smaller.  The crossover point, in terms of
+atoms/GPU at which the KOKKOS/CUDA package becomes faster depends
+strongly on the pair style.  For example, for a simple Lennard Jones
+system the crossover (in single precision) is often about 50K-100K
+atoms per GPU.  When performing double precision calculations the
+crossover point can be significantly smaller. :l
+
+Both packages compute bonded interactions (bonds, angles, etc) on the
+CPU.  If the GPU package is running with several MPI processes
+assigned to one GPU, the cost of computing the bonded interactions is
+spread across more CPUs and hence the GPU package can run faster. :l
+
+When using the GPU package with multiple CPUs assigned to one GPU, its
+performance depends to some extent on high bandwidth between the CPUs
+and the GPU.  Hence its performance is affected if full 16 PCIe lanes
+are not available for each GPU.  In HPC environments this can be the
+case if S2050/70 servers are used, where two devices generally share
+one PCIe 2.0 16x slot.  Also many multi-GPU mainboards do not provide
+full 16 lanes to each of the PCIe 2.0 16x slots. :l
+:ule
+
+[Differences between the two packages:]
+
+The GPU package accelerates only pair force, neighbor list, and PPPM
+calculations. :ulb,l
+
+The GPU package requires neighbor lists to be built on the CPU when using
+exclusion lists, hybrid pair styles, or a triclinic simulation box. :l
+:ule
diff --git a/doc/src/accelerate_gpu.txt b/doc/src/Speed_gpu.txt
similarity index 96%
rename from doc/src/accelerate_gpu.txt
rename to doc/src/Speed_gpu.txt
index 816a31c788..d6ebbf8069 100644
--- a/doc/src/accelerate_gpu.txt
+++ b/doc/src/Speed_gpu.txt
@@ -1,5 +1,5 @@
-"Previous Section"_Section_packages.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+"Higher level section"_Speed.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -7,9 +7,7 @@
 
 :line
 
-"Return to Section accelerate overview"_Section_accelerate.html
-
-5.3.1 GPU package :h5
+GPU package :h3
 
 The GPU package was developed by Mike Brown at ORNL and his
 collaborators, particularly Trung Nguyen (ORNL).  It provides GPU
@@ -72,10 +70,9 @@ Run lammps/lib/gpu/nvc_get_devices (after building the GPU library, see below) t
 [Building LAMMPS with the GPU package:]
 
 This requires two steps (a,b): build the GPU library, then build
-LAMMPS with the GPU package.
-
-You can do both these steps in one line as described in
-"Section 4"_Section_packages.html of the manual.
+LAMMPS with the GPU package.  You can do both these steps in one line
+as described on the "Packages details"_Packages_details.html#GPU doc
+page.
 
 Or you can follow these two (a,b) steps:
 
diff --git a/doc/src/accelerate_intel.txt b/doc/src/Speed_intel.txt
similarity index 98%
rename from doc/src/accelerate_intel.txt
rename to doc/src/Speed_intel.txt
index 71f5185b15..acf5c3f2f9 100644
--- a/doc/src/accelerate_intel.txt
+++ b/doc/src/Speed_intel.txt
@@ -1,5 +1,5 @@
-"Previous Section"_Section_packages.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+"Higher level section"_Speed.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -7,9 +7,7 @@
 
 :line
 
-"Return to Section accelerate overview"_Section_accelerate.html
-
-5.3.2 USER-INTEL package :h5
+USER-INTEL package :h3
 
 The USER-INTEL package is maintained by Mike Brown at Intel
 Corporation.  It provides two methods for accelerating simulations,
@@ -233,9 +231,9 @@ source /opt/intel/parallel_studio_xe_2016.3.067/psxevars.sh
 # or psxevars.csh for C-shell
 make intel_cpu_intelmpi :pre
 
-Alternatively this can be done as a single command with
-suitable make command invocations. This is discussed in "Section
-4"_Section_packages.html of the manual.
+Alternatively this can be done as a single command with suitable make
+command invocations, as described on the "Packages
+details"_Packages_details.html#USER-INTEL doc page.
 
 Note that if you build with support for a Phi coprocessor, the same
 binary can be used on nodes with or without coprocessors installed.
diff --git a/doc/src/accelerate_kokkos.txt b/doc/src/Speed_kokkos.txt
similarity index 97%
rename from doc/src/accelerate_kokkos.txt
rename to doc/src/Speed_kokkos.txt
index 0c9178d6e4..8e01db7bdc 100644
--- a/doc/src/accelerate_kokkos.txt
+++ b/doc/src/Speed_kokkos.txt
@@ -1,5 +1,5 @@
-"Previous Section"_Section_packages.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+"Higher level section"_Speed.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -7,9 +7,7 @@
 
 :line
 
-"Return to Section accelerate overview"_Section_accelerate.html
-
-5.3.3 KOKKOS package :h5
+KOKKOS package :h3
 
 Kokkos is a templated C++ library that provides abstractions to allow
 a single implementation of an application kernel (e.g. a pair style) to run efficiently on
@@ -85,10 +83,10 @@ make kokkos_phi :pre
 
 [Compile for CPUs and GPUs (with OpenMPI or MPICH):]
 
-NOTE: To build with Kokkos support for NVIDIA GPUs, NVIDIA CUDA software
-version 7.5 or later must be installed on your system. See the
-discussion for the "GPU"_accelerate_gpu.html package for details of
-how to check and do this.
+NOTE: To build with Kokkos support for NVIDIA GPUs, NVIDIA CUDA
+software version 7.5 or later must be installed on your system. See
+the discussion for the "GPU package"_Speed_gpu.html for details of how
+to check and do this.
 
 use a C++11 compatible compiler and set KOKKOS_ARCH variable in
 /src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi for both GPU and CPU as described
@@ -434,8 +432,8 @@ migrate during a simulation. KOKKOS_USE_TPLS=hwloc should always be
 used if running with KOKKOS_DEVICES=Pthreads for pthreads. It is not
 necessary for KOKKOS_DEVICES=OpenMP for OpenMP, because OpenMP
 provides alternative methods via environment variables for binding
-threads to hardware cores. More info on binding threads to cores is
-given in "Section 5.3"_Section_accelerate.html#acc_3.
+threads to hardware cores.  More info on binding threads to cores is
+given on the "Speed omp"_Speed_omp.html doc page.
 
 KOKKOS_USE_TPLS=librt enables use of a more accurate timer mechanism
 on most Unix platforms. This library is not available on all
diff --git a/doc/src/Speed_measure.txt b/doc/src/Speed_measure.txt
new file mode 100644
index 0000000000..03c0345c20
--- /dev/null
+++ b/doc/src/Speed_measure.txt
@@ -0,0 +1,55 @@
+"Higher level section"_Speed.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Measuring performance :h3
+
+Before trying to make your simulation run faster, you should
+understand how it currently performs and where the bottlenecks are.
+
+The best way to do this is run the your system (actual number of
+atoms) for a modest number of timesteps (say 100 steps) on several
+different processor counts, including a single processor if possible.
+Do this for an equilibrium version of your system, so that the
+100-step timings are representative of a much longer run.  There is
+typically no need to run for 1000s of timesteps to get accurate
+timings; you can simply extrapolate from short runs.
+
+For the set of runs, look at the timing data printed to the screen and
+log file at the end of each LAMMPS run.  "This
+section"_Section_start.html#start_7 of the manual has an overview.
+
+Running on one (or a few processors) should give a good estimate of
+the serial performance and what portions of the timestep are taking
+the most time.  Running the same problem on a few different processor
+counts should give an estimate of parallel scalability.  I.e. if the
+simulation runs 16x faster on 16 processors, its 100% parallel
+efficient; if it runs 8x faster on 16 processors, it's 50% efficient.
+
+The most important data to look at in the timing info is the timing
+breakdown and relative percentages.  For example, trying different
+options for speeding up the long-range solvers will have little impact
+if they only consume 10% of the run time.  If the pairwise time is
+dominating, you may want to look at GPU or OMP versions of the pair
+style, as discussed below.  Comparing how the percentages change as
+you increase the processor count gives you a sense of how different
+operations within the timestep are scaling.  Note that if you are
+running with a Kspace solver, there is additional output on the
+breakdown of the Kspace time.  For PPPM, this includes the fraction
+spent on FFTs, which can be communication intensive.
+
+Another important detail in the timing info are the histograms of
+atoms counts and neighbor counts.  If these vary widely across
+processors, you have a load-imbalance issue.  This often results in
+inaccurate relative timing data, because processors have to wait when
+communication occurs for other processors to catch up.  Thus the
+reported times for "Communication" or "Other" may be higher than they
+really are, due to load-imbalance.  If this is an issue, you can
+uncomment the MPI_Barrier() lines in src/timer.cpp, and recompile
+LAMMPS, to obtain synchronized timings.
+
diff --git a/doc/src/accelerate_omp.txt b/doc/src/Speed_omp.txt
similarity index 96%
rename from doc/src/accelerate_omp.txt
rename to doc/src/Speed_omp.txt
index fa7bef1a52..3700580225 100644
--- a/doc/src/accelerate_omp.txt
+++ b/doc/src/Speed_omp.txt
@@ -1,5 +1,5 @@
-"Previous Section"_Section_packages.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+"Higher level section"_Speed.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -7,9 +7,7 @@
 
 :line
 
-"Return to Section 5 overview"_Section_accelerate.html
-
-5.3.4 USER-OMP package :h5
+USER-OMP package :h3
 
 The USER-OMP package was developed by Axel Kohlmeyer at Temple
 University.  It provides multi-threaded versions of most pair styles,
@@ -39,7 +37,8 @@ each MPI task running on a CPU.
 
 The lines above illustrate how to include/build with the USER-OMP
 package in two steps, using the "make" command.  Or how to do it with
-one command as described in "Section 4"_Section_packages.html of the manual.
+one command as described on the "Packages
+details"_Packages_details.html#USER-OMP doc page.
 
 Note that the CCFLAGS and LINKFLAGS settings in Makefile.machine must
 include "-fopenmp".  Likewise, if you use an Intel compiler, the
diff --git a/doc/src/accelerate_opt.txt b/doc/src/Speed_opt.txt
similarity index 86%
rename from doc/src/accelerate_opt.txt
rename to doc/src/Speed_opt.txt
index 845264b522..7d0d7169f0 100644
--- a/doc/src/accelerate_opt.txt
+++ b/doc/src/Speed_opt.txt
@@ -1,5 +1,5 @@
-"Previous Section"_Section_packages.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+"Higher level section"_Speed.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -7,9 +7,7 @@
 
 :line
 
-"Return to Section accelerate overview"_Section_accelerate.html
-
-5.3.5 OPT package :h5
+OPT package :h3
 
 The OPT package was developed by James Fischer (High Performance
 Technologies), David Richie, and Vincent Natoli (Stone Ridge
@@ -34,7 +32,8 @@ None.
 
 The lines above illustrate how to build LAMMPS with the OPT package in
 two steps, using the "make" command.  Or how to do it with one command
-as described in "Section 4"_Section_packages.html of the manual.
+as described on the "Packages details"_Packages_details.html#OPT doc
+page.
 
 Note that if you use an Intel compiler to build with the OPT package,
 the CCFLAGS setting in your Makefile.machine must include "-restrict".
diff --git a/doc/src/Speed_packages.txt b/doc/src/Speed_packages.txt
new file mode 100644
index 0000000000..18850d52e0
--- /dev/null
+++ b/doc/src/Speed_packages.txt
@@ -0,0 +1,191 @@
+"Higher level section"_Speed.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Accelerator packages :h3
+
+Accelerated versions of various "pair_style"_pair_style.html,
+"fixes"_fix.html, "computes"_compute.html, and other commands have
+been added to LAMMPS, which will typically run faster than the
+standard non-accelerated versions.  Some require appropriate hardware
+to be present on your system, e.g. GPUs or Intel Xeon Phi
+coprocessors.
+
+All of these commands are in packages provided with LAMMPS.  An
+overview of packages is give on the "Packages"_Packages.html doc
+pages.
+
+These are the accelerator packages currently in LAMMPS, either as
+standard or user packages:
+
+"GPU Package"_accelerate_gpu.html : for NVIDIA GPUs as well as OpenCL support
+"USER-INTEL Package"_accelerate_intel.html : for Intel CPUs and Intel Xeon Phi
+"KOKKOS Package"_accelerate_kokkos.html : for Nvidia GPUs, Intel Xeon Phi, and OpenMP threading
+"USER-OMP Package"_accelerate_omp.html : for OpenMP threading and generic CPU optimizations
+"OPT Package"_accelerate_opt.html : generic CPU optimizations :tb(s=:)
+
+<!-- RST
+
+.. toctree::
+   :maxdepth: 1
+   :hidden:
+
+   accelerate_gpu
+   accelerate_intel
+   accelerate_kokkos
+   accelerate_omp
+   accelerate_opt
+
+END_RST -->
+
+Inverting this list, LAMMPS currently has acceleration support for
+three kinds of hardware, via the listed packages:
+
+Many-core CPUs : "USER-INTEL"_accelerate_intel.html, "KOKKOS"_accelerate_kokkos.html, "USER-OMP"_accelerate_omp.html, "OPT"_accelerate_opt.html packages
+NVIDIA GPUs : "GPU"_accelerate_gpu.html, "KOKKOS"_accelerate_kokkos.html packages
+Intel Phi : "USER-INTEL"_accelerate_intel.html, "KOKKOS"_accelerate_kokkos.html packages :tb(s=:)
+
+Which package is fastest for your hardware may depend on the size
+problem you are running and what commands (accelerated and
+non-accelerated) are invoked by your input script.  While these doc
+pages include performance guidelines, there is no substitute for
+trying out the different packages appropriate to your hardware.
+
+Any accelerated style has the same name as the corresponding standard
+style, except that a suffix is appended.  Otherwise, the syntax for
+the command that uses the style is identical, their functionality is
+the same, and the numerical results it produces should also be the
+same, except for precision and round-off effects.
+
+For example, all of these styles are accelerated variants of the
+Lennard-Jones "pair_style lj/cut"_pair_lj.html:
+
+"pair_style lj/cut/gpu"_pair_lj.html
+"pair_style lj/cut/intel"_pair_lj.html
+"pair_style lj/cut/kk"_pair_lj.html
+"pair_style lj/cut/omp"_pair_lj.html
+"pair_style lj/cut/opt"_pair_lj.html :ul
+
+To see what accelerate styles are currently available, see
+"Section 3.5"_Section_commands.html#cmd_5 of the manual.  The
+doc pages for individual commands (e.g. "pair lj/cut"_pair_lj.html or
+"fix nve"_fix_nve.html) also list any accelerated variants available
+for that style.
+
+To use an accelerator package in LAMMPS, and one or more of the styles
+it provides, follow these general steps.  Details vary from package to
+package and are explained in the individual accelerator doc pages,
+listed above:
+
+build the accelerator library |
+  only for GPU package |
+install the accelerator package |
+  make yes-opt, make yes-user-intel, etc |
+add compile/link flags to Makefile.machine in src/MAKE |
+  only for USER-INTEL, KOKKOS, USER-OMP, OPT packages |
+re-build LAMMPS |
+  make machine |
+prepare and test a regular LAMMPS simulation |
+  lmp_machine -in in.script; mpirun -np 32 lmp_machine -in in.script |
+enable specific accelerator support via '-k on' "command-line switch"_Section_start.html#start_6, |
+  only needed for KOKKOS package |
+set any needed options for the package via "-pk" "command-line switch"_Section_start.html#start_6 or "package"_package.html command, |
+  only if defaults need to be changed |
+use accelerated styles in your input via "-sf" "command-line switch"_Section_start.html#start_6 or "suffix"_suffix.html command | lmp_machine -in in.script -sf gpu
+:tb(c=2,s=|)
+
+Note that the first 4 steps can be done as a single command with
+suitable make command invocations. This is discussed on the
+"Packages"_Packages.html doc pages, and its use is illustrated in the
+individual accelerator sections.  Typically these steps only need to
+be done once, to create an executable that uses one or more
+accelerator packages.
+
+The last 4 steps can all be done from the command-line when LAMMPS is
+launched, without changing your input script, as illustrated in the
+individual accelerator sections.  Or you can add
+"package"_package.html and "suffix"_suffix.html commands to your input
+script.
+
+NOTE: With a few exceptions, you can build a single LAMMPS executable
+with all its accelerator packages installed.  Note however that the
+USER-INTEL and KOKKOS packages require you to choose one of their
+hardware options when building for a specific platform.  I.e. CPU or
+Phi option for the USER-INTEL package.  Or the OpenMP, Cuda, or Phi
+option for the KOKKOS package.
+
+These are the exceptions.  You cannot build a single executable with:
+
+both the USER-INTEL Phi and KOKKOS Phi options
+the USER-INTEL Phi or Kokkos Phi option, and the GPU package :ul
+
+See the examples/accelerate/README and make.list files for sample
+Make.py commands that build LAMMPS with any or all of the accelerator
+packages.  As an example, here is a command that builds with all the
+GPU related packages installed (GPU, KOKKOS with Cuda), including
+settings to build the needed auxiliary GPU libraries for Kepler GPUs:
+
+Make.py -j 16 -p omp gpu kokkos -cc nvcc wrap=mpi \
+  -gpu mode=double arch=35 -kokkos cuda arch=35 lib-all file mpi :pre
+
+The examples/accelerate directory also has input scripts that can be
+used with all of the accelerator packages.  See its README file for
+details.
+
+Likewise, the bench directory has FERMI and KEPLER and PHI
+sub-directories with Make.py commands and input scripts for using all
+the accelerator packages on various machines.  See the README files in
+those dirs.
+
+As mentioned above, the "Benchmark
+page"_http://lammps.sandia.gov/bench.html of the LAMMPS web site gives
+performance results for the various accelerator packages for several
+of the standard LAMMPS benchmark problems, as a function of problem
+size and number of compute nodes, on different hardware platforms.
+
+Here is a brief summary of what the various packages provide.  Details
+are in the individual accelerator sections.
+
+Styles with a "gpu" suffix are part of the GPU package, and can be run
+on NVIDIA GPUs.  The speed-up on a GPU depends on a variety of
+factors, discussed in the accelerator sections. :ulb,l
+
+Styles with an "intel" suffix are part of the USER-INTEL
+package. These styles support vectorized single and mixed precision
+calculations, in addition to full double precision.  In extreme cases,
+this can provide speedups over 3.5x on CPUs.  The package also
+supports acceleration in "offload" mode to Intel(R) Xeon Phi(TM)
+coprocessors.  This can result in additional speedup over 2x depending
+on the hardware configuration. :l
+
+Styles with a "kk" suffix are part of the KOKKOS package, and can be
+run using OpenMP on multicore CPUs, on an NVIDIA GPU, or on an Intel
+Xeon Phi in "native" mode.  The speed-up depends on a variety of
+factors, as discussed on the KOKKOS accelerator page. :l
+
+Styles with an "omp" suffix are part of the USER-OMP package and allow
+a pair-style to be run in multi-threaded mode using OpenMP.  This can
+be useful on nodes with high-core counts when using less MPI processes
+than cores is advantageous, e.g. when running with PPPM so that FFTs
+are run on fewer MPI processors or when the many MPI tasks would
+overload the available bandwidth for communication. :l
+
+Styles with an "opt" suffix are part of the OPT package and typically
+speed-up the pairwise calculations of your simulation by 5-25% on a
+CPU. :l
+:ule
+
+The individual accelerator package doc pages explain:
+
+what hardware and software the accelerated package requires
+how to build LAMMPS with the accelerated package
+how to run with the accelerated package either via command-line switches or modifying the input script
+speed-ups to expect
+guidelines for best performance
+restrictions :ul
+
diff --git a/doc/src/Speed_tips.txt b/doc/src/Speed_tips.txt
new file mode 100644
index 0000000000..c0d360cd8e
--- /dev/null
+++ b/doc/src/Speed_tips.txt
@@ -0,0 +1,63 @@
+"Higher level section"_Speed.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+General tips :h3
+
+NOTE: this section 5.2 is still a work in progress
+
+Here is a list of general ideas for improving simulation performance.
+Most of them are only applicable to certain models and certain
+bottlenecks in the current performance, so let the timing data you
+generate be your guide.  It is hard, if not impossible, to predict how
+much difference these options will make, since it is a function of
+problem size, number of processors used, and your machine.  There is
+no substitute for identifying performance bottlenecks, and trying out
+various options.
+
+make individual pages for these, or one for PPPM
+one for timestepping, etc
+one for balancing 
+or proc layout
+
+rRESPA
+2-FFT PPPM
+Staggered PPPM
+single vs double PPPM
+partial charge PPPM
+verlet/split run style
+processor command for proc layout and numa layout
+load-balancing: balance and fix balance :ul
+
+2-FFT PPPM, also called {analytic differentiation} or {ad} PPPM, uses
+2 FFTs instead of the 4 FFTs used by the default {ik differentiation}
+PPPM. However, 2-FFT PPPM also requires a slightly larger mesh size to
+achieve the same accuracy as 4-FFT PPPM. For problems where the FFT
+cost is the performance bottleneck (typically large problems running
+on many processors), 2-FFT PPPM may be faster than 4-FFT PPPM.
+
+Staggered PPPM performs calculations using two different meshes, one
+shifted slightly with respect to the other.  This can reduce force
+aliasing errors and increase the accuracy of the method, but also
+doubles the amount of work required. For high relative accuracy, using
+staggered PPPM allows one to half the mesh size in each dimension as
+compared to regular PPPM, which can give around a 4x speedup in the
+kspace time. However, for low relative accuracy, using staggered PPPM
+gives little benefit and can be up to 2x slower in the kspace
+time. For example, the rhodopsin benchmark was run on a single
+processor, and results for kspace time vs. relative accuracy for the
+different methods are shown in the figure below.  For this system,
+staggered PPPM (using ik differentiation) becomes useful when using a
+relative accuracy of slightly greater than 1e-5 and above.
+
+:c,image(JPG/rhodo_staggered.jpg)
+
+NOTE: Using staggered PPPM may not give the same increase in accuracy
+of energy and pressure as it does in forces, so some caution must be
+used if energy and/or pressure are quantities of interest, such as
+when using a barostat.
diff --git a/doc/src/angle_charmm.txt b/doc/src/angle_charmm.txt
index 7ff7ef8fd4..fe109d24fb 100644
--- a/doc/src/angle_charmm.txt
+++ b/doc/src/angle_charmm.txt
@@ -51,10 +51,9 @@ internally; hence the units of K are in energy/radian^2.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -66,8 +65,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/angle_class2.txt b/doc/src/angle_class2.txt
index d4330139c9..c13a64afb6 100644
--- a/doc/src/angle_class2.txt
+++ b/doc/src/angle_class2.txt
@@ -83,10 +83,9 @@ same value from the Ea formula.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -98,8 +97,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/angle_cosine.txt b/doc/src/angle_cosine.txt
index c0ce3c9301..99264b02a6 100644
--- a/doc/src/angle_cosine.txt
+++ b/doc/src/angle_cosine.txt
@@ -38,10 +38,9 @@ K (energy) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -53,8 +52,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/angle_cosine_delta.txt b/doc/src/angle_cosine_delta.txt
index 830fd6db58..052300412f 100644
--- a/doc/src/angle_cosine_delta.txt
+++ b/doc/src/angle_cosine_delta.txt
@@ -43,10 +43,9 @@ internally.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -58,8 +57,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/angle_cosine_periodic.txt b/doc/src/angle_cosine_periodic.txt
index b5c53b1b0f..4bedae3246 100644
--- a/doc/src/angle_cosine_periodic.txt
+++ b/doc/src/angle_cosine_periodic.txt
@@ -51,10 +51,9 @@ geometry.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -66,8 +65,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/angle_cosine_shift.txt b/doc/src/angle_cosine_shift.txt
index 6ed9fe2150..185b9f5309 100644
--- a/doc/src/angle_cosine_shift.txt
+++ b/doc/src/angle_cosine_shift.txt
@@ -41,10 +41,9 @@ theta (angle) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -56,8 +55,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/angle_cosine_shift_exp.txt b/doc/src/angle_cosine_shift_exp.txt
index 44a68c1087..e5c7fdd709 100644
--- a/doc/src/angle_cosine_shift_exp.txt
+++ b/doc/src/angle_cosine_shift_exp.txt
@@ -53,10 +53,9 @@ A (real number) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -68,8 +67,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/angle_cosine_squared.txt b/doc/src/angle_cosine_squared.txt
index 065cdad542..e85c514d1e 100644
--- a/doc/src/angle_cosine_squared.txt
+++ b/doc/src/angle_cosine_squared.txt
@@ -43,10 +43,9 @@ internally.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -58,8 +57,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/angle_dipole.txt b/doc/src/angle_dipole.txt
index 34cc8c153c..31ae2e9464 100644
--- a/doc/src/angle_dipole.txt
+++ b/doc/src/angle_dipole.txt
@@ -71,10 +71,9 @@ gamma0 (degrees) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -86,8 +85,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restrictions:]
 
diff --git a/doc/src/angle_fourier.txt b/doc/src/angle_fourier.txt
index da39e7cf32..18eb56b478 100644
--- a/doc/src/angle_fourier.txt
+++ b/doc/src/angle_fourier.txt
@@ -39,10 +39,9 @@ C2 (real) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -54,8 +53,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/angle_fourier_simple.txt b/doc/src/angle_fourier_simple.txt
index 5adda6cb32..6faff5f10d 100644
--- a/doc/src/angle_fourier_simple.txt
+++ b/doc/src/angle_fourier_simple.txt
@@ -38,10 +38,9 @@ n (real) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -53,8 +52,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/angle_harmonic.txt b/doc/src/angle_harmonic.txt
index 4c74763964..fe803be623 100644
--- a/doc/src/angle_harmonic.txt
+++ b/doc/src/angle_harmonic.txt
@@ -45,10 +45,9 @@ internally; hence the units of K are in energy/radian^2.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -60,8 +59,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/angle_quartic.txt b/doc/src/angle_quartic.txt
index f7640bdfbc..a31214f435 100644
--- a/doc/src/angle_quartic.txt
+++ b/doc/src/angle_quartic.txt
@@ -45,10 +45,9 @@ internally; hence the units of K are in energy/radian^2.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -60,8 +59,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/angle_table.txt b/doc/src/angle_table.txt
index bd6e167bd8..29b56875e7 100644
--- a/doc/src/angle_table.txt
+++ b/doc/src/angle_table.txt
@@ -124,10 +124,9 @@ one that matches the specified keyword.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -139,8 +138,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/atom_style.txt b/doc/src/atom_style.txt
index 442bb5ac70..0e6aa8a033 100644
--- a/doc/src/atom_style.txt
+++ b/doc/src/atom_style.txt
@@ -261,10 +261,10 @@ styles; see the "Modify"_Modify.html doc page.
 
 Styles with a {kk} suffix are functionally the same as the
 corresponding style without the suffix.  They have been optimized to
-run faster, depending on your available hardware, as discussed in
-"Section 5"_Section_accelerate.html of the manual.  The
-accelerated styles take the same arguments and should produce the same
-results, except for round-off and precision issues.
+run faster, depending on your available hardware, as discussed in on
+the "Speed packages"_Speed_packages.html doc page.  The accelerated
+styles take the same arguments and should produce the same results,
+except for round-off and precision issues.
 
 Note that other acceleration packages in LAMMPS, specifically the GPU,
 USER-INTEL, USER-OMP, and OPT packages do not use accelerated atom
@@ -279,8 +279,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_7 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restrictions:]
 
diff --git a/doc/src/bond_class2.txt b/doc/src/bond_class2.txt
index 9687a63168..049482c973 100644
--- a/doc/src/bond_class2.txt
+++ b/doc/src/bond_class2.txt
@@ -44,10 +44,9 @@ K4 (energy/distance^4) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -59,8 +58,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/bond_fene.txt b/doc/src/bond_fene.txt
index 9050c3bf5c..be154a53b1 100644
--- a/doc/src/bond_fene.txt
+++ b/doc/src/bond_fene.txt
@@ -47,10 +47,9 @@ sigma (distance) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -62,8 +61,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/bond_fene_expand.txt b/doc/src/bond_fene_expand.txt
index ff687444a9..77ebd977c8 100644
--- a/doc/src/bond_fene_expand.txt
+++ b/doc/src/bond_fene_expand.txt
@@ -50,10 +50,9 @@ delta (distance) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -65,8 +64,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/bond_gromos.txt b/doc/src/bond_gromos.txt
index cc3ff75878..7a56cb3afa 100644
--- a/doc/src/bond_gromos.txt
+++ b/doc/src/bond_gromos.txt
@@ -40,10 +40,9 @@ r0 (distance) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -55,8 +54,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/bond_harmonic.txt b/doc/src/bond_harmonic.txt
index c18a7e0fd4..54e89fcc72 100644
--- a/doc/src/bond_harmonic.txt
+++ b/doc/src/bond_harmonic.txt
@@ -42,10 +42,9 @@ r0 (distance) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -57,8 +56,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/bond_harmonic_shift.txt b/doc/src/bond_harmonic_shift.txt
index bf3b3c115a..0213b5cc6f 100644
--- a/doc/src/bond_harmonic_shift.txt
+++ b/doc/src/bond_harmonic_shift.txt
@@ -43,10 +43,9 @@ rc (distance) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -58,8 +57,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/bond_harmonic_shift_cut.txt b/doc/src/bond_harmonic_shift_cut.txt
index 1918ce00b6..d907bf4a62 100644
--- a/doc/src/bond_harmonic_shift_cut.txt
+++ b/doc/src/bond_harmonic_shift_cut.txt
@@ -43,10 +43,9 @@ rc (distance) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -58,8 +57,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/bond_morse.txt b/doc/src/bond_morse.txt
index 4f6a32e341..66f2d08cab 100644
--- a/doc/src/bond_morse.txt
+++ b/doc/src/bond_morse.txt
@@ -41,10 +41,9 @@ r0 (distance) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -56,8 +55,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/bond_nonlinear.txt b/doc/src/bond_nonlinear.txt
index 434af62506..e0aa5629b3 100644
--- a/doc/src/bond_nonlinear.txt
+++ b/doc/src/bond_nonlinear.txt
@@ -41,10 +41,9 @@ lamda (distance) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -56,8 +55,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/bond_quartic.txt b/doc/src/bond_quartic.txt
index 4dc7ad4a36..760a5d7f07 100644
--- a/doc/src/bond_quartic.txt
+++ b/doc/src/bond_quartic.txt
@@ -76,10 +76,9 @@ delete_bonds all bond 0 remove :pre
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -91,8 +90,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/bond_table.txt b/doc/src/bond_table.txt
index 906d3e5d76..fe0b3ce22b 100644
--- a/doc/src/bond_table.txt
+++ b/doc/src/bond_table.txt
@@ -121,10 +121,9 @@ one that matches the specified keyword.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -136,8 +135,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/compute_pressure.txt b/doc/src/compute_pressure.txt
index f0691ad207..8b7491da49 100644
--- a/doc/src/compute_pressure.txt
+++ b/doc/src/compute_pressure.txt
@@ -105,10 +105,9 @@ where "thermo_temp" is the ID of a similarly defined compute of style
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -120,8 +119,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/compute_temp.txt b/doc/src/compute_temp.txt
index b88be79e20..f9fa56c882 100644
--- a/doc/src/compute_temp.txt
+++ b/doc/src/compute_temp.txt
@@ -67,10 +67,9 @@ thermostatting.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -82,8 +81,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/compute_temp_partial.txt b/doc/src/compute_temp_partial.txt
index fe2420b4e4..59ec8cf20b 100644
--- a/doc/src/compute_temp_partial.txt
+++ b/doc/src/compute_temp_partial.txt
@@ -74,10 +74,9 @@ thermostatting.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -89,8 +88,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/dihedral_charmm.txt b/doc/src/dihedral_charmm.txt
index 06abe054e4..f808649a44 100644
--- a/doc/src/dihedral_charmm.txt
+++ b/doc/src/dihedral_charmm.txt
@@ -116,10 +116,9 @@ computed.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -131,8 +130,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/dihedral_class2.txt b/doc/src/dihedral_class2.txt
index cb9fc72c22..41282b22a3 100644
--- a/doc/src/dihedral_class2.txt
+++ b/doc/src/dihedral_class2.txt
@@ -141,10 +141,9 @@ r3 (distance) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -156,8 +155,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/dihedral_cosine_shift_exp.txt b/doc/src/dihedral_cosine_shift_exp.txt
index 715682affc..483745be41 100644
--- a/doc/src/dihedral_cosine_shift_exp.txt
+++ b/doc/src/dihedral_cosine_shift_exp.txt
@@ -52,10 +52,9 @@ A (real number) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -67,8 +66,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/dihedral_fourier.txt b/doc/src/dihedral_fourier.txt
index 0accbb22bf..0270139f68 100644
--- a/doc/src/dihedral_fourier.txt
+++ b/doc/src/dihedral_fourier.txt
@@ -44,10 +44,9 @@ dm (degrees) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -59,8 +58,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/dihedral_harmonic.txt b/doc/src/dihedral_harmonic.txt
index d9a48ff384..a25a7969fe 100644
--- a/doc/src/dihedral_harmonic.txt
+++ b/doc/src/dihedral_harmonic.txt
@@ -53,10 +53,9 @@ Some force fields let {n} be positive or negative which corresponds to
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -68,8 +67,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/dihedral_helix.txt b/doc/src/dihedral_helix.txt
index 1e907557b2..814962a472 100644
--- a/doc/src/dihedral_helix.txt
+++ b/doc/src/dihedral_helix.txt
@@ -46,10 +46,9 @@ C (energy) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -61,8 +60,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/dihedral_multi_harmonic.txt b/doc/src/dihedral_multi_harmonic.txt
index 7d3c2ea083..62cad4141a 100644
--- a/doc/src/dihedral_multi_harmonic.txt
+++ b/doc/src/dihedral_multi_harmonic.txt
@@ -40,10 +40,9 @@ A5 (energy) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -55,8 +54,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/dihedral_nharmonic.txt b/doc/src/dihedral_nharmonic.txt
index 8392d83899..a49979fa66 100644
--- a/doc/src/dihedral_nharmonic.txt
+++ b/doc/src/dihedral_nharmonic.txt
@@ -40,10 +40,9 @@ An (energy) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -55,8 +54,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/dihedral_opls.txt b/doc/src/dihedral_opls.txt
index d1a6ba3ff2..9b33173da4 100644
--- a/doc/src/dihedral_opls.txt
+++ b/doc/src/dihedral_opls.txt
@@ -48,10 +48,9 @@ K4 (energy) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -63,8 +62,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/dihedral_quadratic.txt b/doc/src/dihedral_quadratic.txt
index ca2f5aed40..f90c4b79f1 100644
--- a/doc/src/dihedral_quadratic.txt
+++ b/doc/src/dihedral_quadratic.txt
@@ -41,10 +41,9 @@ phi0 (degrees) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -56,8 +55,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/dihedral_table.txt b/doc/src/dihedral_table.txt
index 0b88f26a61..6a480fec93 100644
--- a/doc/src/dihedral_table.txt
+++ b/doc/src/dihedral_table.txt
@@ -174,10 +174,9 @@ that matches the specified keyword.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -189,8 +188,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_addforce.txt b/doc/src/fix_addforce.txt
index b2ac95eabb..5bba9acb3f 100644
--- a/doc/src/fix_addforce.txt
+++ b/doc/src/fix_addforce.txt
@@ -103,12 +103,12 @@ converge properly.
 
 :line
 
-Styles with a suffix are functionally the same as the corresponding
-style without the suffix.  They have been optimized to run faster,
-depending on your available hardware, as discussed in
-"Section 5"_Section_accelerate.html of the manual.  The
-accelerated styles take the same arguments and should produce the same
-results, except for round-off and precision issues.
+Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
+functionally the same as the corresponding style without the suffix.
+They have been optimized to run faster, depending on your available
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -120,8 +120,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_aveforce.txt b/doc/src/fix_aveforce.txt
index 5d7dec3e6a..4944996695 100644
--- a/doc/src/fix_aveforce.txt
+++ b/doc/src/fix_aveforce.txt
@@ -63,12 +63,12 @@ to it.
 
 :line
 
-Styles with a suffix are functionally the same as the corresponding
-style without the suffix.  They have been optimized to run faster,
-depending on your available hardware, as discussed in
-"Section 5"_Section_accelerate.html of the manual.  The
-accelerated styles take the same arguments and should produce the same
-results, except for round-off and precision issues.
+Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
+functionally the same as the corresponding style without the suffix.
+They have been optimized to run faster, depending on your available
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -80,8 +80,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_deform.txt b/doc/src/fix_deform.txt
index c870c73bdc..681986561a 100644
--- a/doc/src/fix_deform.txt
+++ b/doc/src/fix_deform.txt
@@ -94,7 +94,7 @@ nvt/sllod"_fix_nvt_sllod.html and "compute
 temp/deform"_compute_temp_deform.html commands for more details.  Note
 that simulation of a continuously extended system (extensional flow)
 can be modeled using the "USER-UEF
-package"_Section_packages.html#USER-UEF and its "fix
+package"_Packages_details.html#USER-UEF and its "fix
 commands"_fix_nh_uef.html.
 
 For the {x}, {y}, {z} parameters, the associated dimension cannot be
@@ -550,10 +550,9 @@ command if you want to include lattice spacings in a variable formula.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -565,8 +564,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
diff --git a/doc/src/fix_dpd_energy.txt b/doc/src/fix_dpd_energy.txt
index 1c10d954d6..4f2b5d573f 100644
--- a/doc/src/fix_dpd_energy.txt
+++ b/doc/src/fix_dpd_energy.txt
@@ -50,10 +50,9 @@ examples/USER/dpd directory.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -65,8 +64,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_enforce2d.txt b/doc/src/fix_enforce2d.txt
index 4bbf41d25d..67b351e4b8 100644
--- a/doc/src/fix_enforce2d.txt
+++ b/doc/src/fix_enforce2d.txt
@@ -31,10 +31,9 @@ not move from their initial z coordinate.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -46,8 +45,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_eos_table_rx.txt b/doc/src/fix_eos_table_rx.txt
index 0c87874347..f74a838c47 100644
--- a/doc/src/fix_eos_table_rx.txt
+++ b/doc/src/fix_eos_table_rx.txt
@@ -156,10 +156,9 @@ no      0.93 0.00 0.000 -1.76 :pre
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -171,8 +170,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_freeze.txt b/doc/src/fix_freeze.txt
index a63ee4cb32..9619f4120b 100644
--- a/doc/src/fix_freeze.txt
+++ b/doc/src/fix_freeze.txt
@@ -31,12 +31,12 @@ using "fix setforce"_fix_setforce.html.
 
 :line
 
-Styles with a suffix are functionally the same as the corresponding
-style without the suffix.  They have been optimized to run faster,
-depending on your available hardware, as discussed in
-"Section 5"_Section_accelerate.html of the manual.  The
-accelerated styles take the same arguments and should produce the same
-results, except for round-off and precision issues.
+Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
+functionally the same as the corresponding style without the suffix.
+They have been optimized to run faster, depending on your available
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -48,8 +48,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_gravity.txt b/doc/src/fix_gravity.txt
index dae8ac5ed0..f39955d4f8 100644
--- a/doc/src/fix_gravity.txt
+++ b/doc/src/fix_gravity.txt
@@ -90,10 +90,9 @@ field.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -105,8 +104,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_langevin.txt b/doc/src/fix_langevin.txt
index 93c73f5a5d..6ab236e572 100644
--- a/doc/src/fix_langevin.txt
+++ b/doc/src/fix_langevin.txt
@@ -264,10 +264,9 @@ generates an average temperature of 220 K, instead of 300 K.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -279,8 +278,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_momentum.txt b/doc/src/fix_momentum.txt
index bcf4465fb8..aa5199ac14 100644
--- a/doc/src/fix_momentum.txt
+++ b/doc/src/fix_momentum.txt
@@ -61,10 +61,9 @@ initial velocities with zero aggregate linear and/or angular momentum.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -76,8 +75,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
diff --git a/doc/src/fix_nh.txt b/doc/src/fix_nh.txt
index 41d0e6438f..e3a39c6bc6 100644
--- a/doc/src/fix_nh.txt
+++ b/doc/src/fix_nh.txt
@@ -484,10 +484,9 @@ the various ways to do this.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -499,8 +498,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_nph_asphere.txt b/doc/src/fix_nph_asphere.txt
index 8c35b6a1a7..ff8c300c47 100644
--- a/doc/src/fix_nph_asphere.txt
+++ b/doc/src/fix_nph_asphere.txt
@@ -81,10 +81,9 @@ It also means that changing attributes of {thermo_temp} or
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -96,8 +95,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
diff --git a/doc/src/fix_nph_body.txt b/doc/src/fix_nph_body.txt
index 1e590f1cb3..9263470e9e 100644
--- a/doc/src/fix_nph_body.txt
+++ b/doc/src/fix_nph_body.txt
@@ -80,10 +80,9 @@ It also means that changing attributes of {thermo_temp} or
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -95,8 +94,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
diff --git a/doc/src/fix_nph_sphere.txt b/doc/src/fix_nph_sphere.txt
index 62b45edfd7..ba3b2f6c06 100644
--- a/doc/src/fix_nph_sphere.txt
+++ b/doc/src/fix_nph_sphere.txt
@@ -90,10 +90,9 @@ It also means that changing attributes of {thermo_temp} or
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -105,8 +104,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
diff --git a/doc/src/fix_nphug.txt b/doc/src/fix_nphug.txt
index 292e46f94a..4f696e9590 100644
--- a/doc/src/fix_nphug.txt
+++ b/doc/src/fix_nphug.txt
@@ -140,10 +140,9 @@ It also means that changing attributes of {thermo_temp} or
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -155,8 +154,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_npt_asphere.txt b/doc/src/fix_npt_asphere.txt
index 5f3979e36e..a21caa1042 100644
--- a/doc/src/fix_npt_asphere.txt
+++ b/doc/src/fix_npt_asphere.txt
@@ -105,10 +105,9 @@ thermal degrees of freedom, and the bias is added back in.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -120,8 +119,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
diff --git a/doc/src/fix_npt_body.txt b/doc/src/fix_npt_body.txt
index d89bf19db2..0f678a1b7d 100644
--- a/doc/src/fix_npt_body.txt
+++ b/doc/src/fix_npt_body.txt
@@ -104,10 +104,9 @@ thermal degrees of freedom, and the bias is added back in.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -119,8 +118,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
diff --git a/doc/src/fix_npt_sphere.txt b/doc/src/fix_npt_sphere.txt
index c4cf2cb08d..862f95603f 100644
--- a/doc/src/fix_npt_sphere.txt
+++ b/doc/src/fix_npt_sphere.txt
@@ -115,10 +115,9 @@ thermal degrees of freedom, and the bias is added back in.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -130,8 +129,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
diff --git a/doc/src/fix_nve.txt b/doc/src/fix_nve.txt
index c04c17858e..ac9cb53b50 100644
--- a/doc/src/fix_nve.txt
+++ b/doc/src/fix_nve.txt
@@ -34,10 +34,9 @@ ensemble.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -49,8 +48,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_nve_asphere.txt b/doc/src/fix_nve_asphere.txt
index 1f31fb9679..5be7a7aa68 100644
--- a/doc/src/fix_nve_asphere.txt
+++ b/doc/src/fix_nve_asphere.txt
@@ -45,10 +45,9 @@ This fix is not invoked during "energy minimization"_minimize.html.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -60,8 +59,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_nve_sphere.txt b/doc/src/fix_nve_sphere.txt
index 21dc6cba8a..cfe73a854d 100644
--- a/doc/src/fix_nve_sphere.txt
+++ b/doc/src/fix_nve_sphere.txt
@@ -65,10 +65,9 @@ moment of inertia, as used in the time integration.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -80,8 +79,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_nvt_asphere.txt b/doc/src/fix_nvt_asphere.txt
index 21b900f16a..031c60e4be 100644
--- a/doc/src/fix_nvt_asphere.txt
+++ b/doc/src/fix_nvt_asphere.txt
@@ -86,10 +86,9 @@ thermal degrees of freedom, and the bias is added back in.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -101,8 +100,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
diff --git a/doc/src/fix_nvt_body.txt b/doc/src/fix_nvt_body.txt
index 6a5e09ba7f..80de7fd7c3 100644
--- a/doc/src/fix_nvt_body.txt
+++ b/doc/src/fix_nvt_body.txt
@@ -85,10 +85,9 @@ thermal degrees of freedom, and the bias is added back in.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -100,8 +99,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
diff --git a/doc/src/fix_nvt_sllod.txt b/doc/src/fix_nvt_sllod.txt
index 392dbc281c..bb3c092939 100644
--- a/doc/src/fix_nvt_sllod.txt
+++ b/doc/src/fix_nvt_sllod.txt
@@ -109,10 +109,9 @@ thermal degrees of freedom, and the bias is added back in.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -124,8 +123,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
diff --git a/doc/src/fix_nvt_sphere.txt b/doc/src/fix_nvt_sphere.txt
index ecf0922b79..897d5606d7 100644
--- a/doc/src/fix_nvt_sphere.txt
+++ b/doc/src/fix_nvt_sphere.txt
@@ -96,10 +96,9 @@ thermal degrees of freedom, and the bias is added back in.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -111,8 +110,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
diff --git a/doc/src/fix_qeq_comb.txt b/doc/src/fix_qeq_comb.txt
index 7f82404127..783dc3133c 100644
--- a/doc/src/fix_qeq_comb.txt
+++ b/doc/src/fix_qeq_comb.txt
@@ -62,10 +62,9 @@ equilibration calculation is written to the specified file.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -77,8 +76,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_qeq_reax.txt b/doc/src/fix_qeq_reax.txt
index 18450c7cd5..a534a66c09 100644
--- a/doc/src/fix_qeq_reax.txt
+++ b/doc/src/fix_qeq_reax.txt
@@ -80,10 +80,9 @@ This fix is invoked during "energy minimization"_minimize.html.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -95,8 +94,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_rigid.txt b/doc/src/fix_rigid.txt
index 8d803ac6da..f3dd20daa3 100644
--- a/doc/src/fix_rigid.txt
+++ b/doc/src/fix_rigid.txt
@@ -690,10 +690,9 @@ rigid/nvt.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -705,8 +704,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_rx.txt b/doc/src/fix_rx.txt
index 0810a34740..aff3303f43 100644
--- a/doc/src/fix_rx.txt
+++ b/doc/src/fix_rx.txt
@@ -186,10 +186,9 @@ read_data    data.dpd fix foo_SPECIES NULL Species
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -201,8 +200,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_setforce.txt b/doc/src/fix_setforce.txt
index f5be0f93a5..0af1c92922 100644
--- a/doc/src/fix_setforce.txt
+++ b/doc/src/fix_setforce.txt
@@ -65,12 +65,12 @@ to it.
 
 :line
 
-Styles with a r {kk} suffix are functionally the same as the
-corresponding style without the suffix.  They have been optimized to
-run faster, depending on your available hardware, as discussed in
-"Section 5"_Section_accelerate.html of the manual.  The
-accelerated styles take the same arguments and should produce the same
-results, except for round-off and precision issues.
+Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
+functionally the same as the corresponding style without the suffix.
+They have been optimized to run faster, depending on your available
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 The region keyword is also supported by Kokkos, but a Kokkos-enabled
 region must be used. See the region "region"_region.html command for
@@ -85,8 +85,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_shake.txt b/doc/src/fix_shake.txt
index 46452a1f7e..7428b30a14 100644
--- a/doc/src/fix_shake.txt
+++ b/doc/src/fix_shake.txt
@@ -145,12 +145,12 @@ info of atoms in the molecule.
 
 :line
 
-Styles with a suffix are functionally the same as the corresponding
-style without the suffix.  They have been optimized to run faster,
-depending on your available hardware, as discussed in
-"Section 5"_Section_accelerate.html of the manual.  The
-accelerated styles take the same arguments and should produce the same
-results, except for round-off and precision issues.
+Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
+functionally the same as the corresponding style without the suffix.
+They have been optimized to run faster, depending on your available
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -162,8 +162,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_shardlow.txt b/doc/src/fix_shardlow.txt
index 24726d8610..6d14346334 100644
--- a/doc/src/fix_shardlow.txt
+++ b/doc/src/fix_shardlow.txt
@@ -56,10 +56,9 @@ examples/USER/dpd directory.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -71,8 +70,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_wall.txt b/doc/src/fix_wall.txt
index e814c89a07..959a103f02 100644
--- a/doc/src/fix_wall.txt
+++ b/doc/src/fix_wall.txt
@@ -288,10 +288,9 @@ option for this fix.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -303,8 +302,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/fix_wall_reflect.txt b/doc/src/fix_wall_reflect.txt
index 954ec65bf6..5380bdf738 100644
--- a/doc/src/fix_wall_reflect.txt
+++ b/doc/src/fix_wall_reflect.txt
@@ -130,10 +130,9 @@ position = c0 + A (1 - cos(omega*delta)) :pre
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -145,8 +144,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/improper_class2.txt b/doc/src/improper_class2.txt
index 14ec6258de..ef2abf5091 100644
--- a/doc/src/improper_class2.txt
+++ b/doc/src/improper_class2.txt
@@ -87,10 +87,9 @@ radians internally; hence the units of M are in energy/radian^2.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -102,8 +101,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/improper_cossq.txt b/doc/src/improper_cossq.txt
index 138a6a1650..22ba990ba4 100644
--- a/doc/src/improper_cossq.txt
+++ b/doc/src/improper_cossq.txt
@@ -53,10 +53,9 @@ X0 (degrees) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -68,8 +67,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/improper_cvff.txt b/doc/src/improper_cvff.txt
index 5f69eccc60..1662d93b14 100644
--- a/doc/src/improper_cvff.txt
+++ b/doc/src/improper_cvff.txt
@@ -54,10 +54,9 @@ n (0,1,2,3,4,6) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -69,8 +68,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/improper_fourier.txt b/doc/src/improper_fourier.txt
index f9062da207..99132b8931 100644
--- a/doc/src/improper_fourier.txt
+++ b/doc/src/improper_fourier.txt
@@ -48,10 +48,9 @@ all  (integer >= 0) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -63,8 +62,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/improper_harmonic.txt b/doc/src/improper_harmonic.txt
index bb17e5a641..f37338e468 100644
--- a/doc/src/improper_harmonic.txt
+++ b/doc/src/improper_harmonic.txt
@@ -58,10 +58,9 @@ internally; hence the units of K are in energy/radian^2.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -73,8 +72,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/improper_ring.txt b/doc/src/improper_ring.txt
index c02d392474..84c35f9f5c 100644
--- a/doc/src/improper_ring.txt
+++ b/doc/src/improper_ring.txt
@@ -57,10 +57,9 @@ theta0 (degrees) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -72,8 +71,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/improper_umbrella.txt b/doc/src/improper_umbrella.txt
index d6df9ee6cc..e72cc7f0ad 100644
--- a/doc/src/improper_umbrella.txt
+++ b/doc/src/improper_umbrella.txt
@@ -51,10 +51,9 @@ omega0 (degrees) :ul
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -66,8 +65,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/kspace_style.txt b/doc/src/kspace_style.txt
index 4f27c9aa78..8dbb3dde49 100644
--- a/doc/src/kspace_style.txt
+++ b/doc/src/kspace_style.txt
@@ -145,8 +145,8 @@ speedup in the KSpace time (8x less mesh points, 2x more expensive).
 However, for low relative accuracy, the staggered PPPM mesh size may
 be essentially the same as for regular PPPM, which means the method
 will be up to 2x slower in the KSpace time (simply 2x more expensive).
-For more details and timings, see
-"Section 5"_Section_accelerate.html.
+For more details and timings, see the "Speed tips"_Speed_tips.html doc
+page.
 
 NOTE: Using {pppm/stagger} may not give the same increase in the
 accuracy of energy and pressure as it does in forces, so some caution
@@ -267,10 +267,9 @@ relative RMS error.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 More specifically, the {pppm/gpu} style performs charge assignment and
 force interpolation calculations on the GPU.  These processes are
@@ -291,8 +290,8 @@ KOKKOS, USER-OMP, and OPT packages respectively.  They are only
 enabled if LAMMPS was built with those packages.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index 4274ef48b3..f96960ff39 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -4,13 +4,11 @@ Manual.html
 Section_intro.html
 Section_start.html
 Section_commands.html
-Section_packages.html
-Section_accelerate.html
-accelerate_gpu.html
-accelerate_intel.html
-accelerate_kokkos.html
-accelerate_omp.html
-accelerate_opt.html
+Packages.html
+Packages_standard.html
+Packages_user.html
+Packages_details.html
+Speed.html
 Section_howto.html
 Examples.html
 Section_perf.html
diff --git a/doc/src/package.txt b/doc/src/package.txt
index 5fd42f67d3..81e1db9bd8 100644
--- a/doc/src/package.txt
+++ b/doc/src/package.txt
@@ -149,9 +149,9 @@ the style options are set, either to default values or to specified
 settings.  I.e. settings from previous invocations do not persist
 across multiple invocations.
 
-See the "Section 5.3"_Section_accelerate.html#acc_3 section of the
-manual for more details about using the various accelerator packages
-for speeding up LAMMPS simulations.
+See the "Speed packages"_Speed_packages.html doc page for more details
+about using the various accelerator packages for speeding up LAMMPS
+simulations.
 
 :line
 
diff --git a/doc/src/pair_adp.txt b/doc/src/pair_adp.txt
index 9d2a48dcbc..1ba59b7732 100644
--- a/doc/src/pair_adp.txt
+++ b/doc/src/pair_adp.txt
@@ -125,10 +125,9 @@ array tabulated with a scaling by r.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -140,8 +139,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_agni.txt b/doc/src/pair_agni.txt
index 402e537dad..352e00249a 100644
--- a/doc/src/pair_agni.txt
+++ b/doc/src/pair_agni.txt
@@ -58,11 +58,11 @@ and input files are provided in the examples/USER/misc/agni directory.
 :line
 
 Styles with {omp} suffix is functionally the same as the corresponding
-style without the suffix. They have been optimized to run faster, depending
-on your available hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated style takes the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+style without the suffix. They have been optimized to run faster,
+depending on your available hardware, as discussed on the "Speed
+packages"_Speed_packages.html doc page.  The accelerated style takes
+the same arguments and should produce the same results, except for
+round-off and precision issues.
 
 The accelerated style is part of the USER-OMP.  They are only enabled if
 LAMMPS was built with those packages.  See the "Making
@@ -73,8 +73,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_airebo.txt b/doc/src/pair_airebo.txt
index 1aa017f278..b5add21f24 100644
--- a/doc/src/pair_airebo.txt
+++ b/doc/src/pair_airebo.txt
@@ -176,10 +176,9 @@ thermo_style custom step temp epair v_REBO v_LJ v_TORSION :pre
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -191,8 +190,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_beck.txt b/doc/src/pair_beck.txt
index e160f09b3d..1aca4b4f9a 100644
--- a/doc/src/pair_beck.txt
+++ b/doc/src/pair_beck.txt
@@ -51,10 +51,9 @@ Rc is used.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -66,8 +65,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_born.txt b/doc/src/pair_born.txt
index f867107426..2504fb7e25 100644
--- a/doc/src/pair_born.txt
+++ b/doc/src/pair_born.txt
@@ -145,10 +145,9 @@ pair_style command.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -160,8 +159,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_buck.txt b/doc/src/pair_buck.txt
index d18b39d5d9..de247b9c01 100644
--- a/doc/src/pair_buck.txt
+++ b/doc/src/pair_buck.txt
@@ -140,10 +140,9 @@ pair_style command.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -155,8 +154,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_buck_long.txt b/doc/src/pair_buck_long.txt
index 05e760e1b2..94bf6a2d7c 100644
--- a/doc/src/pair_buck_long.txt
+++ b/doc/src/pair_buck_long.txt
@@ -102,10 +102,9 @@ global Coulombic cutoff is allowed.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -117,8 +116,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_charmm.txt b/doc/src/pair_charmm.txt
index 75a8e4bff9..af20661bbd 100644
--- a/doc/src/pair_charmm.txt
+++ b/doc/src/pair_charmm.txt
@@ -184,10 +184,9 @@ the pair_style command.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -199,8 +198,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_class2.txt b/doc/src/pair_class2.txt
index 36fae5068b..e62971a645 100644
--- a/doc/src/pair_class2.txt
+++ b/doc/src/pair_class2.txt
@@ -102,10 +102,9 @@ cutoff distance.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -117,8 +116,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_colloid.txt b/doc/src/pair_colloid.txt
index 83b15b358b..a7bb0db08a 100644
--- a/doc/src/pair_colloid.txt
+++ b/doc/src/pair_colloid.txt
@@ -127,10 +127,9 @@ commands for efficiency: "neighbor multi"_neighbor.html and
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -142,8 +141,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_comb.txt b/doc/src/pair_comb.txt
index f5461b1cbc..6949ca50c2 100644
--- a/doc/src/pair_comb.txt
+++ b/doc/src/pair_comb.txt
@@ -112,10 +112,9 @@ nor file {ffield.comb3} with style {comb}.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -127,8 +126,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_coul.txt b/doc/src/pair_coul.txt
index aa3a008bd3..650575d055 100644
--- a/doc/src/pair_coul.txt
+++ b/doc/src/pair_coul.txt
@@ -268,10 +268,9 @@ command.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -283,8 +282,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_dipole.txt b/doc/src/pair_dipole.txt
index 2516e5eae4..e7d196d599 100644
--- a/doc/src/pair_dipole.txt
+++ b/doc/src/pair_dipole.txt
@@ -186,10 +186,9 @@ type pair.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -201,8 +200,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_dpd.txt b/doc/src/pair_dpd.txt
index 9e29e93430..a36029ea63 100644
--- a/doc/src/pair_dpd.txt
+++ b/doc/src/pair_dpd.txt
@@ -110,10 +110,9 @@ random force.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -125,8 +124,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_dpd_fdt.txt b/doc/src/pair_dpd_fdt.txt
index 867f3f2315..129d3c84af 100644
--- a/doc/src/pair_dpd_fdt.txt
+++ b/doc/src/pair_dpd_fdt.txt
@@ -129,10 +129,9 @@ significantly larger timesteps to be taken.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -144,8 +143,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_eam.txt b/doc/src/pair_eam.txt
index 03e77f53ab..8d4d11341c 100644
--- a/doc/src/pair_eam.txt
+++ b/doc/src/pair_eam.txt
@@ -371,10 +371,9 @@ are listed.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -386,7 +385,7 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for more
+See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
 
 :line
diff --git a/doc/src/pair_edip.txt b/doc/src/pair_edip.txt
index e5b1420b59..f0d1927812 100644
--- a/doc/src/pair_edip.txt
+++ b/doc/src/pair_edip.txt
@@ -109,10 +109,9 @@ the EDIP package.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -124,8 +123,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_eim.txt b/doc/src/pair_eim.txt
index 75ad2d4683..7f94d919f2 100644
--- a/doc/src/pair_eim.txt
+++ b/doc/src/pair_eim.txt
@@ -136,10 +136,9 @@ needs.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -151,8 +150,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_exp6_rx.txt b/doc/src/pair_exp6_rx.txt
index 7eafa23543..dec660fd1d 100644
--- a/doc/src/pair_exp6_rx.txt
+++ b/doc/src/pair_exp6_rx.txt
@@ -153,10 +153,9 @@ pair interaction.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -168,8 +167,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_gauss.txt b/doc/src/pair_gauss.txt
index f6f46a2de8..7716f89f17 100644
--- a/doc/src/pair_gauss.txt
+++ b/doc/src/pair_gauss.txt
@@ -84,10 +84,9 @@ is used.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -99,8 +98,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch7_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_gayberne.txt b/doc/src/pair_gayberne.txt
index c923578586..e9a98a0b84 100644
--- a/doc/src/pair_gayberne.txt
+++ b/doc/src/pair_gayberne.txt
@@ -133,10 +133,9 @@ pair_coeff sigma to 1.0 as well.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -148,8 +147,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_gran.txt b/doc/src/pair_gran.txt
index d7e87af013..86b04f96de 100644
--- a/doc/src/pair_gran.txt
+++ b/doc/src/pair_gran.txt
@@ -179,10 +179,9 @@ potential.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -194,8 +193,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_gromacs.txt b/doc/src/pair_gromacs.txt
index ec84a2d57a..7daf805e2b 100644
--- a/doc/src/pair_gromacs.txt
+++ b/doc/src/pair_gromacs.txt
@@ -91,10 +91,9 @@ cutoff(s) specified in the pair_style command.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -106,8 +105,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_hbond_dreiding.txt b/doc/src/pair_hbond_dreiding.txt
index d3cf90ec14..45f852c254 100644
--- a/doc/src/pair_hbond_dreiding.txt
+++ b/doc/src/pair_hbond_dreiding.txt
@@ -166,10 +166,9 @@ optional parameters.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -181,8 +180,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_hybrid.txt b/doc/src/pair_hybrid.txt
index d37dedc709..9503256d26 100644
--- a/doc/src/pair_hybrid.txt
+++ b/doc/src/pair_hybrid.txt
@@ -315,8 +315,8 @@ off C/C interaction, i.e. by setting the appropriate coefficients to
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.
 
 Since the {hybrid} and {hybrid/overlay} styles delegate computation to
 the individual sub-styles, the suffix versions of the {hybrid} and
@@ -334,8 +334,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_kim.txt b/doc/src/pair_kim.txt
index c5d910e27c..fc2c1405af 100644
--- a/doc/src/pair_kim.txt
+++ b/doc/src/pair_kim.txt
@@ -46,8 +46,8 @@ are included in the KIM library by default, in the "What is in the KIM
 API source package?" section.
 
 To use this pair style, you must first download and install the KIM
-API library from the "OpenKIM website"_https://openkim.org.  The "KIM
-section of Section packages"_Section_packages.html#KIM has
+API library from the "OpenKIM website"_https://openkim.org.  The KIM
+section of the "Packages details"_Packages_details.html doc page has
 instructions on how to do this with a simple make command, when
 building LAMMPS.
 
diff --git a/doc/src/pair_lj.txt b/doc/src/pair_lj.txt
index e297d479bc..c2968ffdf3 100644
--- a/doc/src/pair_lj.txt
+++ b/doc/src/pair_lj.txt
@@ -269,10 +269,9 @@ pair_style command.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -284,8 +283,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_lj96.txt b/doc/src/pair_lj96.txt
index 83f6ec063d..a0a9971474 100644
--- a/doc/src/pair_lj96.txt
+++ b/doc/src/pair_lj96.txt
@@ -49,10 +49,9 @@ cutoff specified in the pair_style command is used.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -64,8 +63,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_lj_cubic.txt b/doc/src/pair_lj_cubic.txt
index 4ca8c3c141..c4e2af5062 100644
--- a/doc/src/pair_lj_cubic.txt
+++ b/doc/src/pair_lj_cubic.txt
@@ -63,10 +63,9 @@ located at rmin = 2^(1/6)*sigma. In the above example, sigma =
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -78,8 +77,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_lj_expand.txt b/doc/src/pair_lj_expand.txt
index e0838426f6..c156fefef2 100644
--- a/doc/src/pair_lj_expand.txt
+++ b/doc/src/pair_lj_expand.txt
@@ -53,10 +53,9 @@ optional.  If not specified, the global LJ cutoff is used.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -68,8 +67,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_lj_long.txt b/doc/src/pair_lj_long.txt
index 6be4562d18..bc851adb74 100644
--- a/doc/src/pair_lj_long.txt
+++ b/doc/src/pair_lj_long.txt
@@ -156,10 +156,9 @@ specified in the pair_style command.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -171,8 +170,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_lj_smooth.txt b/doc/src/pair_lj_smooth.txt
index b1678cad58..653520966b 100644
--- a/doc/src/pair_lj_smooth.txt
+++ b/doc/src/pair_lj_smooth.txt
@@ -62,10 +62,9 @@ specified, the global values for Rin and Rc are used.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -77,8 +76,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_lj_smooth_linear.txt b/doc/src/pair_lj_smooth_linear.txt
index 5f7c226cee..aebde2e653 100644
--- a/doc/src/pair_lj_smooth_linear.txt
+++ b/doc/src/pair_lj_smooth_linear.txt
@@ -49,10 +49,9 @@ LJ cutoff specified in the pair_style command is used.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -64,8 +63,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_lj_soft.txt b/doc/src/pair_lj_soft.txt
index 2ef133da55..7add9f623d 100644
--- a/doc/src/pair_lj_soft.txt
+++ b/doc/src/pair_lj_soft.txt
@@ -207,10 +207,9 @@ directory tree, under examples/USER/fep.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -222,8 +221,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_meam_spline.txt b/doc/src/pair_meam_spline.txt
index 6653b397a0..74242e32b9 100644
--- a/doc/src/pair_meam_spline.txt
+++ b/doc/src/pair_meam_spline.txt
@@ -106,10 +106,9 @@ MEAM files.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -121,8 +120,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_morse.txt b/doc/src/pair_morse.txt
index 3eb5ac5afe..34876011a1 100644
--- a/doc/src/pair_morse.txt
+++ b/doc/src/pair_morse.txt
@@ -101,10 +101,9 @@ cutoff is used.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -116,8 +115,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_multi_lucy_rx.txt b/doc/src/pair_multi_lucy_rx.txt
index 57abcf4a4c..b043030907 100644
--- a/doc/src/pair_multi_lucy_rx.txt
+++ b/doc/src/pair_multi_lucy_rx.txt
@@ -204,10 +204,9 @@ This pair style can only be used via the {pair} keyword of the
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -219,8 +218,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_nb3b_harmonic.txt b/doc/src/pair_nb3b_harmonic.txt
index 2395707fb4..e6e103f517 100644
--- a/doc/src/pair_nb3b_harmonic.txt
+++ b/doc/src/pair_nb3b_harmonic.txt
@@ -92,10 +92,9 @@ a particular simulation; LAMMPS ignores those entries.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -107,8 +106,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_nm.txt b/doc/src/pair_nm.txt
index 81cea1a38d..08c3393993 100644
--- a/doc/src/pair_nm.txt
+++ b/doc/src/pair_nm.txt
@@ -133,10 +133,9 @@ the "run_style respa"_run_style.html command.  They do not support the
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -148,8 +147,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Restrictions:]
 
diff --git a/doc/src/pair_peri.txt b/doc/src/pair_peri.txt
index deca093e3b..4327003057 100644
--- a/doc/src/pair_peri.txt
+++ b/doc/src/pair_peri.txt
@@ -139,10 +139,9 @@ details please see the description in "(Mtchell2011a)".
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -154,8 +153,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_reaxc.txt b/doc/src/pair_reaxc.txt
index 39759b3111..8d8c7e84e7 100644
--- a/doc/src/pair_reaxc.txt
+++ b/doc/src/pair_reaxc.txt
@@ -50,11 +50,11 @@ as a package.
 The {reax/c/kk} style is a Kokkos version of the ReaxFF potential that
 is derived from the {reax/c} style. The Kokkos version can run on GPUs
 and can also use OpenMP multithreading. For more information about the
-Kokkos package, see "Section 4"_Section_packages.html#kokkos and
-"Section 5.3.3"_accelerate_kokkos.html.  One important consideration
-when using the {reax/c/kk} style is the choice of either half or full
-neighbor lists. This setting can be changed using the Kokkos
-"package"_package.html command.
+Kokkos package, see "Packages details"_Packages_details.html and
+"Speed kokkos"_Speed_kokkos.html doc pages.  One important
+consideration when using the {reax/c/kk} style is the choice of either
+half or full neighbor lists. This setting can be changed using the
+Kokkos "package"_package.html command.
 
 The {reax/c} style differs from the "pair_style reax"_pair_reax.html
 command in the lo-level implementation details.  The {reax} style is a
@@ -303,10 +303,9 @@ This pair style can only be used via the {pair} keyword of the
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -318,8 +317,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_resquared.txt b/doc/src/pair_resquared.txt
index 9ad95eb5fc..6ea5c73c0d 100644
--- a/doc/src/pair_resquared.txt
+++ b/doc/src/pair_resquared.txt
@@ -145,10 +145,9 @@ specified in the pair_style command is used.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -160,8 +159,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_sdk.txt b/doc/src/pair_sdk.txt
index 360136a4ea..4cd56bc43d 100644
--- a/doc/src/pair_sdk.txt
+++ b/doc/src/pair_sdk.txt
@@ -85,10 +85,9 @@ pair_style command.
 Styles with a {gpu}, {intel}, {kk}, {omp} or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP, and OPT packages respectively.  They are only enabled if
@@ -100,8 +99,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_snap.txt b/doc/src/pair_snap.txt
index 27dcf6082b..c3d6e67e82 100644
--- a/doc/src/pair_snap.txt
+++ b/doc/src/pair_snap.txt
@@ -175,10 +175,9 @@ This pair style can only be used via the {pair} keyword of the
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -190,8 +189,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_soft.txt b/doc/src/pair_soft.txt
index 08fa88c477..adbfa596c9 100644
--- a/doc/src/pair_soft.txt
+++ b/doc/src/pair_soft.txt
@@ -82,10 +82,9 @@ variables.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -97,8 +96,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_sw.txt b/doc/src/pair_sw.txt
index 4932fe55d3..7c9ce4a4f9 100644
--- a/doc/src/pair_sw.txt
+++ b/doc/src/pair_sw.txt
@@ -144,10 +144,9 @@ taken from the ij and ik pairs (sigma, a, gamma)
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -164,8 +163,8 @@ additional 5 to 10 percent performance improvement when the
 Stillinger-Weber parameters p and q are set to 4 and 0 respectively.
 These parameters are common for modeling silicon and water.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_table.txt b/doc/src/pair_table.txt
index b99491b477..f5e69a6d54 100644
--- a/doc/src/pair_table.txt
+++ b/doc/src/pair_table.txt
@@ -217,10 +217,9 @@ one that matches the specified keyword.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -232,8 +231,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_table_rx.txt b/doc/src/pair_table_rx.txt
index cd3a7ef31b..52760c396b 100644
--- a/doc/src/pair_table_rx.txt
+++ b/doc/src/pair_table_rx.txt
@@ -227,10 +227,9 @@ This pair style can only be used via the {pair} keyword of the
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -242,8 +241,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_tersoff.txt b/doc/src/pair_tersoff.txt
index 918e889924..70fe207f0a 100644
--- a/doc/src/pair_tersoff.txt
+++ b/doc/src/pair_tersoff.txt
@@ -179,10 +179,9 @@ defined in various papers.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -194,8 +193,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_tersoff_mod.txt b/doc/src/pair_tersoff_mod.txt
index e0c2b5a5cb..aced6d40d6 100644
--- a/doc/src/pair_tersoff_mod.txt
+++ b/doc/src/pair_tersoff_mod.txt
@@ -131,10 +131,9 @@ for SiSiSi means Si bonded to a Si with another Si atom influencing the bond.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -146,8 +145,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_tersoff_zbl.txt b/doc/src/pair_tersoff_zbl.txt
index 21d57e4e88..838c2f39cf 100644
--- a/doc/src/pair_tersoff_zbl.txt
+++ b/doc/src/pair_tersoff_zbl.txt
@@ -189,10 +189,9 @@ providing the base ZBL implementation.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -204,8 +203,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_thole.txt b/doc/src/pair_thole.txt
index 41a4059cee..11d4b85cff 100644
--- a/doc/src/pair_thole.txt
+++ b/doc/src/pair_thole.txt
@@ -130,10 +130,9 @@ the {pair_style} command line.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -145,8 +144,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 [Mixing]:
 
diff --git a/doc/src/pair_ufm.txt b/doc/src/pair_ufm.txt
index 88a22864cc..5af8741502 100644
--- a/doc/src/pair_ufm.txt
+++ b/doc/src/pair_ufm.txt
@@ -69,10 +69,9 @@ NOTE: The thermodynamic integration procedure can be performed with this potenti
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -84,8 +83,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_vashishta.txt b/doc/src/pair_vashishta.txt
index d9c66d45c0..e90a9d8f50 100644
--- a/doc/src/pair_vashishta.txt
+++ b/doc/src/pair_vashishta.txt
@@ -171,10 +171,9 @@ two-body parameters from the CCC and CSiSi entries.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -186,8 +185,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_yukawa.txt b/doc/src/pair_yukawa.txt
index e7c063ded9..979165dda0 100644
--- a/doc/src/pair_yukawa.txt
+++ b/doc/src/pair_yukawa.txt
@@ -49,10 +49,9 @@ cutoff is used.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -64,8 +63,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_yukawa_colloid.txt b/doc/src/pair_yukawa_colloid.txt
index 2037a9451f..a1752c261e 100644
--- a/doc/src/pair_yukawa_colloid.txt
+++ b/doc/src/pair_yukawa_colloid.txt
@@ -80,10 +80,9 @@ yukawa/colloid cutoff is used.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -95,8 +94,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/pair_zbl.txt b/doc/src/pair_zbl.txt
index 1984cd831f..0507083295 100644
--- a/doc/src/pair_zbl.txt
+++ b/doc/src/pair_zbl.txt
@@ -71,10 +71,9 @@ copper.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section 5"_Section_accelerate.html
-of the manual.  The accelerated styles take the same arguments and
-should produce the same results, except for round-off and precision
-issues.
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
@@ -86,8 +85,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/region.txt b/doc/src/region.txt
index 5039e4a516..1ac3861e67 100644
--- a/doc/src/region.txt
+++ b/doc/src/region.txt
@@ -358,12 +358,12 @@ sub-regions can be defined with the {open} keyword.
 
 :line
 
-Styles with a {kk} suffix are functionally the same as the
-corresponding style without the suffix.  They have been optimized to
-run faster, depending on your available hardware, as discussed in
-"Section 5"_Section_accelerate.html of the manual.  The
-accelerated styles take the same arguments and should produce the same
-results, except for round-off and precision issues.
+Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
+functionally the same as the corresponding style without the suffix.
+They have been optimized to run faster, depending on your available
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 The code using the region (such as a fix or compute) must also be supported
 by Kokkos or no acceleration will occur. Currently, only {block} style
@@ -378,8 +378,8 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
diff --git a/doc/src/run_style.txt b/doc/src/run_style.txt
index 7717ede86f..a896a648af 100644
--- a/doc/src/run_style.txt
+++ b/doc/src/run_style.txt
@@ -119,13 +119,13 @@ switches"_Section_start.html#start_6 to change this.  The log and
 screen file for the 2nd partition will not contain thermodynamic
 output beyond the 1st timestep of the run.
 
-See "Section 5"_Section_accelerate.html of the manual for
-performance details of the speed-up offered by the {verlet/split}
-style.  One important performance consideration is the assignment of
-logical processors in the 2 partitions to the physical cores of a
-parallel machine.  The "processors"_processors.html command has
-options to support this, and strategies are discussed in
-"Section 5"_Section_accelerate.html of the manual.
+See the "Speed packages"_Speed_packages.html doc page for performance
+details of the speed-up offered by the {verlet/split} style.  One
+important performance consideration is the assignment of logical
+processors in the 2 partitions to the physical cores of a parallel
+machine.  The "processors"_processors.html command has options to
+support this, and strategies are discussed in "Section
+5"_Section_accelerate.html of the manual.
 
 :line
 
@@ -274,21 +274,21 @@ run_style respa 3 3 4 inner 1 3.0 4.0 middle 2 6.0 7.0 outer 3 :pre
 
 :line
 
-The {respa/omp} styles is a variant of {respa} adapted for use with
+The {respa/omp} style is a variant of {respa} adapted for use with
 pair, bond, angle, dihedral, improper, or kspace styles with an {omp}
-suffix. It is functionally equivalent to {respa} but performs additional
-operations required for managing {omp} styles. For more on {omp} styles
-see the "Section 5"_Section_accelerate.html of the manual.
-Accelerated styles take the same arguments and should produce the same
-results, except for round-off and precision issues.
+suffix. It is functionally equivalent to {respa} but performs
+additional operations required for managing {omp} styles.  For more on
+{omp} styles see the "Speed omp"_Speed_omp.html doc page.  Accelerated
+styles take the same arguments and should produce the same results,
+except for round-off and precision issues.
 
 You can specify {respa/omp} explicitly in your input script, or
 you can use the "-suffix command-line switch"_Section_start.html#start_6
 when you invoke LAMMPS, or you can use the "suffix"_suffix.html
 command in your input script.
 
-See "Section 5"_Section_accelerate.html of the manual for
-more instructions on how to use the accelerated styles effectively.
+See the "Speed packages"_Speed_packages.html doc page for more
+instructions on how to use the accelerated styles effectively.
 
 :line
 
-- 
GitLab


From 34f619ea1d6514d6e231c5acbd8f8589ee77047a Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Mon, 30 Jul 2018 19:04:52 -0400
Subject: [PATCH 121/243] Update lammps.book

---
 doc/src/lammps.book | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index f96960ff39..fe9a64932b 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -9,9 +9,18 @@ Packages_standard.html
 Packages_user.html
 Packages_details.html
 Speed.html
+Speed_bench.html
+Speed_measure.html
+Speed_tips.html
+Speed_packages.html
+Speed_gpu.html
+Speed_intel.html
+Speed_kokkos.html
+Speed_omp.html
+Speed_opt.html
+Speed_compare
 Section_howto.html
 Examples.html
-Section_perf.html
 Tools.html
 Modify.html
 Modify_overview.html
-- 
GitLab


From 57cd1ab55ad6b1f319e01230f25075c73788de93 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Mon, 30 Jul 2018 19:13:26 -0400
Subject: [PATCH 122/243] Add missing extension

---
 doc/src/lammps.book | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index fe9a64932b..f9798da227 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -18,7 +18,7 @@ Speed_intel.html
 Speed_kokkos.html
 Speed_omp.html
 Speed_opt.html
-Speed_compare
+Speed_compare.html
 Section_howto.html
 Examples.html
 Tools.html
-- 
GitLab


From 18a7b1ab4f51b289127beca2df91f88354c7eb90 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Mon, 30 Jul 2018 21:32:12 -0400
Subject: [PATCH 123/243] Fix broken links and duplicate TOC

---
 doc/src/Section_howto.txt     |  2 +-
 doc/src/Speed.txt             |  5 -----
 doc/src/Speed_intel.txt       |  8 ++++----
 doc/src/Speed_omp.txt         |  2 +-
 doc/src/Speed_packages.txt    | 26 +++++++++++++-------------
 doc/src/fix_reax_bonds.txt    |  4 ++--
 doc/src/fix_reaxc_species.txt |  4 ++--
 doc/src/pair_brownian.txt     |  4 ++--
 doc/src/pair_lubricate.txt    |  4 ++--
 doc/src/run_style.txt         |  2 +-
 10 files changed, 28 insertions(+), 33 deletions(-)

diff --git a/doc/src/Section_howto.txt b/doc/src/Section_howto.txt
index 3c5fe47057..f929d3bdab 100644
--- a/doc/src/Section_howto.txt
+++ b/doc/src/Section_howto.txt
@@ -1,4 +1,4 @@
-"Previous Section"_Section_accelerate.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Examples.html :c
+"Previous Section"_Speed.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Examples.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Speed.txt b/doc/src/Speed.txt
index 2339a11c06..1e2097ab1d 100644
--- a/doc/src/Speed.txt
+++ b/doc/src/Speed.txt
@@ -42,11 +42,6 @@ hardware platforms.
 .. toctree::
 
    Speed_packages
-   Speed_gpu
-   Speed_intel
-   Speed_kokkos
-   Speed_omp
-   Speed_opt
    Speed_compare
 
 END_RST -->
diff --git a/doc/src/Speed_intel.txt b/doc/src/Speed_intel.txt
index acf5c3f2f9..08e3fbc4cc 100644
--- a/doc/src/Speed_intel.txt
+++ b/doc/src/Speed_intel.txt
@@ -186,8 +186,8 @@ can start running so that the CPU pipeline is still being used
 efficiently. Although benefits can be seen by launching a MPI task
 for every hardware thread, for multinode simulations, we recommend
 that OpenMP threads are used for SMT instead, either with the
-USER-INTEL package, "USER-OMP package"_accelerate_omp.html, or
-"KOKKOS package"_accelerate_kokkos.html. In the example above, up
+USER-INTEL package, "USER-OMP package"_Speed_omp.html, or
+"KOKKOS package"_Speed_kokkos.html. In the example above, up
 to 36X speedups can be observed by using all 36 physical cores with
 LAMMPS. By using all 72 hardware threads, an additional 10-30%
 performance gain can be achieved.
@@ -389,8 +389,8 @@ performance and/or scalability for simple 2-body potentials such as
 lj/cut or when using LRT mode on processors supporting AVX-512.
 
 Not all styles are supported in the USER-INTEL package. You can mix
-the USER-INTEL package with styles from the "OPT"_accelerate_opt.html
-package or the "USER-OMP package"_accelerate_omp.html. Of course,
+the USER-INTEL package with styles from the "OPT"_Speed_opt.html
+package or the "USER-OMP package"_Speed_omp.html. Of course,
 this requires that these packages were installed at build time. This
 can performed automatically by using "-sf hybrid intel opt" or
 "-sf hybrid intel omp" command-line options. Alternatively, the "opt"
diff --git a/doc/src/Speed_omp.txt b/doc/src/Speed_omp.txt
index 3700580225..9685b6d349 100644
--- a/doc/src/Speed_omp.txt
+++ b/doc/src/Speed_omp.txt
@@ -99,7 +99,7 @@ task, versus running standard LAMMPS with its standard un-accelerated
 styles (in serial or all-MPI parallelization with 1 task/core).  This
 is because many of the USER-OMP styles contain similar optimizations
 to those used in the OPT package, described in "Section
-5.3.5"_accelerate_opt.html.
+5.3.5"_Speed_opt.html.
 
 With multiple threads/task, the optimal choice of number of MPI
 tasks/node and OpenMP threads/task can vary a lot and should always be
diff --git a/doc/src/Speed_packages.txt b/doc/src/Speed_packages.txt
index 18850d52e0..13b5e183db 100644
--- a/doc/src/Speed_packages.txt
+++ b/doc/src/Speed_packages.txt
@@ -23,11 +23,11 @@ pages.
 These are the accelerator packages currently in LAMMPS, either as
 standard or user packages:
 
-"GPU Package"_accelerate_gpu.html : for NVIDIA GPUs as well as OpenCL support
-"USER-INTEL Package"_accelerate_intel.html : for Intel CPUs and Intel Xeon Phi
-"KOKKOS Package"_accelerate_kokkos.html : for Nvidia GPUs, Intel Xeon Phi, and OpenMP threading
-"USER-OMP Package"_accelerate_omp.html : for OpenMP threading and generic CPU optimizations
-"OPT Package"_accelerate_opt.html : generic CPU optimizations :tb(s=:)
+"GPU Package"_Speed_gpu.html : for NVIDIA GPUs as well as OpenCL support
+"USER-INTEL Package"_Speed_intel.html : for Intel CPUs and Intel Xeon Phi
+"KOKKOS Package"_Speed_kokkos.html : for Nvidia GPUs, Intel Xeon Phi, and OpenMP threading
+"USER-OMP Package"_Speed_omp.html : for OpenMP threading and generic CPU optimizations
+"OPT Package"_Speed_opt.html : generic CPU optimizations :tb(s=:)
 
 <!-- RST
 
@@ -35,20 +35,20 @@ standard or user packages:
    :maxdepth: 1
    :hidden:
 
-   accelerate_gpu
-   accelerate_intel
-   accelerate_kokkos
-   accelerate_omp
-   accelerate_opt
+   Speed_gpu
+   Speed_intel
+   Speed_kokkos
+   Speed_omp
+   Speed_opt
 
 END_RST -->
 
 Inverting this list, LAMMPS currently has acceleration support for
 three kinds of hardware, via the listed packages:
 
-Many-core CPUs : "USER-INTEL"_accelerate_intel.html, "KOKKOS"_accelerate_kokkos.html, "USER-OMP"_accelerate_omp.html, "OPT"_accelerate_opt.html packages
-NVIDIA GPUs : "GPU"_accelerate_gpu.html, "KOKKOS"_accelerate_kokkos.html packages
-Intel Phi : "USER-INTEL"_accelerate_intel.html, "KOKKOS"_accelerate_kokkos.html packages :tb(s=:)
+Many-core CPUs : "USER-INTEL"_Speed_intel.html, "KOKKOS"_Speed_kokkos.html, "USER-OMP"_Speed_omp.html, "OPT"_Speed_opt.html packages
+NVIDIA GPUs : "GPU"_Speed_gpu.html, "KOKKOS"_Speed_kokkos.html packages
+Intel Phi : "USER-INTEL"_Speed_intel.html, "KOKKOS"_Speed_kokkos.html packages :tb(s=:)
 
 Which package is fastest for your hardware may depend on the size
 problem you are running and what commands (accelerated and
diff --git a/doc/src/fix_reax_bonds.txt b/doc/src/fix_reax_bonds.txt
index 3f8f237de1..50f0b77d52 100644
--- a/doc/src/fix_reax_bonds.txt
+++ b/doc/src/fix_reax_bonds.txt
@@ -72,7 +72,7 @@ This fix is not invoked during "energy minimization"_minimize.html.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section_accelerate"_Section_accelerate.html
+hardware, as discussed in "Speed"_Speed.html
 of the manual.  The accelerated styles take the same arguments and
 should produce the same results, except for round-off and precision
 issues.
@@ -87,7 +87,7 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section_accelerate"_Section_accelerate.html of the manual for
+See "Speed"_Speed.html of the manual for
 more instructions on how to use the accelerated styles effectively.
 
 :line
diff --git a/doc/src/fix_reaxc_species.txt b/doc/src/fix_reaxc_species.txt
index 7c920791f7..75e4598ca5 100644
--- a/doc/src/fix_reaxc_species.txt
+++ b/doc/src/fix_reaxc_species.txt
@@ -139,7 +139,7 @@ minimization"_minimize.html.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "Section_accelerate"_Section_accelerate.html
+hardware, as discussed in "Speed"_Speed.html
 of the manual.  The accelerated styles take the same arguments and
 should produce the same results, except for round-off and precision
 issues.
@@ -154,7 +154,7 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "Section_accelerate"_Section_accelerate.html of the manual for
+See "Speed"_Speed.html of the manual for
 more instructions on how to use the accelerated styles effectively.
 
 :line
diff --git a/doc/src/pair_brownian.txt b/doc/src/pair_brownian.txt
index 79b71e91c7..8d30f0cec6 100644
--- a/doc/src/pair_brownian.txt
+++ b/doc/src/pair_brownian.txt
@@ -74,7 +74,7 @@ must be specified.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "this section"_Section_accelerate.html of
+hardware, as discussed in "this section"_Speed.html of
 the manual.  The accelerated styles take the same arguments and should
 produce the same results, except for round-off and precision issues.
 
@@ -88,7 +88,7 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "this section"_Section_accelerate.html of the manual for more
+See "this section"_Speed.html of the manual for more
 instructions on how to use the accelerated styles effectively.
 
 :line
diff --git a/doc/src/pair_lubricate.txt b/doc/src/pair_lubricate.txt
index b39c7545c7..2a16aa2a9d 100644
--- a/doc/src/pair_lubricate.txt
+++ b/doc/src/pair_lubricate.txt
@@ -143,7 +143,7 @@ must be specified.
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
 They have been optimized to run faster, depending on your available
-hardware, as discussed in "this section"_Section_accelerate.html of
+hardware, as discussed in "this section"_Speed.html of
 the manual.  The accelerated styles take the same arguments and should
 produce the same results, except for round-off and precision issues.
 
@@ -157,7 +157,7 @@ by including their suffix, or you can use the "-suffix command-line
 switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
 use the "suffix"_suffix.html command in your input script.
 
-See "this section"_Section_accelerate.html of the manual for more
+See "this section"_Speed.html of the manual for more
 instructions on how to use the accelerated styles effectively.
 
 :line
diff --git a/doc/src/run_style.txt b/doc/src/run_style.txt
index a896a648af..6f1f719d64 100644
--- a/doc/src/run_style.txt
+++ b/doc/src/run_style.txt
@@ -125,7 +125,7 @@ important performance consideration is the assignment of logical
 processors in the 2 partitions to the physical cores of a parallel
 machine.  The "processors"_processors.html command has options to
 support this, and strategies are discussed in "Section
-5"_Section_accelerate.html of the manual.
+5"_Speed.html of the manual.
 
 :line
 
-- 
GitLab


From f3615e83e8f8e72e3c6ad995f9b6fda1aed64946 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 31 Jul 2018 09:18:37 +0200
Subject: [PATCH 124/243] move pair style eam/cd from USER-MISC to MANYBODY and
 update docs accordingly

---
 cmake/CMakeLists.txt                       |  1 -
 doc/src/Section_commands.txt               |  2 +-
 doc/src/pair_eam.txt                       |  9 ++---
 src/{USER-MISC => MANYBODY}/pair_cdeam.cpp |  0
 src/{USER-MISC => MANYBODY}/pair_cdeam.h   |  0
 src/USER-MISC/Install.sh                   | 40 ----------------------
 src/USER-MISC/README                       |  1 -
 7 files changed, 3 insertions(+), 50 deletions(-)
 rename src/{USER-MISC => MANYBODY}/pair_cdeam.cpp (100%)
 rename src/{USER-MISC => MANYBODY}/pair_cdeam.h (100%)
 delete mode 100755 src/USER-MISC/Install.sh

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 60a0f5d48f..065d22707a 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -178,7 +178,6 @@ pkg_depends(MPIIO MPI)
 pkg_depends(QEQ MANYBODY)
 pkg_depends(USER-ATC MANYBODY)
 pkg_depends(USER-LB MPI)
-pkg_depends(USER-MISC MANYBODY)
 pkg_depends(USER-PHONON KSPACE)
 pkg_depends(CORESHELL KSPACE)
 
diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt
index 7b9349a233..3f1be036f5 100644
--- a/doc/src/Section_commands.txt
+++ b/doc/src/Section_commands.txt
@@ -969,6 +969,7 @@ KOKKOS, o = USER-OMP, t = OPT.
 "dsmc"_pair_dsmc.html,
 "eam (gikot)"_pair_eam.html,
 "eam/alloy (gikot)"_pair_eam.html,
+"eam/cd (o)"_pair_eam.html,
 "eam/fs (gikot)"_pair_eam.html,
 "eim (o)"_pair_eim.html,
 "gauss (go)"_pair_gauss.html,
@@ -1069,7 +1070,6 @@ package"_Section_start.html#start_3.
 "coul/shield"_pair_coul_shield.html,
 "dpd/fdt"_pair_dpd_fdt.html,
 "dpd/fdt/energy (k)"_pair_dpd_fdt.html,
-"eam/cd (o)"_pair_eam.html,
 "edip (o)"_pair_edip.html,
 "edip/multi"_pair_edip.html,
 "edpd"_pair_meso.html,
diff --git a/doc/src/pair_eam.txt b/doc/src/pair_eam.txt
index 03e77f53ab..4ab4e6d794 100644
--- a/doc/src/pair_eam.txt
+++ b/doc/src/pair_eam.txt
@@ -414,15 +414,10 @@ The eam pair styles can only be used via the {pair} keyword of the
 
 [Restrictions:]
 
-All of these styles except the {eam/cd} style are part of the MANYBODY
-package.  They are only enabled if LAMMPS was built with that package.
+All of these styles are part of the MANYBODY 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.
 
-The {eam/cd} style is part of the USER-MISC package and also requires
-the MANYBODY package.  It is only enabled if LAMMPS was built with
-those packages.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info.
-
 [Related commands:]
 
 "pair_coeff"_pair_coeff.html
diff --git a/src/USER-MISC/pair_cdeam.cpp b/src/MANYBODY/pair_cdeam.cpp
similarity index 100%
rename from src/USER-MISC/pair_cdeam.cpp
rename to src/MANYBODY/pair_cdeam.cpp
diff --git a/src/USER-MISC/pair_cdeam.h b/src/MANYBODY/pair_cdeam.h
similarity index 100%
rename from src/USER-MISC/pair_cdeam.h
rename to src/MANYBODY/pair_cdeam.h
diff --git a/src/USER-MISC/Install.sh b/src/USER-MISC/Install.sh
deleted file mode 100755
index 2d42125ec3..0000000000
--- a/src/USER-MISC/Install.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-# Install/unInstall package files in LAMMPS
-# mode = 0/1/2 for uninstall/install/update
-
-mode=$1
-
-# enforce using portable C locale
-LC_ALL=C
-export LC_ALL
-
-# arg1 = file, arg2 = file it depends on
-
-action () {
-  if (test $mode = 0) then
-    rm -f ../$1
-  elif (! cmp -s $1 ../$1) then
-    if (test -z "$2" || test -e ../$2) then
-      cp $1 ..
-      if (test $mode = 2) then
-        echo "  updating src/$1"
-      fi
-    fi
-  elif (test ! -n "$2") then
-    if (test ! -e ../$2) then
-      rm -f ../$1
-    fi
-  fi
-}
-
-# all package files
-# only a few files have dependencies
-
-for file in *.cpp *.h; do
-  if (test $file = "pair_cdeam.cpp") then
-    action pair_cdeam.cpp pair_eam_alloy.cpp
-  elif (test $file = "pair_cdeam.h") then
-    action pair_cdeam.h pair_eam_alloy.cpp
-  else
-    test -f ${file} && action $file
-  fi
-done
diff --git a/src/USER-MISC/README b/src/USER-MISC/README
index 68a6252d8d..0f9e7bf383 100644
--- a/src/USER-MISC/README
+++ b/src/USER-MISC/README
@@ -65,7 +65,6 @@ pair_style buck/mdf, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15
 pair_style coul/diel, Axel Kohlmeyer, akohlmey at gmail.com, 1 Dec 11
 pair_style dipole/sf, Mario Orsi, orsimario at gmail.com, 8 Aug 11
 pair_style edip, Luca Ferraro, luca.ferraro at caspur.it, 15 Sep 11
-pair_style eam/cd, Alexander Stukowski, stukowski at mm.tu-darmstadt.de, 7 Nov 09
 pair_style extep, Jaap Kroes (Radboud U), jaapkroes at gmail dot com, 28 Nov 17
 pair_style gauss/cut, Axel Kohlmeyer, akohlmey at gmail.com, 1 Dec 11
 pair_style lennard/mdf, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15
-- 
GitLab


From 24e293326dd290bd94a904d21c4db68ff4a3c2de Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 31 Jul 2018 09:36:35 +0200
Subject: [PATCH 125/243] Remove disabled line and add comment on package
 dependencies

---
 cmake/CMakeLists.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 1e58a670aa..186639fc1e 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -175,8 +175,9 @@ macro(pkg_depends PKG1 PKG2)
   endif()
 endmacro()
 
+# "hard" dependencies between packages resulting
+# in an error instead of skipping over files
 pkg_depends(MPIIO MPI)
-#pkg_depends(QEQ MANYBODY)
 pkg_depends(USER-ATC MANYBODY)
 pkg_depends(USER-LB MPI)
 pkg_depends(USER-MISC MANYBODY)
-- 
GitLab


From 50fe2097822785f596d98e2750a40e2224af0fae Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 31 Jul 2018 10:24:36 +0200
Subject: [PATCH 126/243] mention -*- cookie for switching emacs modes and
 clarify file pattern text

---
 tools/emacs/README.md | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/tools/emacs/README.md b/tools/emacs/README.md
index ce502a27e3..75504a7000 100644
--- a/tools/emacs/README.md
+++ b/tools/emacs/README.md
@@ -39,8 +39,14 @@ would do the following (kanged [from here](http://ergoemacs.org/emacs/emacs_inst
 
 ### Autoloading \& Auto-recognition
 
-For autoloading and auto-recognizing `in.*` and `*.lmp` files add the following
-to `.emacs`:
+To automatically turn on the LAMMPS mode for editing your input scripts,
+use the following line as the **first** line of your script:
+```
+# -*- lammps -*-
+```
+
+For automatically switching on the LAMMPS mode based on filename patterns,
+e.g. for `in.*` and `*.lmp` files, add the following code to your `.emacs`:
 
 ``` emacs-lisp
 (autoload 'lammps-mode "lammps-mode.el" "LAMMPS mode." t)
-- 
GitLab


From 6dad2f59d8bc4ecc68604b712d0072c303e3f2e9 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 31 Jul 2018 11:06:09 +0200
Subject: [PATCH 127/243] list @HaoZeke as (new) owner of the LAMMPS emacs mode
 list code

---
 .github/CODEOWNERS | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 75b79443c3..7f32281192 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -44,6 +44,7 @@ src/USER-MISC/*_grem.*              @dstelter92
 
 # tools
 tools/msi2lmp/*       @akohlmey
+tools/emacs/*         @HaoZeke
 
 # cmake
 cmake/*               @junghans @rbberger
-- 
GitLab


From 67e70316deedfa95f21edbb9674bacca3dd7d3b0 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 31 Jul 2018 16:58:44 +0200
Subject: [PATCH 128/243] rename pair_cdeam.* to pair_eam_cd.*

---
 src/MANYBODY/{pair_cdeam.cpp => pair_eam_cd.cpp} | 0
 src/MANYBODY/{pair_cdeam.h => pair_eam_cd.h}     | 0
 2 files changed, 0 insertions(+), 0 deletions(-)
 rename src/MANYBODY/{pair_cdeam.cpp => pair_eam_cd.cpp} (100%)
 rename src/MANYBODY/{pair_cdeam.h => pair_eam_cd.h} (100%)

diff --git a/src/MANYBODY/pair_cdeam.cpp b/src/MANYBODY/pair_eam_cd.cpp
similarity index 100%
rename from src/MANYBODY/pair_cdeam.cpp
rename to src/MANYBODY/pair_eam_cd.cpp
diff --git a/src/MANYBODY/pair_cdeam.h b/src/MANYBODY/pair_eam_cd.h
similarity index 100%
rename from src/MANYBODY/pair_cdeam.h
rename to src/MANYBODY/pair_eam_cd.h
-- 
GitLab


From e9d40d3c6dc389c8fe3b144349fae04e12b0fb86 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 31 Jul 2018 17:16:18 +0200
Subject: [PATCH 129/243] rename class from PairCDEAM to PairEAMCD

---
 src/MANYBODY/pair_eam_cd.cpp | 22 +++++++++++-----------
 src/MANYBODY/pair_eam_cd.h   | 18 +++++++++---------
 2 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/src/MANYBODY/pair_eam_cd.cpp b/src/MANYBODY/pair_eam_cd.cpp
index 53d9036a61..c0e480488d 100644
--- a/src/MANYBODY/pair_eam_cd.cpp
+++ b/src/MANYBODY/pair_eam_cd.cpp
@@ -21,7 +21,7 @@
 #include <cstdio>
 #include <cstdlib>
 #include <cstring>
-#include "pair_cdeam.h"
+#include "pair_eam_cd.h"
 #include "atom.h"
 #include "force.h"
 #include "comm.h"
@@ -49,7 +49,7 @@ using namespace LAMMPS_NS;
 
 #define MAXLINE 1024        // This sets the maximum line length in EAM input files.
 
-PairCDEAM::PairCDEAM(LAMMPS *lmp, int _cdeamVersion) : PairEAM(lmp), PairEAMAlloy(lmp), cdeamVersion(_cdeamVersion)
+PairEAMCD::PairEAMCD(LAMMPS *lmp, int _cdeamVersion) : PairEAM(lmp), PairEAMAlloy(lmp), cdeamVersion(_cdeamVersion)
 {
         single_enable = 0;
         restartinfo = 0;
@@ -72,14 +72,14 @@ PairCDEAM::PairCDEAM(LAMMPS *lmp, int _cdeamVersion) : PairEAM(lmp), PairEAMAllo
         }
 }
 
-PairCDEAM::~PairCDEAM()
+PairEAMCD::~PairEAMCD()
 {
         memory->destroy(rhoB);
         memory->destroy(D_values);
         if(hcoeff) delete[] hcoeff;
 }
 
-void PairCDEAM::compute(int eflag, int vflag)
+void PairEAMCD::compute(int eflag, int vflag)
 {
         int i,j,ii,jj,inum,jnum,itype,jtype;
         double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair;
@@ -415,7 +415,7 @@ void PairCDEAM::compute(int eflag, int vflag)
 
 /* ---------------------------------------------------------------------- */
 
-void PairCDEAM::coeff(int narg, char **arg)
+void PairEAMCD::coeff(int narg, char **arg)
 {
         PairEAMAlloy::coeff(narg, arg);
 
@@ -452,7 +452,7 @@ void PairCDEAM::coeff(int narg, char **arg)
 /* ----------------------------------------------------------------------
    Reads in the h(x) polynomial coefficients
 ------------------------------------------------------------------------- */
-void PairCDEAM::read_h_coeff(char *filename)
+void PairEAMCD::read_h_coeff(char *filename)
 {
         if(comm->me == 0) {
                 // Open potential file
@@ -494,7 +494,7 @@ void PairCDEAM::read_h_coeff(char *filename)
 
 /* ---------------------------------------------------------------------- */
 
-int PairCDEAM::pack_forward_comm(int n, int *list, double *buf,
+int PairEAMCD::pack_forward_comm(int n, int *list, double *buf,
                                  int pbc_flag, int *pbc)
 {
         int i,j,m;
@@ -534,7 +534,7 @@ int PairCDEAM::pack_forward_comm(int n, int *list, double *buf,
 
 /* ---------------------------------------------------------------------- */
 
-void PairCDEAM::unpack_forward_comm(int n, int first, double *buf)
+void PairEAMCD::unpack_forward_comm(int n, int first, double *buf)
 {
         int i,m,last;
 
@@ -567,7 +567,7 @@ void PairCDEAM::unpack_forward_comm(int n, int first, double *buf)
 }
 
 /* ---------------------------------------------------------------------- */
-int PairCDEAM::pack_reverse_comm(int n, int first, double *buf)
+int PairEAMCD::pack_reverse_comm(int n, int first, double *buf)
 {
         int i,m,last;
 
@@ -603,7 +603,7 @@ int PairCDEAM::pack_reverse_comm(int n, int first, double *buf)
 
 /* ---------------------------------------------------------------------- */
 
-void PairCDEAM::unpack_reverse_comm(int n, int *list, double *buf)
+void PairEAMCD::unpack_reverse_comm(int n, int *list, double *buf)
 {
         int i,j,m;
 
@@ -637,7 +637,7 @@ void PairCDEAM::unpack_reverse_comm(int n, int *list, double *buf)
 /* ----------------------------------------------------------------------
    memory usage of local atom-based arrays
 ------------------------------------------------------------------------- */
-double PairCDEAM::memory_usage()
+double PairEAMCD::memory_usage()
 {
         double bytes = 2 * nmax * sizeof(double);
         return PairEAMAlloy::memory_usage() + bytes;
diff --git a/src/MANYBODY/pair_eam_cd.h b/src/MANYBODY/pair_eam_cd.h
index 934b7601a4..15486aed6d 100644
--- a/src/MANYBODY/pair_eam_cd.h
+++ b/src/MANYBODY/pair_eam_cd.h
@@ -13,8 +13,8 @@
 
 #ifdef PAIR_CLASS
 
-PairStyle(eam/cd,PairCDEAM_OneSite)
-PairStyle(eam/cd/old,PairCDEAM_TwoSite)
+PairStyle(eam/cd,PairEAMCD_OneSite)
+PairStyle(eam/cd/old,PairEAMCD_TwoSite)
 
 #else
 
@@ -25,14 +25,14 @@ PairStyle(eam/cd/old,PairCDEAM_TwoSite)
 
 namespace LAMMPS_NS {
 
-class PairCDEAM : public PairEAMAlloy
+class PairEAMCD : public PairEAMAlloy
 {
 public:
   /// Constructor.
-  PairCDEAM(class LAMMPS*, int cdeamVersion);
+  PairEAMCD(class LAMMPS*, int cdeamVersion);
 
   /// Destructor.
-  virtual ~PairCDEAM();
+  virtual ~PairEAMCD();
 
   /// Calculates the energies and forces for all atoms in the system.
   virtual void compute(int, int);
@@ -211,19 +211,19 @@ public:
 };
 
 /// The one-site concentration formulation of CD-EAM.
- class PairCDEAM_OneSite : public PairCDEAM
+ class PairEAMCD_OneSite : public PairEAMCD
    {
    public:
      /// Constructor.
-     PairCDEAM_OneSite(class LAMMPS* lmp) : PairEAM(lmp), PairCDEAM(lmp, 1) {}
+     PairEAMCD_OneSite(class LAMMPS* lmp) : PairEAM(lmp), PairEAMCD(lmp, 1) {}
    };
 
  /// The two-site concentration formulation of CD-EAM.
- class PairCDEAM_TwoSite : public PairCDEAM
+ class PairEAMCD_TwoSite : public PairEAMCD
    {
    public:
      /// Constructor.
-     PairCDEAM_TwoSite(class LAMMPS* lmp) : PairEAM(lmp), PairCDEAM(lmp, 2) {}
+     PairEAMCD_TwoSite(class LAMMPS* lmp) : PairEAM(lmp), PairEAMCD(lmp, 2) {}
    };
 
 }
-- 
GitLab


From c6186bf00d5adcfd11d07c2393f306a1695d587e Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 31 Jul 2018 17:36:49 +0200
Subject: [PATCH 130/243] whitespace and formatting update

---
 src/MANYBODY/pair_eam_cd.cpp | 1111 +++++++++++++++++-----------------
 1 file changed, 572 insertions(+), 539 deletions(-)

diff --git a/src/MANYBODY/pair_eam_cd.cpp b/src/MANYBODY/pair_eam_cd.cpp
index c0e480488d..66ebad6244 100644
--- a/src/MANYBODY/pair_eam_cd.cpp
+++ b/src/MANYBODY/pair_eam_cd.cpp
@@ -32,463 +32,507 @@
 
 using namespace LAMMPS_NS;
 
-// This is for debugging purposes. The ASSERT() macro is used in the code to check
-// if everything runs as expected. Change this to #if 0 if you don't need the checking.
-#if 0
-        #define ASSERT(cond) ((!(cond)) ? my_failure(error,__FILE__,__LINE__) : my_noop())
-
-        inline void my_noop() {}
-        inline void my_failure(Error* error, const char* file, int line) {
-                char str[1024];
-                sprintf(str,"Assertion failure: File %s, line %i", file, line);
-                error->one(FLERR,str);
-        }
-#else
-        #define ASSERT(cond)
-#endif
-
+#define ASSERT(cond)
 #define MAXLINE 1024        // This sets the maximum line length in EAM input files.
 
-PairEAMCD::PairEAMCD(LAMMPS *lmp, int _cdeamVersion) : PairEAM(lmp), PairEAMAlloy(lmp), cdeamVersion(_cdeamVersion)
+PairEAMCD::PairEAMCD(LAMMPS *lmp, int _cdeamVersion)
+  : PairEAM(lmp), PairEAMAlloy(lmp), cdeamVersion(_cdeamVersion)
 {
-        single_enable = 0;
-        restartinfo = 0;
-
-        rhoB = NULL;
-        D_values = NULL;
-        hcoeff = NULL;
-
-        // Set communication buffer sizes needed by this pair style.
-        if(cdeamVersion == 1) {
-                comm_forward = 4;
-                comm_reverse = 3;
-        }
-        else if(cdeamVersion == 2) {
-                comm_forward = 3;
-                comm_reverse = 2;
-        }
-        else {
-                error->all(FLERR,"Invalid CD-EAM potential version.");
-        }
+  single_enable = 0;
+  restartinfo = 0;
+
+  rhoB = NULL;
+  D_values = NULL;
+  hcoeff = NULL;
+
+  // Set communication buffer sizes needed by this pair style.
+
+  if (cdeamVersion == 1) {
+    comm_forward = 4;
+    comm_reverse = 3;
+  } else if (cdeamVersion == 2) {
+    comm_forward = 3;
+    comm_reverse = 2;
+  } else {
+    error->all(FLERR,"Invalid eam/cd potential version.");
+  }
 }
 
 PairEAMCD::~PairEAMCD()
 {
-        memory->destroy(rhoB);
-        memory->destroy(D_values);
-        if(hcoeff) delete[] hcoeff;
+  memory->destroy(rhoB);
+  memory->destroy(D_values);
+  if (hcoeff) delete[] hcoeff;
 }
 
 void PairEAMCD::compute(int eflag, int vflag)
 {
-        int i,j,ii,jj,inum,jnum,itype,jtype;
-        double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair;
-        double rsq,rhoip,rhojp,recip,phi;
-        int *ilist,*jlist,*numneigh,**firstneigh;
-
-        evdwl = 0.0;
-        if (eflag || vflag) ev_setup(eflag,vflag);
-        else evflag = vflag_fdotr = eflag_global = eflag_atom = 0;
-
-        // Grow per-atom arrays if necessary
-        if(atom->nmax > nmax) {
-                memory->destroy(rho);
-                memory->destroy(fp);
-                memory->destroy(rhoB);
-                memory->destroy(D_values);
-                nmax = atom->nmax;
-                memory->create(rho,nmax,"pair:rho");
-                memory->create(rhoB,nmax,"pair:rhoB");
-                memory->create(fp,nmax,"pair:fp");
-                memory->create(D_values,nmax,"pair:D_values");
+  int i,j,ii,jj,inum,jnum,itype,jtype;
+  double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair;
+  double rsq,rhoip,rhojp,recip,phi;
+  int *ilist,*jlist,*numneigh,**firstneigh;
+
+  evdwl = 0.0;
+  if (eflag || vflag) ev_setup(eflag,vflag);
+  else evflag = vflag_fdotr = eflag_global = eflag_atom = 0;
+
+  // Grow per-atom arrays if necessary
+
+  if (atom->nmax > nmax) {
+    memory->destroy(rho);
+    memory->destroy(fp);
+    memory->destroy(rhoB);
+    memory->destroy(D_values);
+    nmax = atom->nmax;
+    memory->create(rho,nmax,"pair:rho");
+    memory->create(rhoB,nmax,"pair:rhoB");
+    memory->create(fp,nmax,"pair:fp");
+    memory->create(D_values,nmax,"pair:D_values");
+  }
+
+  double **x = atom->x;
+  double **f = atom->f;
+  int *type = atom->type;
+  int nlocal = atom->nlocal;
+  int newton_pair = force->newton_pair;
+
+  inum = list->inum;
+  ilist = list->ilist;
+  numneigh = list->numneigh;
+  firstneigh = list->firstneigh;
+
+  // Zero out per-atom arrays.
+
+  int m = nlocal + atom->nghost;
+  for (i = 0; i < m; i++) {
+    rho[i] = 0.0;
+    rhoB[i] = 0.0;
+    D_values[i] = 0.0;
+  }
+
+  // Stage I
+
+  // Compute rho and rhoB at each local atom site.
+
+  // Additionally calculate the D_i values here if we are using the
+  // one-site formulation.  For the two-site formulation we have to
+  // calculate the D values in an extra loop (Stage II).
+
+  for (ii = 0; ii < inum; ii++) {
+    i = ilist[ii];
+    xtmp = x[i][0];
+    ytmp = x[i][1];
+    ztmp = x[i][2];
+    itype = type[i];
+    jlist = firstneigh[i];
+    jnum = numneigh[i];
+
+    for (jj = 0; jj < jnum; jj++) {
+      j = jlist[jj];
+      j &= NEIGHMASK;
+
+      delx = xtmp - x[j][0];
+      dely = ytmp - x[j][1];
+      delz = ztmp - x[j][2];
+      rsq = delx*delx + dely*dely + delz*delz;
+
+      if (rsq < cutforcesq) {
+        jtype = type[j];
+        double r = sqrt(rsq);
+        const EAMTableIndex index = radiusToTableIndex(r);
+        double localrho = RhoOfR(index, jtype, itype);
+        rho[i] += localrho;
+        if (jtype == speciesB) rhoB[i] += localrho;
+        if (newton_pair || j < nlocal) {
+          localrho = RhoOfR(index, itype, jtype);
+          rho[j] += localrho;
+          if (itype == speciesB) rhoB[j] += localrho;
         }
 
-        double **x = atom->x;
-        double **f = atom->f;
-        int *type = atom->type;
-        int nlocal = atom->nlocal;
-        int newton_pair = force->newton_pair;
-
-        inum = list->inum;
-        ilist = list->ilist;
-        numneigh = list->numneigh;
-        firstneigh = list->firstneigh;
-
-        // Zero out per-atom arrays.
-        int m = nlocal + atom->nghost;
-        for(i = 0; i < m; i++) {
-                rho[i] = 0.0;
-                rhoB[i] = 0.0;
-                D_values[i] = 0.0;
+        if (cdeamVersion == 1 && itype != jtype) {
+
+          // Note: if the i-j interaction is not concentration dependent (because either
+          // i or j are not species A or B) then its contribution to D_i and D_j should
+          // be ignored.
+          // This if-clause is only required for a ternary.
+
+          if ((itype == speciesA && jtype == speciesB)
+              || (jtype == speciesA && itype == speciesB)) {
+            double Phi_AB = PhiOfR(index, itype, jtype, 1.0 / r);
+            D_values[i] += Phi_AB;
+            if (newton_pair || j < nlocal)
+              D_values[j] += Phi_AB;
+          }
         }
+      }
+    }
+  }
+
+  // Communicate and sum densities.
+
+  if (newton_pair) {
+    communicationStage = 1;
+    comm->reverse_comm_pair(this);
+  }
+
+  // fp = derivative of embedding energy at each atom
+  // phi = embedding energy at each atom
+
+  for (ii = 0; ii < inum; ii++) {
+    i = ilist[ii];
+    EAMTableIndex index = rhoToTableIndex(rho[i]);
+    fp[i] = FPrimeOfRho(index, type[i]);
+    if (eflag) {
+      phi = FofRho(index, type[i]);
+      if (eflag_global) eng_vdwl += phi;
+      if (eflag_atom) eatom[i] += phi;
+    }
+  }
+
+  // Communicate derivative of embedding function and densities
+  // and D_values (this for one-site formulation only).
+
+  communicationStage = 2;
+  comm->forward_comm_pair(this);
+
+  // The electron densities may not drop to zero because then the
+  // concentration would no longer be defined.  But the concentration
+  // is not needed anyway if there is no interaction with another atom,
+  // which is the case if the electron density is exactly zero.
+  // That's why the following lines have been commented out.
+  //
+  //for (i = 0; i < nlocal + atom->nghost; i++) {
+  //        if (rho[i] == 0 && (type[i] == speciesA || type[i] == speciesB))
+  //                error->one(FLERR,"CD-EAM potential routine: Detected atom with zero electron density.");
+  //}
+
+  // Stage II
+  // This is only required for the original two-site formulation of the CD-EAM potential.
+
+  if (cdeamVersion == 2) {
+
+    // Compute intermediate value D_i for each atom.
+
+    for (ii = 0; ii < inum; ii++) {
+      i = ilist[ii];
+      xtmp = x[i][0];
+      ytmp = x[i][1];
+      ztmp = x[i][2];
+      itype = type[i];
+      jlist = firstneigh[i];
+      jnum = numneigh[i];
+
+      // This code line is required for ternary alloys.
+
+      if (itype != speciesA && itype != speciesB) continue;
+
+      double x_i = rhoB[i] / rho[i];        // Concentration at atom i.
 
-        // Stage I
-
-        // Compute rho and rhoB at each local atom site.
-        // Additionally calculate the D_i values here if we are using the one-site formulation.
-        // For the two-site formulation we have to calculate the D values in an extra loop (Stage II).
-        for(ii = 0; ii < inum; ii++) {
-                i = ilist[ii];
-                xtmp = x[i][0];
-                ytmp = x[i][1];
-                ztmp = x[i][2];
-                itype = type[i];
-                jlist = firstneigh[i];
-                jnum = numneigh[i];
-
-                for(jj = 0; jj < jnum; jj++) {
-                        j = jlist[jj];
-                        j &= NEIGHMASK;
-
-                        delx = xtmp - x[j][0];
-                        dely = ytmp - x[j][1];
-                        delz = ztmp - x[j][2];
-                        rsq = delx*delx + dely*dely + delz*delz;
-
-                        if(rsq < cutforcesq) {
-                                jtype = type[j];
-                                double r = sqrt(rsq);
-                                const EAMTableIndex index = radiusToTableIndex(r);
-                                double localrho = RhoOfR(index, jtype, itype);
-                                rho[i] += localrho;
-                                if(jtype == speciesB) rhoB[i] += localrho;
-                                if(newton_pair || j < nlocal) {
-                                        localrho = RhoOfR(index, itype, jtype);
-                                        rho[j] += localrho;
-                                        if(itype == speciesB) rhoB[j] += localrho;
-                                }
-
-                                if(cdeamVersion == 1 && itype != jtype) {
-                                        // Note: if the i-j interaction is not concentration dependent (because either
-                                        // i or j are not species A or B) then its contribution to D_i and D_j should
-                                        // be ignored.
-                                        // This if-clause is only required for a ternary.
-                                        if((itype == speciesA && jtype == speciesB) || (jtype == speciesA && itype == speciesB)) {
-                                                double Phi_AB = PhiOfR(index, itype, jtype, 1.0 / r);
-                                                D_values[i] += Phi_AB;
-                                                if(newton_pair || j < nlocal)
-                                                        D_values[j] += Phi_AB;
-                                        }
-                                }
-                        }
-                }
+      for (jj = 0; jj < jnum; jj++) {
+        j = jlist[jj];
+        j &= NEIGHMASK;
+        jtype = type[j];
+        if (itype == jtype) continue;
+
+        // This code line is required for ternary alloys.
+
+        if (jtype != speciesA && jtype != speciesB) continue;
+
+        delx = xtmp - x[j][0];
+        dely = ytmp - x[j][1];
+        delz = ztmp - x[j][2];
+        rsq = delx*delx + dely*dely + delz*delz;
+
+        if (rsq < cutforcesq) {
+          double r = sqrt(rsq);
+          const EAMTableIndex index = radiusToTableIndex(r);
+
+          // The concentration independent part of the cross pair potential.
+
+          double Phi_AB = PhiOfR(index, itype, jtype, 1.0 / r);
+
+          // Average concentration of two sites
+
+          double x_ij = 0.5 * (x_i + rhoB[j]/rho[j]);
+
+          // Calculate derivative of h(x_ij) polynomial function.
+
+          double h_prime = evalHprime(x_ij);
+
+          D_values[i] += h_prime * Phi_AB / (2.0 * rho[i] * rho[i]);
+          if (newton_pair || j < nlocal)
+            D_values[j] += h_prime * Phi_AB / (2.0 * rho[j] * rho[j]);
         }
+      }
+    }
+
+    // Communicate and sum D values.
+
+    if (newton_pair) {
+      communicationStage = 3;
+      comm->reverse_comm_pair(this);
+    }
+    communicationStage = 4;
+    comm->forward_comm_pair(this);
+  }
+
+  // Stage III
+
+  // Compute force acting on each atom.
+
+  for (ii = 0; ii < inum; ii++) {
+    i = ilist[ii];
+    xtmp = x[i][0];
+    ytmp = x[i][1];
+    ztmp = x[i][2];
+    itype = type[i];
+
+    jlist = firstneigh[i];
+    jnum = numneigh[i];
+
+    // Concentration at site i
+    // The value -1 indicates: no concentration dependence for all interactions of atom i.
+    // It will be replaced by the concentration at site i if atom i is either A or B.
+
+    double x_i = -1.0;
+    double D_i, h_prime_i;
+
+    // This if-clause is only required for ternary alloys.
+
+    if ((itype == speciesA || itype == speciesB) && rho[i] != 0.0) {
+
+      // Compute local concentration at site i.
 
-        // Communicate and sum densities.
-        if(newton_pair) {
-                communicationStage = 1;
-                comm->reverse_comm_pair(this);
+      x_i = rhoB[i]/rho[i];
+      ASSERT(x_i >= 0 && x_i<=1.0);
+
+      if (cdeamVersion == 1) {
+
+        // Calculate derivative of h(x_i) polynomial function.
+
+        h_prime_i = evalHprime(x_i);
+        D_i = D_values[i] * h_prime_i / (2.0 * rho[i] * rho[i]);
+      } else if (cdeamVersion == 2) {
+        D_i = D_values[i];
+      } else {
+        ASSERT(false);
+      }
+    }
+
+    for (jj = 0; jj < jnum; jj++) {
+      j = jlist[jj];
+      j &= NEIGHMASK;
+
+      delx = xtmp - x[j][0];
+      dely = ytmp - x[j][1];
+      delz = ztmp - x[j][2];
+      rsq = delx*delx + dely*dely + delz*delz;
+
+      if (rsq < cutforcesq) {
+        jtype = type[j];
+        double r = sqrt(rsq);
+        const EAMTableIndex index = radiusToTableIndex(r);
+
+        // rhoip = derivative of (density at atom j due to atom i)
+        // rhojp = derivative of (density at atom i due to atom j)
+        // psip needs both fp[i] and fp[j] terms since r_ij appears in two
+        //   terms of embed eng: Fi(sum rho_ij) and Fj(sum rho_ji)
+        //   hence embed' = Fi(sum rho_ij) rhojp + Fj(sum rho_ji) rhoip
+
+        rhoip = RhoPrimeOfR(index, itype, jtype);
+        rhojp = RhoPrimeOfR(index, jtype, itype);
+        fpair = fp[i]*rhojp + fp[j]*rhoip;
+        recip = 1.0/r;
+
+        // The value -1 indicates: no concentration dependence for this
+        // i-j pair because atom j is not of species A nor B.
+
+        double x_j = -1;
+
+        // This code line is required for ternary alloy.
+
+        if (jtype == speciesA || jtype == speciesB) {
+          ASSERT(rho[i] != 0.0);
+          ASSERT(rho[j] != 0.0);
+
+          // Compute local concentration at site j.
+
+          x_j = rhoB[j]/rho[j];
+          ASSERT(x_j >= 0 && x_j<=1.0);
+
+          double D_j=0.0;
+          if (cdeamVersion == 1) {
+
+            // Calculate derivative of h(x_j) polynomial function.
+
+            double h_prime_j = evalHprime(x_j);
+            D_j = D_values[j] * h_prime_j / (2.0 * rho[j] * rho[j]);
+          } else if (cdeamVersion == 2) {
+            D_j = D_values[j];
+          } else {
+            ASSERT(false);
+          }
+          double t2 = -rhoB[j];
+          if (itype == speciesB) t2 += rho[j];
+          fpair += D_j * rhoip * t2;
         }
 
-        // fp = derivative of embedding energy at each atom
-        // phi = embedding energy at each atom
-        for(ii = 0; ii < inum; ii++) {
-                i = ilist[ii];
-                EAMTableIndex index = rhoToTableIndex(rho[i]);
-                fp[i] = FPrimeOfRho(index, type[i]);
-                if(eflag) {
-                        phi = FofRho(index, type[i]);
-                        if (eflag_global) eng_vdwl += phi;
-                        if (eflag_atom) eatom[i] += phi;
-                }
+        // This if-clause is only required for a ternary alloy.
+        // Actually we don't need it at all because D_i should be zero
+        // anyway if atom i has no concentration dependent interactions
+        // (because it is not species A or B).
+
+        if (x_i != -1.0) {
+          double t1 = -rhoB[i];
+          if (jtype == speciesB) t1 += rho[i];
+          fpair += D_i * rhojp * t1;
         }
 
-        // Communicate derivative of embedding function and densities
-        // and D_values (this for one-site formulation only).
-        communicationStage = 2;
-        comm->forward_comm_pair(this);
-
-        // The electron densities may not drop to zero because then the concentration would no longer be defined.
-        // But the concentration is not needed anyway if there is no interaction with another atom, which is the case
-        // if the electron density is exactly zero. That's why the following lines have been commented out.
-        //
-        //for(i = 0; i < nlocal + atom->nghost; i++) {
-        //        if(rho[i] == 0 && (type[i] == speciesA || type[i] == speciesB))
-        //                error->one(FLERR,"CD-EAM potential routine: Detected atom with zero electron density.");
-        //}
-
-        // Stage II
-        // This is only required for the original two-site formulation of the CD-EAM potential.
-
-        if(cdeamVersion == 2) {
-                // Compute intermediate value D_i for each atom.
-                for(ii = 0; ii < inum; ii++) {
-                        i = ilist[ii];
-                        xtmp = x[i][0];
-                        ytmp = x[i][1];
-                        ztmp = x[i][2];
-                        itype = type[i];
-                        jlist = firstneigh[i];
-                        jnum = numneigh[i];
-
-                        // This code line is required for ternary alloys.
-                        if(itype != speciesA && itype != speciesB) continue;
-
-                        double x_i = rhoB[i] / rho[i];        // Concentration at atom i.
-
-                        for(jj = 0; jj < jnum; jj++) {
-                                j = jlist[jj];
-                                j &= NEIGHMASK;
-                                jtype = type[j];
-                                if(itype == jtype) continue;
-
-                                // This code line is required for ternary alloys.
-                                if(jtype != speciesA && jtype != speciesB) continue;
-
-                                delx = xtmp - x[j][0];
-                                dely = ytmp - x[j][1];
-                                delz = ztmp - x[j][2];
-                                rsq = delx*delx + dely*dely + delz*delz;
-
-                                if(rsq < cutforcesq) {
-                                        double r = sqrt(rsq);
-                                        const EAMTableIndex index = radiusToTableIndex(r);
-
-                                        // The concentration independent part of the cross pair potential.
-                                        double Phi_AB = PhiOfR(index, itype, jtype, 1.0 / r);
-
-                                        // Average concentration of two sites
-                                        double x_ij = 0.5 * (x_i + rhoB[j]/rho[j]);
-
-                                        // Calculate derivative of h(x_ij) polynomial function.
-                                        double h_prime = evalHprime(x_ij);
-
-                                        D_values[i] += h_prime * Phi_AB / (2.0 * rho[i] * rho[i]);
-                                        if(newton_pair || j < nlocal)
-                                                D_values[j] += h_prime * Phi_AB / (2.0 * rho[j] * rho[j]);
-                                }
-                        }
-                }
-
-                // Communicate and sum D values.
-                if(newton_pair) {
-                        communicationStage = 3;
-                        comm->reverse_comm_pair(this);
-                }
-                communicationStage = 4;
-                comm->forward_comm_pair(this);
+        double phip;
+        double phi = PhiOfR(index, itype, jtype, recip, phip);
+        if (itype == jtype || x_i == -1.0 || x_j == -1.0) {
+
+          // Case of no concentration dependence.
+
+          fpair += phip;
+        } else {
+
+          // We have a concentration dependence for the i-j interaction.
+
+          double h=0.0;
+          if (cdeamVersion == 1) {
+
+            // Calculate h(x_i) polynomial function.
+
+            double h_i = evalH(x_i);
+
+            // Calculate h(x_j) polynomial function.
+
+            double h_j = evalH(x_j);
+            h = 0.5 * (h_i + h_j);
+          } else if (cdeamVersion == 2) {
+
+            // Average concentration.
+
+            double x_ij = 0.5 * (x_i + x_j);
+
+            // Calculate h(x_ij) polynomial function.
+
+            h = evalH(x_ij);
+          } else {
+            ASSERT(false);
+          }
+          fpair += h * phip;
+          phi *= h;
         }
 
-        // Stage III
-
-        // Compute force acting on each atom.
-        for(ii = 0; ii < inum; ii++) {
-                i = ilist[ii];
-                xtmp = x[i][0];
-                ytmp = x[i][1];
-                ztmp = x[i][2];
-                itype = type[i];
-
-                jlist = firstneigh[i];
-                jnum = numneigh[i];
-
-                // Concentration at site i
-                double x_i = -1.0;                // The value -1 indicates: no concentration dependence for all interactions of atom i.
-                                                                // It will be replaced by the concentration at site i if atom i is either A or B.
-
-                double D_i, h_prime_i;
-
-                // This if-clause is only required for ternary alloys.
-                if((itype == speciesA || itype == speciesB) && rho[i] != 0.0) {
-
-                        // Compute local concentration at site i.
-                        x_i = rhoB[i]/rho[i];
-                        ASSERT(x_i >= 0 && x_i<=1.0);
-
-                        if(cdeamVersion == 1) {
-                                // Calculate derivative of h(x_i) polynomial function.
-                                h_prime_i = evalHprime(x_i);
-                                D_i = D_values[i] * h_prime_i / (2.0 * rho[i] * rho[i]);
-                        } else if(cdeamVersion == 2) {
-                                D_i = D_values[i];
-                        } else {
-                          ASSERT(false);
-                        }
-                }
-
-                for(jj = 0; jj < jnum; jj++) {
-                        j = jlist[jj];
-                        j &= NEIGHMASK;
-
-                        delx = xtmp - x[j][0];
-                        dely = ytmp - x[j][1];
-                        delz = ztmp - x[j][2];
-                        rsq = delx*delx + dely*dely + delz*delz;
-
-                        if(rsq < cutforcesq) {
-                                jtype = type[j];
-                                double r = sqrt(rsq);
-                                const EAMTableIndex index = radiusToTableIndex(r);
-
-                                // rhoip = derivative of (density at atom j due to atom i)
-                                // rhojp = derivative of (density at atom i due to atom j)
-                                // psip needs both fp[i] and fp[j] terms since r_ij appears in two
-                                //   terms of embed eng: Fi(sum rho_ij) and Fj(sum rho_ji)
-                                //   hence embed' = Fi(sum rho_ij) rhojp + Fj(sum rho_ji) rhoip
-                                rhoip = RhoPrimeOfR(index, itype, jtype);
-                                rhojp = RhoPrimeOfR(index, jtype, itype);
-                                fpair = fp[i]*rhojp + fp[j]*rhoip;
-                                recip = 1.0/r;
-
-                                double x_j = -1;  // The value -1 indicates: no concentration dependence for this i-j pair
-                                                  // because atom j is not of species A nor B.
-
-                                // This code line is required for ternary alloy.
-                                if(jtype == speciesA || jtype == speciesB) {
-                                        ASSERT(rho[i] != 0.0);
-                                        ASSERT(rho[j] != 0.0);
-
-                                        // Compute local concentration at site j.
-                                        x_j = rhoB[j]/rho[j];
-                                        ASSERT(x_j >= 0 && x_j<=1.0);
-
-                                        double D_j=0.0;
-                                        if(cdeamVersion == 1) {
-                                                // Calculate derivative of h(x_j) polynomial function.
-                                                double h_prime_j = evalHprime(x_j);
-                                                D_j = D_values[j] * h_prime_j / (2.0 * rho[j] * rho[j]);
-                                        } else if(cdeamVersion == 2) {
-                                                D_j = D_values[j];
-                                        } else {
-                                          ASSERT(false);
-                                        }
-                                        double t2 = -rhoB[j];
-                                        if(itype == speciesB) t2 += rho[j];
-                                        fpair += D_j * rhoip * t2;
-                                }
-
-                                // This if-clause is only required for a ternary alloy.
-                                // Actually we don't need it at all because D_i should be zero anyway if
-                                // atom i has no concentration dependent interactions (because it is not species A or B).
-                                if(x_i != -1.0) {
-                                        double t1 = -rhoB[i];
-                                        if(jtype == speciesB) t1 += rho[i];
-                                        fpair += D_i * rhojp * t1;
-                                }
-
-                                double phip;
-                                double phi = PhiOfR(index, itype, jtype, recip, phip);
-                                if(itype == jtype || x_i == -1.0 || x_j == -1.0) {
-                                        // Case of no concentration dependence.
-                                        fpair += phip;
-                                } else {
-                                        // We have a concentration dependence for the i-j interaction.
-                                        double h=0.0;
-                                        if(cdeamVersion == 1) {
-                                                // Calculate h(x_i) polynomial function.
-                                                double h_i = evalH(x_i);
-                                                // Calculate h(x_j) polynomial function.
-                                                double h_j = evalH(x_j);
-                                                h = 0.5 * (h_i + h_j);
-                                        } else if(cdeamVersion == 2) {
-                                                // Average concentration.
-                                                double x_ij = 0.5 * (x_i + x_j);
-                                                // Calculate h(x_ij) polynomial function.
-                                                h = evalH(x_ij);
-                                        } else {
-                                          ASSERT(false);
-                                        }
-                                        fpair += h * phip;
-                                        phi *= h;
-                                }
-
-                                // Divide by r_ij and negate to get forces from gradient.
-                                fpair /= -r;
-
-                                f[i][0] += delx*fpair;
-                                f[i][1] += dely*fpair;
-                                f[i][2] += delz*fpair;
-                                if(newton_pair || j < nlocal) {
-                                        f[j][0] -= delx*fpair;
-                                        f[j][1] -= dely*fpair;
-                                        f[j][2] -= delz*fpair;
-                                }
-
-                                if(eflag) evdwl = phi;
-                                if(evflag) ev_tally(i,j,nlocal,newton_pair,evdwl,0.0,fpair,delx,dely,delz);
-                        }
-                }
+        // Divide by r_ij and negate to get forces from gradient.
+
+        fpair /= -r;
+
+        f[i][0] += delx*fpair;
+        f[i][1] += dely*fpair;
+        f[i][2] += delz*fpair;
+        if (newton_pair || j < nlocal) {
+          f[j][0] -= delx*fpair;
+          f[j][1] -= dely*fpair;
+          f[j][2] -= delz*fpair;
         }
 
-        if(vflag_fdotr) virial_fdotr_compute();
+        if (eflag) evdwl = phi;
+        if (evflag) ev_tally(i,j,nlocal,newton_pair,evdwl,0.0,fpair,delx,dely,delz);
+      }
+    }
+  }
+
+  if (vflag_fdotr) virial_fdotr_compute();
 }
 
 /* ---------------------------------------------------------------------- */
 
 void PairEAMCD::coeff(int narg, char **arg)
 {
-        PairEAMAlloy::coeff(narg, arg);
-
-        // Make sure the EAM file is a CD-EAM binary alloy.
-        if(setfl->nelements < 2)
-                error->all(FLERR,"The EAM file must contain at least 2 elements to be used with the eam/cd pair style.");
-
-        // Read in the coefficients of the h polynomial from the end of the EAM file.
-        read_h_coeff(arg[2]);
-
-        // Determine which atom type is the A species and which is the B species in the alloy.
-        // By default take the first element (index 0) in the EAM file as the A species
-        // and the second element (index 1) in the EAM file as the B species.
-        speciesA = -1;
-        speciesB = -1;
-        for(int i = 1; i <= atom->ntypes; i++) {
-                if(map[i] == 0) {
-                        if(speciesA >= 0)
-                                error->all(FLERR,"The first element from the EAM file may only be mapped to a single atom type.");
-                        speciesA = i;
-                }
-                if(map[i] == 1) {
-                        if(speciesB >= 0)
-                                error->all(FLERR,"The second element from the EAM file may only be mapped to a single atom type.");
-                        speciesB = i;
-                }
-        }
-        if(speciesA < 0)
-                error->all(FLERR,"The first element from the EAM file must be mapped to exactly one atom type.");
-        if(speciesB < 0)
-                error->all(FLERR,"The second element from the EAM file must be mapped to exactly one atom type.");
+  PairEAMAlloy::coeff(narg, arg);
+
+  // Make sure the EAM file is a CD-EAM binary alloy.
+
+  if (setfl->nelements < 2)
+    error->all(FLERR,"The EAM file must contain at least 2 elements to be used with the eam/cd pair style.");
+
+  // Read in the coefficients of the h polynomial from the end of the EAM file.
+
+  read_h_coeff(arg[2]);
+
+  // Determine which atom type is the A species and which is the B
+  // species in the alloy.  By default take the first element (index 0)
+  // in the EAM file as the A species and the second element (index 1)
+  // in the EAM file as the B species.
+
+  speciesA = -1;
+  speciesB = -1;
+  for (int i = 1; i <= atom->ntypes; i++) {
+    if (map[i] == 0) {
+      if (speciesA >= 0)
+        error->all(FLERR,"The first element from the EAM file may only be mapped to a single atom type.");
+      speciesA = i;
+    }
+    if (map[i] == 1) {
+      if (speciesB >= 0)
+        error->all(FLERR,"The second element from the EAM file may only be mapped to a single atom type.");
+      speciesB = i;
+    }
+  }
+  if (speciesA < 0)
+    error->all(FLERR,"The first element from the EAM file must be mapped to exactly one atom type.");
+  if (speciesB < 0)
+    error->all(FLERR,"The second element from the EAM file must be mapped to exactly one atom type.");
 }
 
 /* ----------------------------------------------------------------------
    Reads in the h(x) polynomial coefficients
 ------------------------------------------------------------------------- */
+
 void PairEAMCD::read_h_coeff(char *filename)
 {
-        if(comm->me == 0) {
-                // Open potential file
-                FILE *fptr;
-                char line[MAXLINE];
-                char nextline[MAXLINE];
-                fptr = force->open_potential(filename);
-                if (fptr == NULL) {
-                        char str[128];
-                        sprintf(str,"Cannot open EAM potential file %s", filename);
-                        error->one(FLERR,str);
-                }
-
-                // h coefficients are stored at the end of the file.
-                // Skip to last line of file.
-                while(fgets(nextline, MAXLINE, fptr) != NULL) {
-                        strcpy(line, nextline);
-                }
-                char* ptr = strtok(line, " \t\n\r\f");
-                int degree = atoi(ptr);
-                nhcoeff = degree+1;
-                hcoeff = new double[nhcoeff];
-                int i = 0;
-                while((ptr = strtok(NULL," \t\n\r\f")) != NULL && i < nhcoeff) {
-                        hcoeff[i++] = atof(ptr);
-                }
-                if(i != nhcoeff || nhcoeff < 1)
-                        error->one(FLERR,"Failed to read h(x) function coefficients from EAM file.");
-
-                // Close the potential file.
-                fclose(fptr);
-        }
-
-        MPI_Bcast(&nhcoeff, 1, MPI_INT, 0, world);
-        if(comm->me != 0) hcoeff = new double[nhcoeff];
-        MPI_Bcast(hcoeff, nhcoeff, MPI_DOUBLE, 0, world);
+  if (comm->me == 0) {
+
+    // Open potential file
+
+    FILE *fptr;
+    char line[MAXLINE];
+    char nextline[MAXLINE];
+    fptr = force->open_potential(filename);
+    if (fptr == NULL) {
+      char str[128];
+      sprintf(str,"Cannot open EAM potential file %s", filename);
+      error->one(FLERR,str);
+    }
+
+    // h coefficients are stored at the end of the file.
+    // Skip to last line of file.
+
+    while(fgets(nextline, MAXLINE, fptr) != NULL) {
+      strcpy(line, nextline);
+    }
+    char* ptr = strtok(line, " \t\n\r\f");
+    int degree = atoi(ptr);
+    nhcoeff = degree+1;
+    hcoeff = new double[nhcoeff];
+    int i = 0;
+    while((ptr = strtok(NULL," \t\n\r\f")) != NULL && i < nhcoeff) {
+      hcoeff[i++] = atof(ptr);
+    }
+    if (i != nhcoeff || nhcoeff < 1)
+      error->one(FLERR,"Failed to read h(x) function coefficients from EAM file.");
+
+    // Close the potential file.
+
+    fclose(fptr);
+  }
+
+  MPI_Bcast(&nhcoeff, 1, MPI_INT, 0, world);
+  if (comm->me != 0) hcoeff = new double[nhcoeff];
+  MPI_Bcast(hcoeff, nhcoeff, MPI_DOUBLE, 0, world);
 }
 
 
@@ -497,141 +541,130 @@ void PairEAMCD::read_h_coeff(char *filename)
 int PairEAMCD::pack_forward_comm(int n, int *list, double *buf,
                                  int pbc_flag, int *pbc)
 {
-        int i,j,m;
-
-        m = 0;
-        if(communicationStage == 2) {
-                if(cdeamVersion == 1) {
-                        for (i = 0; i < n; i++) {
-                                j = list[i];
-                                buf[m++] = fp[j];
-                                buf[m++] = rho[j];
-                                buf[m++] = rhoB[j];
-                                buf[m++] = D_values[j];
-                        }
-                        return m;
-                }
-                else if(cdeamVersion == 2) {
-                        for (i = 0; i < n; i++) {
-                                j = list[i];
-                                buf[m++] = fp[j];
-                                buf[m++] = rho[j];
-                                buf[m++] = rhoB[j];
-                        }
-                        return m;
-                }
-                else { ASSERT(false); return 0; }
-        }
-        else if(communicationStage == 4) {
-                for (i = 0; i < n; i++) {
-                        j = list[i];
-                        buf[m++] = D_values[j];
-                }
-                return m;
-        }
-        else return 0;
+  int i,j,m;
+
+  m = 0;
+  if (communicationStage == 2) {
+    if (cdeamVersion == 1) {
+      for (i = 0; i < n; i++) {
+        j = list[i];
+        buf[m++] = fp[j];
+        buf[m++] = rho[j];
+        buf[m++] = rhoB[j];
+        buf[m++] = D_values[j];
+      }
+      return m;
+    } else if (cdeamVersion == 2) {
+      for (i = 0; i < n; i++) {
+        j = list[i];
+        buf[m++] = fp[j];
+        buf[m++] = rho[j];
+        buf[m++] = rhoB[j];
+      }
+      return m;
+    } else { ASSERT(false); return 0; }
+  } else if (communicationStage == 4) {
+    for (i = 0; i < n; i++) {
+      j = list[i];
+      buf[m++] = D_values[j];
+    }
+    return m;
+  } else return 0;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void PairEAMCD::unpack_forward_comm(int n, int first, double *buf)
 {
-        int i,m,last;
-
-        m = 0;
-        last = first + n;
-        if(communicationStage == 2) {
-                if(cdeamVersion == 1) {
-                        for(i = first; i < last; i++) {
-                                fp[i] = buf[m++];
-                                rho[i] = buf[m++];
-                                rhoB[i] = buf[m++];
-                                D_values[i] = buf[m++];
-                        }
-                }
-                else if(cdeamVersion == 2) {
-                        for(i = first; i < last; i++) {
-                                fp[i] = buf[m++];
-                                rho[i] = buf[m++];
-                                rhoB[i] = buf[m++];
-                        }
-                } else {
-                  ASSERT(false);
-                }
-        }
-        else if(communicationStage == 4) {
-                for(i = first; i < last; i++) {
-                        D_values[i] = buf[m++];
-                }
-        }
+  int i,m,last;
+
+  m = 0;
+  last = first + n;
+  if (communicationStage == 2) {
+    if (cdeamVersion == 1) {
+      for (i = first; i < last; i++) {
+        fp[i] = buf[m++];
+        rho[i] = buf[m++];
+        rhoB[i] = buf[m++];
+        D_values[i] = buf[m++];
+      }
+    } else if (cdeamVersion == 2) {
+      for (i = first; i < last; i++) {
+        fp[i] = buf[m++];
+        rho[i] = buf[m++];
+        rhoB[i] = buf[m++];
+      }
+    } else {
+      ASSERT(false);
+    }
+  } else if (communicationStage == 4) {
+    for (i = first; i < last; i++) {
+      D_values[i] = buf[m++];
+    }
+  }
 }
 
 /* ---------------------------------------------------------------------- */
 int PairEAMCD::pack_reverse_comm(int n, int first, double *buf)
 {
-        int i,m,last;
-
-        m = 0;
-        last = first + n;
-
-        if(communicationStage == 1) {
-                if(cdeamVersion == 1) {
-                        for(i = first; i < last; i++) {
-                                buf[m++] = rho[i];
-                                buf[m++] = rhoB[i];
-                                buf[m++] = D_values[i];
-                        }
-                        return m;
-                }
-                else if(cdeamVersion == 2) {
-                        for(i = first; i < last; i++) {
-                                buf[m++] = rho[i];
-                                buf[m++] = rhoB[i];
-                        }
-                        return m;
-                }
-                else { ASSERT(false); return 0; }
-        }
-        else if(communicationStage == 3) {
-                for(i = first; i < last; i++) {
-                        buf[m++] = D_values[i];
-                }
-                return m;
-        }
-        else return 0;
+  int i,m,last;
+
+  m = 0;
+  last = first + n;
+
+  if (communicationStage == 1) {
+    if (cdeamVersion == 1) {
+      for (i = first; i < last; i++) {
+        buf[m++] = rho[i];
+        buf[m++] = rhoB[i];
+        buf[m++] = D_values[i];
+      }
+      return m;
+    } else if (cdeamVersion == 2) {
+      for (i = first; i < last; i++) {
+        buf[m++] = rho[i];
+        buf[m++] = rhoB[i];
+      }
+      return m;
+    } else { ASSERT(false); return 0; }
+  } else if (communicationStage == 3) {
+    for (i = first; i < last; i++) {
+      buf[m++] = D_values[i];
+    }
+    return m;
+  } else return 0;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void PairEAMCD::unpack_reverse_comm(int n, int *list, double *buf)
 {
-        int i,j,m;
-
-        m = 0;
-        if(communicationStage == 1) {
-                if(cdeamVersion == 1) {
-                        for(i = 0; i < n; i++) {
-                                j = list[i];
-                                rho[j] += buf[m++];
-                                rhoB[j] += buf[m++];
-                                D_values[j] += buf[m++];
-                        }
-                } else if(cdeamVersion == 2) {
-                        for(i = 0; i < n; i++) {
-                                j = list[i];
-                                rho[j] += buf[m++];
-                                rhoB[j] += buf[m++];
-                        }
-                } else {
-                  ASSERT(false);
-                }
-        }
-        else if(communicationStage == 3) {
-                for(i = 0; i < n; i++) {
-                        j = list[i];
-                        D_values[j] += buf[m++];
-                }
-        }
+  int i,j,m;
+
+  m = 0;
+  if (communicationStage == 1) {
+    if (cdeamVersion == 1) {
+      for (i = 0; i < n; i++) {
+        j = list[i];
+        rho[j] += buf[m++];
+        rhoB[j] += buf[m++];
+        D_values[j] += buf[m++];
+      }
+    } else if (cdeamVersion == 2) {
+      for (i = 0; i < n; i++) {
+        j = list[i];
+        rho[j] += buf[m++];
+        rhoB[j] += buf[m++];
+      }
+    } else {
+      ASSERT(false);
+    }
+  } else if (communicationStage == 3) {
+    for (i = 0; i < n; i++) {
+      j = list[i];
+      D_values[j] += buf[m++];
+    }
+  }
 }
 
 /* ----------------------------------------------------------------------
@@ -639,6 +672,6 @@ void PairEAMCD::unpack_reverse_comm(int n, int *list, double *buf)
 ------------------------------------------------------------------------- */
 double PairEAMCD::memory_usage()
 {
-        double bytes = 2 * nmax * sizeof(double);
-        return PairEAMAlloy::memory_usage() + bytes;
+  double bytes = 2 * nmax * sizeof(double);
+  return PairEAMAlloy::memory_usage() + bytes;
 }
-- 
GitLab


From 77e5445bfe967dac65406aa62ac0a70ba6a4d35c Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 31 Jul 2018 14:16:54 -0400
Subject: [PATCH 131/243] Need to purge old pair_cdeam.* files

---
 src/Purge.list | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/Purge.list b/src/Purge.list
index cd4eb17dab..cb98636b1c 100644
--- a/src/Purge.list
+++ b/src/Purge.list
@@ -24,6 +24,9 @@ style_nstencil.h
 style_ntopo.h
 # other auto-generated files
 lmpinstalledpkgs.h
+# renamed on 31 July 2018
+pair_cdeam.h
+pair_cdeam.cpp
 # renamed on 20 July 2018
 pair_body.h
 pair_body.cpp
-- 
GitLab


From 90897f570ed5777539dd7dda533ae18e68edc31c Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Tue, 31 Jul 2018 15:27:09 -0600
Subject: [PATCH 132/243] changes for Intro and Howto doc pages

---
 doc/src/Errors.txt                            |    2 +-
 doc/src/Examples.txt                          |    6 +-
 doc/src/Howto.txt                             |  128 +
 doc/src/Howto_2d.txt                          |   48 +
 doc/src/Howto_barostat.txt                    |   75 +
 ...ial_bash_on_windows.txt => Howto_bash.txt} |    1 +
 doc/src/Howto_bioFF.txt                       |  101 +
 doc/src/Howto_body.txt                        |  456 +++
 doc/src/Howto_chunk.txt                       |  166 +
 doc/src/Howto_coreshell.txt                   |  253 ++
 doc/src/Howto_couple.txt                      |  105 +
 doc/src/Howto_diffusion.txt                   |   31 +
 doc/src/Howto_dispersion.txt                  |  108 +
 doc/src/Howto_drude.txt                       |   77 +
 .../{tutorial_drude.txt => Howto_drude2.txt}  |    0
 doc/src/Howto_elastic.txt                     |   47 +
 .../{tutorial_github.txt => Howto_github.txt} |   10 +-
 doc/src/Howto_granular.txt                    |   57 +
 doc/src/Howto_kappa.txt                       |   90 +
 doc/src/Howto_library.txt                     |  208 ++
 doc/src/Howto_manifold.txt                    |   41 +
 doc/src/Howto_multiple.txt                    |   95 +
 doc/src/Howto_nemd.txt                        |   48 +
 doc/src/Howto_output.txt                      |  307 ++
 doc/src/Howto_polarizable.txt                 |   81 +
 ...torial_pylammps.txt => Howto_pylammps.txt} |   21 +-
 doc/src/Howto_replica.txt                     |   61 +
 doc/src/Howto_restart.txt                     |   97 +
 doc/src/Howto_spc.txt                         |   54 +
 doc/src/Howto_spherical.txt                   |  243 ++
 doc/src/Howto_spins.txt                       |   59 +
 doc/src/Howto_temperature.txt                 |   40 +
 doc/src/Howto_thermostat.txt                  |   89 +
 doc/src/Howto_tip3p.txt                       |   69 +
 doc/src/Howto_tip4p.txt                       |  112 +
 doc/src/Howto_triclinic.txt                   |  213 ++
 doc/src/Howto_viscosity.txt                   |  133 +
 doc/src/Howto_viz.txt                         |   40 +
 doc/src/Howto_walls.txt                       |   80 +
 doc/src/Intro.txt                             |   43 +
 doc/src/Manual.txt                            |  167 +-
 doc/src/Manual_version.txt                    |   33 +
 doc/src/Modify_body.txt                       |    7 +-
 doc/src/Modify_contribute.txt                 |   21 +-
 doc/src/Packages_details.txt                  |   58 +-
 doc/src/Packages_standard.txt                 |   12 +-
 doc/src/Packages_user.txt                     |    2 +-
 doc/src/Python_library.txt                    |   14 +-
 doc/src/Python_pylammps.txt                   |    4 +-
 doc/src/Section_history.txt                   |  135 -
 doc/src/Section_howto.txt                     | 3011 -----------------
 doc/src/Section_intro.txt                     |  550 ---
 doc/src/Section_start.txt                     |   52 +-
 doc/src/Speed.txt                             |    2 +-
 doc/src/Tools.txt                             |    6 +-
 doc/src/angle_cosine_periodic.txt             |    8 +-
 doc/src/atom_style.txt                        |   21 +-
 doc/src/body.txt                              |    4 +-
 doc/src/boundary.txt                          |    6 +-
 doc/src/box.txt                               |    6 +-
 doc/src/change_box.txt                        |   18 +-
 doc/src/compute.txt                           |    2 +-
 doc/src/compute_ackland_atom.txt              |    2 +-
 doc/src/compute_angle.txt                     |    4 +-
 doc/src/compute_angle_local.txt               |    4 +-
 doc/src/compute_angmom_chunk.txt              |   11 +-
 doc/src/compute_basal_atom.txt                |    5 +-
 doc/src/compute_body_local.txt                |   15 +-
 doc/src/compute_bond.txt                      |    4 +-
 doc/src/compute_bond_local.txt                |    4 +-
 doc/src/compute_centro_atom.txt               |    4 +-
 doc/src/compute_chunk_atom.txt                |   25 +-
 doc/src/compute_cluster_atom.txt              |    2 +-
 doc/src/compute_cna_atom.txt                  |    2 +-
 doc/src/compute_cnp_atom.txt                  |    2 +-
 doc/src/compute_com.txt                       |    5 +-
 doc/src/compute_com_chunk.txt                 |   12 +-
 doc/src/compute_contact_atom.txt              |    2 +-
 doc/src/compute_coord_atom.txt                |    5 +-
 doc/src/compute_damage_atom.txt               |    2 +-
 doc/src/compute_dihedral.txt                  |    4 +-
 doc/src/compute_dihedral_local.txt            |    4 +-
 doc/src/compute_dilatation_atom.txt           |    5 +-
 doc/src/compute_dipole_chunk.txt              |   11 +-
 doc/src/compute_displace_atom.txt             |    5 +-
 doc/src/compute_dpd.txt                       |    6 +-
 doc/src/compute_dpd_atom.txt                  |    6 +-
 doc/src/compute_edpd_temp_atom.txt            |    6 +-
 doc/src/compute_entropy_atom.txt              |    4 +-
 doc/src/compute_erotate_asphere.txt           |    2 +-
 doc/src/compute_erotate_rigid.txt             |    6 +-
 doc/src/compute_erotate_sphere.txt            |    2 +-
 doc/src/compute_erotate_sphere_atom.txt       |    2 +-
 doc/src/compute_event_displace.txt            |    2 +-
 doc/src/compute_fep.txt                       |    4 +-
 doc/src/compute_global_atom.txt               |    4 +-
 doc/src/compute_group_group.txt               |    4 +-
 doc/src/compute_gyration.txt                  |    4 +-
 doc/src/compute_gyration_chunk.txt            |   11 +-
 doc/src/compute_heat_flux.txt                 |   10 +-
 doc/src/compute_hexorder_atom.txt             |    7 +-
 doc/src/compute_improper.txt                  |    4 +-
 doc/src/compute_improper_local.txt            |    4 +-
 doc/src/compute_inertia_chunk.txt             |   11 +-
 doc/src/compute_ke.txt                        |    2 +-
 doc/src/compute_ke_atom.txt                   |    2 +-
 doc/src/compute_ke_atom_eff.txt               |    6 +-
 doc/src/compute_ke_eff.txt                    |    2 +-
 doc/src/compute_ke_rigid.txt                  |    4 +-
 doc/src/compute_meso_e_atom.txt               |    2 +-
 doc/src/compute_meso_rho_atom.txt             |    2 +-
 doc/src/compute_meso_t_atom.txt               |    2 +-
 doc/src/compute_msd.txt                       |    5 +-
 doc/src/compute_msd_chunk.txt                 |    9 +-
 doc/src/compute_msd_nongauss.txt              |    5 +-
 doc/src/compute_omega_chunk.txt               |   11 +-
 doc/src/compute_orientorder_atom.txt          |    7 +-
 doc/src/compute_pair.txt                      |    5 +-
 doc/src/compute_pair_local.txt                |    4 +-
 doc/src/compute_pe.txt                        |    5 +-
 doc/src/compute_pe_atom.txt                   |    2 +-
 doc/src/compute_plasticity_atom.txt           |    5 +-
 doc/src/compute_pressure.txt                  |    4 +-
 doc/src/compute_property_atom.txt             |   14 +-
 doc/src/compute_property_chunk.txt            |   15 +-
 doc/src/compute_property_local.txt            |   12 +-
 doc/src/compute_rdf.txt                       |    2 +-
 doc/src/compute_reduce.txt                    |    2 +-
 doc/src/compute_rigid_local.txt               |   10 +-
 doc/src/compute_saed.txt                      |    7 +-
 doc/src/compute_slice.txt                     |    4 +-
 doc/src/compute_smd_contact_radius.txt        |    6 +-
 doc/src/compute_smd_damage.txt                |    8 +-
 doc/src/compute_smd_hourglass_error.txt       |    8 +-
 doc/src/compute_smd_internal_energy.txt       |    4 +-
 doc/src/compute_smd_plastic_strain.txt        |    4 +-
 doc/src/compute_smd_plastic_strain_rate.txt   |    4 +-
 doc/src/compute_smd_rho.txt                   |    4 +-
 doc/src/compute_smd_tlsph_defgrad.txt         |    5 +-
 doc/src/compute_smd_tlsph_dt.txt              |    4 +-
 doc/src/compute_smd_tlsph_num_neighs.txt      |    4 +-
 doc/src/compute_smd_tlsph_shape.txt           |    5 +-
 doc/src/compute_smd_tlsph_strain.txt          |    5 +-
 doc/src/compute_smd_tlsph_strain_rate.txt     |    5 +-
 doc/src/compute_smd_tlsph_stress.txt          |    9 +-
 .../compute_smd_triangle_mesh_vertices.txt    |    6 +-
 doc/src/compute_smd_ulsph_num_neighs.txt      |    2 +-
 doc/src/compute_smd_ulsph_strain.txt          |    2 +-
 doc/src/compute_smd_ulsph_strain_rate.txt     |    5 +-
 doc/src/compute_smd_ulsph_stress.txt          |    5 +-
 doc/src/compute_smd_vol.txt                   |    4 +-
 doc/src/compute_sna_atom.txt                  |    5 +-
 doc/src/compute_stress_atom.txt               |    5 +-
 doc/src/compute_tdpd_cc_atom.txt              |    6 +-
 doc/src/compute_temp.txt                      |    8 +-
 doc/src/compute_temp_asphere.txt              |    8 +-
 doc/src/compute_temp_body.txt                 |    8 +-
 doc/src/compute_temp_chunk.txt                |   16 +-
 doc/src/compute_temp_com.txt                  |    8 +-
 doc/src/compute_temp_cs.txt                   |   11 +-
 doc/src/compute_temp_deform.txt               |    8 +-
 doc/src/compute_temp_deform_eff.txt           |    4 +-
 doc/src/compute_temp_drude.txt                |   12 +-
 doc/src/compute_temp_eff.txt                  |    4 +-
 doc/src/compute_temp_partial.txt              |    8 +-
 doc/src/compute_temp_profile.txt              |    8 +-
 doc/src/compute_temp_ramp.txt                 |    8 +-
 doc/src/compute_temp_region.txt               |    8 +-
 doc/src/compute_temp_region_eff.txt           |    4 +-
 doc/src/compute_temp_rotate.txt               |    8 +-
 doc/src/compute_temp_sphere.txt               |    8 +-
 doc/src/compute_ti.txt                        |    5 +-
 doc/src/compute_torque_chunk.txt              |    9 +-
 doc/src/compute_vacf.txt                      |    5 +-
 doc/src/compute_vcm_chunk.txt                 |   11 +-
 doc/src/compute_voronoi_atom.txt              |   26 +-
 doc/src/compute_xrd.txt                       |    2 +-
 doc/src/create_box.txt                        |    6 +-
 doc/src/dimension.txt                         |    2 +-
 doc/src/dump.txt                              |   14 +-
 doc/src/dump_image.txt                        |   14 +-
 doc/src/fix.txt                               |    2 +-
 doc/src/fix_adapt.txt                         |    8 +-
 doc/src/fix_adapt_fep.txt                     |    8 +-
 doc/src/fix_addforce.txt                      |   10 +-
 doc/src/fix_addtorque.txt                     |   10 +-
 doc/src/fix_append_atoms.txt                  |    8 +-
 doc/src/fix_atc.txt                           |    8 +-
 doc/src/fix_atom_swap.txt                     |    4 +-
 doc/src/fix_ave_atom.txt                      |   14 +-
 doc/src/fix_ave_chunk.txt                     |   33 +-
 doc/src/fix_ave_correlate.txt                 |   21 +-
 doc/src/fix_ave_histo.txt                     |   15 +-
 doc/src/fix_ave_time.txt                      |    9 +-
 doc/src/fix_aveforce.txt                      |    8 +-
 doc/src/fix_balance.txt                       |    4 +-
 doc/src/fix_bond_break.txt                    |    4 +-
 doc/src/fix_bond_create.txt                   |    4 +-
 doc/src/fix_bond_react.txt                    |    5 +-
 doc/src/fix_bond_swap.txt                     |   14 +-
 doc/src/fix_box_relax.txt                     |   20 +-
 doc/src/fix_cmap.txt                          |    6 +-
 doc/src/fix_colvars.txt                       |    6 +-
 doc/src/fix_controller.txt                    |    6 +-
 doc/src/fix_deform.txt                        |    7 +-
 doc/src/fix_deposit.txt                       |   10 +-
 doc/src/fix_dpd_source.txt                    |    8 +-
 doc/src/fix_drag.txt                          |    6 +-
 doc/src/fix_drude.txt                         |    8 +-
 doc/src/fix_drude_transform.txt               |    4 +-
 doc/src/fix_dt_reset.txt                      |    4 +-
 doc/src/fix_efield.txt                        |    9 +-
 doc/src/fix_enforce2d.txt                     |    6 +-
 doc/src/fix_evaporate.txt                     |    6 +-
 doc/src/fix_external.txt                      |   13 +-
 doc/src/fix_filter_corotate.txt               |    7 +-
 doc/src/fix_flow_gauss.txt                    |   10 +-
 doc/src/fix_freeze.txt                        |    8 +-
 doc/src/fix_gcmc.txt                          |    4 +-
 doc/src/fix_gld.txt                           |    2 +-
 doc/src/fix_gle.txt                           |    6 +-
 doc/src/fix_gravity.txt                       |   10 +-
 doc/src/fix_halt.txt                          |    8 +-
 doc/src/fix_heat.txt                          |   11 +-
 doc/src/fix_imd.txt                           |    6 +-
 doc/src/fix_indent.txt                        |    4 +-
 doc/src/fix_langevin.txt                      |   10 +-
 doc/src/fix_langevin_drude.txt                |    9 +-
 doc/src/fix_langevin_eff.txt                  |    8 +-
 doc/src/fix_latte.txt                         |    6 +-
 doc/src/fix_lb_fluid.txt                      |    6 +-
 doc/src/fix_lb_momentum.txt                   |    8 +-
 doc/src/fix_lb_pc.txt                         |    8 +-
 doc/src/fix_lb_rigid_pc_sphere.txt            |   34 +-
 doc/src/fix_lb_viscous.txt                    |    6 +-
 doc/src/fix_lineforce.txt                     |    6 +-
 doc/src/fix_manifoldforce.txt                 |    8 +-
 doc/src/fix_meso.txt                          |    8 +-
 doc/src/fix_meso_stationary.txt               |    8 +-
 doc/src/fix_momentum.txt                      |    8 +-
 doc/src/fix_move.txt                          |    7 +-
 doc/src/fix_msst.txt                          |    4 +-
 doc/src/fix_mvv_dpd.txt                       |    8 +-
 doc/src/fix_neb.txt                           |   12 +-
 doc/src/fix_nh.txt                            |   13 +-
 doc/src/fix_nphug.txt                         |    6 +-
 doc/src/fix_nve.txt                           |    8 +-
 doc/src/fix_nve_asphere.txt                   |    8 +-
 doc/src/fix_nve_asphere_noforce.txt           |    8 +-
 doc/src/fix_nve_body.txt                      |   14 +-
 doc/src/fix_nve_eff.txt                       |    8 +-
 doc/src/fix_nve_limit.txt                     |   16 +-
 doc/src/fix_nve_line.txt                      |   14 +-
 doc/src/fix_nve_manifold_rattle.txt           |   10 +-
 doc/src/fix_nve_noforce.txt                   |    8 +-
 doc/src/fix_nve_sphere.txt                    |    8 +-
 doc/src/fix_nve_tri.txt                       |   16 +-
 doc/src/fix_nvk.txt                           |    8 +-
 doc/src/fix_nvt_manifold_rattle.txt           |   18 +-
 doc/src/fix_oneway.txt                        |    8 +-
 doc/src/fix_orient.txt                        |   12 +-
 doc/src/fix_phonon.txt                        |    2 +-
 doc/src/fix_pimd.txt                          |   15 +-
 doc/src/fix_planeforce.txt                    |    6 +-
 doc/src/fix_poems.txt                         |    6 +-
 doc/src/fix_pour.txt                          |    6 +-
 doc/src/fix_precession_spin.txt               |    4 +-
 doc/src/fix_press_berendsen.txt               |    7 +-
 doc/src/fix_print.txt                         |    8 +-
 doc/src/fix_property_atom.txt                 |   27 +-
 doc/src/fix_python_move.txt                   |    8 +-
 doc/src/fix_qbmsst.txt                        |    8 +-
 doc/src/fix_qeq.txt                           |    5 +-
 doc/src/fix_qeq_comb.txt                      |    6 +-
 doc/src/fix_qeq_reax.txt                      |    4 +-
 doc/src/fix_qmmm.txt                          |    6 +-
 doc/src/fix_reax_bonds.txt                    |    8 +-
 doc/src/fix_reaxc_species.txt                 |    4 +-
 doc/src/fix_recenter.txt                      |   10 +-
 doc/src/fix_restrain.txt                      |    4 +-
 doc/src/fix_rigid.txt                         |   36 +-
 doc/src/fix_setforce.txt                      |    8 +-
 doc/src/fix_shake.txt                         |    7 +-
 doc/src/fix_smd.txt                           |   12 +-
 doc/src/fix_smd_setvel.txt                    |    6 +-
 doc/src/fix_spring.txt                        |   22 +-
 doc/src/fix_spring_chunk.txt                  |    4 +-
 doc/src/fix_spring_rg.txt                     |    8 +-
 doc/src/fix_spring_self.txt                   |    8 +-
 doc/src/fix_srd.txt                           |   10 +-
 doc/src/fix_store_force.txt                   |    8 +-
 doc/src/fix_store_state.txt                   |    8 +-
 doc/src/fix_temp_berendsen.txt                |   10 +-
 doc/src/fix_temp_csvr.txt                     |   10 +-
 doc/src/fix_temp_rescale.txt                  |   10 +-
 doc/src/fix_temp_rescale_eff.txt              |    6 +-
 doc/src/fix_thermal_conductivity.txt          |    6 +-
 doc/src/fix_ti_spring.txt                     |   13 +-
 doc/src/fix_tmd.txt                           |    3 +-
 doc/src/fix_ttm.txt                           |   23 +-
 doc/src/fix_vector.txt                        |    7 +-
 doc/src/fix_viscosity.txt                     |   27 +-
 doc/src/fix_viscous.txt                       |    6 +-
 doc/src/fix_wall.txt                          |   16 +-
 doc/src/fix_wall_body_polygon.txt             |   10 +-
 doc/src/fix_wall_body_polyhedron.txt          |   10 +-
 doc/src/fix_wall_gran.txt                     |    6 +-
 doc/src/fix_wall_gran_region.txt              |    6 +-
 doc/src/fix_wall_piston.txt                   |    8 +-
 doc/src/fix_wall_reflect.txt                  |    8 +-
 doc/src/fix_wall_region.txt                   |   11 +-
 doc/src/fix_wall_srd.txt                      |    6 +-
 doc/src/improper_umbrella.txt                 |    2 +-
 doc/src/kspace_modify.txt                     |   18 +-
 doc/src/kspace_style.txt                      |   15 +-
 doc/src/lammps_tutorials.txt                  |    6 -
 doc/src/molecule.txt                          |    5 +-
 doc/src/neb.txt                               |    5 +-
 doc/src/pair_body_nparticle.txt               |   11 +-
 doc/src/pair_body_rounded_polygon.txt         |    5 +-
 doc/src/pair_body_rounded_polyhedron.txt      |    5 +-
 doc/src/pair_born.txt                         |    8 +-
 doc/src/pair_buck.txt                         |    5 +-
 doc/src/pair_coul.txt                         |   26 +-
 doc/src/pair_cs.txt                           |    4 +-
 doc/src/pair_hbond_dreiding.txt               |    8 +-
 doc/src/pair_lj.txt                           |   26 +-
 doc/src/pair_lj_long.txt                      |    2 +-
 doc/src/pair_thole.txt                        |    4 +-
 doc/src/prd.txt                               |    4 +-
 doc/src/read_data.txt                         |   12 +-
 doc/src/region.txt                            |    6 +-
 doc/src/run.txt                               |    6 +-
 doc/src/tad.txt                               |    5 +-
 doc/src/temper.txt                            |   15 +-
 doc/src/thermo_style.txt                      |   10 +-
 doc/src/tutorials.txt                         |   15 -
 doc/src/velocity.txt                          |   17 +-
 338 files changed, 5119 insertions(+), 5110 deletions(-)
 create mode 100644 doc/src/Howto.txt
 create mode 100644 doc/src/Howto_2d.txt
 create mode 100644 doc/src/Howto_barostat.txt
 rename doc/src/{tutorial_bash_on_windows.txt => Howto_bash.txt} (99%)
 mode change 100644 => 100755
 create mode 100644 doc/src/Howto_bioFF.txt
 create mode 100644 doc/src/Howto_body.txt
 create mode 100644 doc/src/Howto_chunk.txt
 create mode 100644 doc/src/Howto_coreshell.txt
 create mode 100644 doc/src/Howto_couple.txt
 create mode 100644 doc/src/Howto_diffusion.txt
 create mode 100644 doc/src/Howto_dispersion.txt
 create mode 100644 doc/src/Howto_drude.txt
 rename doc/src/{tutorial_drude.txt => Howto_drude2.txt} (100%)
 create mode 100644 doc/src/Howto_elastic.txt
 rename doc/src/{tutorial_github.txt => Howto_github.txt} (98%)
 create mode 100644 doc/src/Howto_granular.txt
 create mode 100644 doc/src/Howto_kappa.txt
 create mode 100644 doc/src/Howto_library.txt
 create mode 100644 doc/src/Howto_manifold.txt
 create mode 100644 doc/src/Howto_multiple.txt
 create mode 100644 doc/src/Howto_nemd.txt
 create mode 100644 doc/src/Howto_output.txt
 create mode 100644 doc/src/Howto_polarizable.txt
 rename doc/src/{tutorial_pylammps.txt => Howto_pylammps.txt} (95%)
 create mode 100644 doc/src/Howto_replica.txt
 create mode 100644 doc/src/Howto_restart.txt
 create mode 100644 doc/src/Howto_spc.txt
 create mode 100644 doc/src/Howto_spherical.txt
 create mode 100644 doc/src/Howto_spins.txt
 create mode 100644 doc/src/Howto_temperature.txt
 create mode 100644 doc/src/Howto_thermostat.txt
 create mode 100644 doc/src/Howto_tip3p.txt
 create mode 100644 doc/src/Howto_tip4p.txt
 create mode 100644 doc/src/Howto_triclinic.txt
 create mode 100644 doc/src/Howto_viscosity.txt
 create mode 100644 doc/src/Howto_viz.txt
 create mode 100644 doc/src/Howto_walls.txt
 create mode 100644 doc/src/Intro.txt
 create mode 100644 doc/src/Manual_version.txt
 delete mode 100644 doc/src/Section_history.txt
 delete mode 100644 doc/src/Section_howto.txt
 delete mode 100644 doc/src/Section_intro.txt
 delete mode 100644 doc/src/lammps_tutorials.txt
 delete mode 100644 doc/src/tutorials.txt

diff --git a/doc/src/Errors.txt b/doc/src/Errors.txt
index 7bc520c19d..92a577c5f2 100644
--- a/doc/src/Errors.txt
+++ b/doc/src/Errors.txt
@@ -1,6 +1,6 @@
 "Previous Section"_Python.html - "LAMMPS WWW Site"_lws -
 "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Section_history.html :c
+Section"_Manual.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Examples.txt b/doc/src/Examples.txt
index 467ddcc959..b01b289d5e 100644
--- a/doc/src/Examples.txt
+++ b/doc/src/Examples.txt
@@ -1,6 +1,6 @@
-"Previous Section"_Section_howto.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Section_perf.html :c
+"Previous Section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Tools.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Howto.txt b/doc/src/Howto.txt
new file mode 100644
index 0000000000..d9a60d1ef4
--- /dev/null
+++ b/doc/src/Howto.txt
@@ -0,0 +1,128 @@
+"Previous Section"_Performance.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Examples.html :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands.html#comm)
+
+:line
+
+How to discussions :h2
+
+These doc pages describe how to perform various tasks with LAMMPS,
+both for users and developers.  The
+"glossary"_http://lammps.sandia.gov website page also lists MD
+terminology with links to corresponding LAMMPS manual pages.
+
+The example input scripts included in the examples dir of the LAMMPS
+distribution and highlighted on the "Examples"_Examples.html doc page
+also show how to setup and run various kinds of simulations.
+
+<!-- RST
+
+.. toctree::
+
+   Howto_github
+   Howto_pylammps
+   Howto_bash
+
+.. toctree::
+
+   Howto_restart
+   Howto_viz
+   Howto_multiple
+   Howto_replica
+   Howto_library
+   Howto_couple
+
+.. toctree::
+
+   Howto_output
+   Howto_chunk
+
+.. toctree::
+
+   Howto_2d
+   Howto_triclinic
+   Howto_walls
+   Howto_nemd
+   Howto_granular
+   Howto_spherical
+   Howto_dispersion
+
+.. toctree::
+
+   Howto_temperature
+   Howto_thermostat
+   Howto_barostat
+   Howto_elastic
+   Howto_kappa
+   Howto_viscosity
+   Howto_diffusion
+
+.. toctree::
+
+   Howto_bioFF
+   Howto_tip3p
+   Howto_tip4p
+   Howto_spc
+
+.. toctree::
+
+   Howto_body
+   Howto_polarizable
+   Howto_coreshell
+   Howto_drude
+   Howto_drude2
+   Howto_manifold
+   Howto_spins
+
+END_RST -->
+
+<!-- HTML_ONLY -->
+
+"Using GitHub with LAMMPS"_Howto_github.html
+"PyLAMMPS interface to LAMMPS"_Howto_pylammps.html
+"Using LAMMPS with bash on Windows"_Howto_bash.html
+
+"Restart a simulation"_Howto_restart.html
+"Visualize LAMMPS snapshots"_Howto_viz.html
+"Run multiple simulations from one input script"_Howto_multiple.html
+"Multi-replica simulations"_Howto_replica.html
+"Library interface to LAMMPS"_Howto_library.html
+"Couple LAMMPS to other codes"_Howto_couple.html :all(b)
+
+"Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_Howto_output.html
+"Use chunks to calculate system properties"_Howto_chunk.html :all(b)
+
+"2d simulations"_Howto_2d.html
+"Triclinic (non-orthogonal) simulation boxes"_Howto_triclinic.html
+"Walls"_Howto_walls.html
+"NEMD simulations"_Howto_nemd.html
+"Granular models"_Howto_granular.html
+"Finite-size spherical and aspherical particles"_Howto_spherical.html
+"Long-range dispersion settings"_Howto_dispersion.html :all(b)
+
+"Calculate temperature"_Howto_temperature.html
+"Thermostats"_Howto_thermostat.html
+"Barostats"_Howto_barostat.html
+"Calculate elastic constants"_Howto_elastic.html
+"Calculate thermal conductivity"_Howto_kappa.html
+"Calculate viscosity"_Howto_viscosity.html
+"Calculate a diffusion coefficient"_Howto_diffusion.html :all(b)
+
+"CHARMM, AMBER, and DREIDING force fields"_Howto_bioFF.html
+"TIP3P water model"_Howto_tip3p.html
+"TIP4P water model"_Howto_tip4p.html
+"SPC water model"_Howto_spc.html :all(b)
+
+"Body style particles"_Howto_body.html
+"Polarizable models"_Howto_polarizable.html
+"Adiabatic core/shell model"_Howto_coreshell.html
+"Drude induced dipoles"_Howto_drude.html
+"Drude induced dipoles (extended)"_Howto_drude2.html :all(b)
+"Manifolds (surfaces)"_Howto_manifold.html
+"Magnetic spins"_Howto_spins.html
+
+<!-- END_HTML_ONLY -->
diff --git a/doc/src/Howto_2d.txt b/doc/src/Howto_2d.txt
new file mode 100644
index 0000000000..ea11a7d546
--- /dev/null
+++ b/doc/src/Howto_2d.txt
@@ -0,0 +1,48 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+2d simulations :h3
+
+Use the "dimension"_dimension.html command to specify a 2d simulation.
+
+Make the simulation box periodic in z via the "boundary"_boundary.html
+command.  This is the default.
+
+If using the "create box"_create_box.html command to define a
+simulation box, set the z dimensions narrow, but finite, so that the
+create_atoms command will tile the 3d simulation box with a single z
+plane of atoms - e.g.
+
+"create box"_create_box.html 1 -10 10 -10 10 -0.25 0.25 :pre
+
+If using the "read data"_read_data.html command to read in a file of
+atom coordinates, set the "zlo zhi" values to be finite but narrow,
+similar to the create_box command settings just described.  For each
+atom in the file, assign a z coordinate so it falls inside the
+z-boundaries of the box - e.g. 0.0.
+
+Use the "fix enforce2d"_fix_enforce2d.html command as the last
+defined fix to insure that the z-components of velocities and forces
+are zeroed out every timestep.  The reason to make it the last fix is
+so that any forces induced by other fixes will be zeroed out.
+
+Many of the example input scripts included in the LAMMPS distribution
+are for 2d models.
+
+NOTE: Some models in LAMMPS treat particles as finite-size spheres, as
+opposed to point particles.  See the "atom_style
+sphere"_atom_style.html and "fix nve/sphere"_fix_nve_sphere.html
+commands for details.  By default, for 2d simulations, such particles
+will still be modeled as 3d spheres, not 2d discs (circles), meaning
+their moment of inertia will be that of a sphere.  If you wish to
+model them as 2d discs, see the "set density/disc"_set.html command
+and the {disc} option for the "fix nve/sphere"_fix_nve_sphere.html,
+"fix nvt/sphere"_fix_nvt_sphere.html, "fix
+nph/sphere"_fix_nph_sphere.html, "fix npt/sphere"_fix_npt_sphere.html
+commands.
diff --git a/doc/src/Howto_barostat.txt b/doc/src/Howto_barostat.txt
new file mode 100644
index 0000000000..b289ebfc4c
--- /dev/null
+++ b/doc/src/Howto_barostat.txt
@@ -0,0 +1,75 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Barostats :h3
+
+Barostatting means controlling the pressure in an MD simulation.
+"Thermostatting"_Howto_thermostat.html means controlling the
+temperature of the particles.  Since the pressure includes a kinetic
+component due to particle velocities, both these operations require
+calculation of the temperature.  Typically a target temperature (T)
+and/or pressure (P) is specified by the user, and the thermostat or
+barostat attempts to equilibrate the system to the requested T and/or
+P.
+
+Barostatting in LAMMPS is performed by "fixes"_fix.html.  Two
+barosttating methods are currently available: Nose-Hoover (npt and
+nph) and Berendsen:
+
+"fix npt"_fix_nh.html
+"fix npt/sphere"_fix_npt_sphere.html
+"fix npt/asphere"_fix_npt_asphere.html
+"fix nph"_fix_nh.html
+"fix press/berendsen"_fix_press_berendsen.html :ul
+
+The "fix npt"_fix_nh.html commands include a Nose-Hoover thermostat
+and barostat.  "Fix nph"_fix_nh.html is just a Nose/Hoover barostat;
+it does no thermostatting.  Both "fix nph"_fix_nh.html and "fix
+press/berendsen"_fix_press_berendsen.html can be used in conjunction
+with any of the thermostatting fixes.
+
+As with the "thermostats"_Howto_thermostat.html, "fix npt"_fix_nh.html
+and "fix nph"_fix_nh.html only use translational motion of the
+particles in computing T and P and performing thermo/barostatting.
+"Fix npt/sphere"_fix_npt_sphere.html and "fix
+npt/asphere"_fix_npt_asphere.html thermo/barostat using not only
+translation velocities but also rotational velocities for spherical
+and aspherical particles.
+
+All of the barostatting fixes use the "compute
+pressure"_compute_pressure.html compute to calculate a current
+pressure.  By default, this compute is created with a simple "compute
+temp"_compute_temp.html (see the last argument of the "compute
+pressure"_compute_pressure.html command), which is used to calculated
+the kinetic component of the pressure.  The barostatting fixes can
+also use temperature computes that remove bias for the purpose of
+computing the kinetic component which contributes to the current
+pressure.  See the doc pages for the individual fixes and for the
+"fix_modify"_fix_modify.html command for instructions on how to assign
+a temperature or pressure compute to a barostatting fix.
+
+NOTE: As with the thermostats, the Nose/Hoover methods ("fix
+npt"_fix_nh.html and "fix nph"_fix_nh.html) perform time integration.
+"Fix press/berendsen"_fix_press_berendsen.html does NOT, so it should
+be used with one of the constant NVE fixes or with one of the NVT
+fixes.
+
+Thermodynamic output, which can be setup via the
+"thermo_style"_thermo_style.html command, often includes pressure
+values.  As explained on the doc page for the
+"thermo_style"_thermo_style.html command, the default pressure is
+setup by the thermo command itself.  It is NOT the presure associated
+with any barostatting fix you have defined or with any compute you
+have defined that calculates a presure.  The doc pages for the
+barostatting fixes explain the ID of the pressure compute they create.
+Thus if you want to view these pressurse, you need to specify them
+explicitly via the "thermo_style custom"_thermo_style.html command.
+Or you can use the "thermo_modify"_thermo_modify.html command to
+re-define what pressure compute is used for default thermodynamic
+output.
diff --git a/doc/src/tutorial_bash_on_windows.txt b/doc/src/Howto_bash.txt
old mode 100644
new mode 100755
similarity index 99%
rename from doc/src/tutorial_bash_on_windows.txt
rename to doc/src/Howto_bash.txt
index 66712bdffa..572157ab55
--- a/doc/src/tutorial_bash_on_windows.txt
+++ b/doc/src/Howto_bash.txt
@@ -10,6 +10,7 @@ Using LAMMPS with Bash on Windows :h3
 [written by Richard Berger]
 
 :line
+
 Starting with Windows 10 you can install Linux tools directly in Windows. This
 allows you to compile LAMMPS following the same procedure as on a real Ubuntu
 Linux installation. Software can be easily installed using the package manager
diff --git a/doc/src/Howto_bioFF.txt b/doc/src/Howto_bioFF.txt
new file mode 100644
index 0000000000..91d6eb0a8e
--- /dev/null
+++ b/doc/src/Howto_bioFF.txt
@@ -0,0 +1,101 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+CHARMM, AMBER, and DREIDING force fields :h3
+
+A force field has 2 parts: the formulas that define it and the
+coefficients used for a particular system.  Here we only discuss
+formulas implemented in LAMMPS that correspond to formulas commonly
+used in the CHARMM, AMBER, and DREIDING force fields.  Setting
+coefficients is done in the input data file via the
+"read_data"_read_data.html command or in the input script with
+commands like "pair_coeff"_pair_coeff.html or
+"bond_coeff"_bond_coeff.html.  See the "Tools"_Tools.html doc page for
+additional tools that can use CHARMM or AMBER to assign force field
+coefficients and convert their output into LAMMPS input.
+
+See "(MacKerell)"_#howto-MacKerell for a description of the CHARMM force
+field.  See "(Cornell)"_#howto-Cornell for a description of the AMBER force
+field.
+
+:link(charmm,http://www.scripps.edu/brooks)
+:link(amber,http://amber.scripps.edu)
+
+These style choices compute force field formulas that are consistent
+with common options in CHARMM or AMBER.  See each command's
+documentation for the formula it computes.
+
+"bond_style"_bond_harmonic.html harmonic
+"angle_style"_angle_charmm.html charmm
+"dihedral_style"_dihedral_charmm.html charmmfsh
+"dihedral_style"_dihedral_charmm.html charmm
+"pair_style"_pair_charmm.html lj/charmmfsw/coul/charmmfsh
+"pair_style"_pair_charmm.html lj/charmmfsw/coul/long
+"pair_style"_pair_charmm.html lj/charmm/coul/charmm
+"pair_style"_pair_charmm.html lj/charmm/coul/charmm/implicit
+"pair_style"_pair_charmm.html lj/charmm/coul/long :ul
+
+"special_bonds"_special_bonds.html charmm
+"special_bonds"_special_bonds.html amber :ul
+
+NOTE: For CHARMM, newer {charmmfsw} or {charmmfsh} styles were
+released in March 2017.  We recommend they be used instead of the
+older {charmm} styles.  See discussion of the differences on the "pair
+charmm"_pair_charmm.html and "dihedral charmm"_dihedral_charmm.html
+doc pages.
+
+DREIDING is a generic force field developed by the "Goddard
+group"_http://www.wag.caltech.edu at Caltech and is useful for
+predicting structures and dynamics of organic, biological and
+main-group inorganic molecules. The philosophy in DREIDING is to use
+general force constants and geometry parameters based on simple
+hybridization considerations, rather than individual force constants
+and geometric parameters that depend on the particular combinations of
+atoms involved in the bond, angle, or torsion terms. DREIDING has an
+"explicit hydrogen bond term"_pair_hbond_dreiding.html to describe
+interactions involving a hydrogen atom on very electronegative atoms
+(N, O, F).
+
+See "(Mayo)"_#howto-Mayo for a description of the DREIDING force field
+
+These style choices compute force field formulas that are consistent
+with the DREIDING force field.  See each command's
+documentation for the formula it computes.
+
+"bond_style"_bond_harmonic.html harmonic
+"bond_style"_bond_morse.html morse :ul
+
+"angle_style"_angle_harmonic.html harmonic
+"angle_style"_angle_cosine.html cosine
+"angle_style"_angle_cosine_periodic.html cosine/periodic :ul
+
+"dihedral_style"_dihedral_charmm.html charmm
+"improper_style"_improper_umbrella.html umbrella :ul
+
+"pair_style"_pair_buck.html buck
+"pair_style"_pair_buck.html buck/coul/cut
+"pair_style"_pair_buck.html buck/coul/long
+"pair_style"_pair_lj.html lj/cut
+"pair_style"_pair_lj.html lj/cut/coul/cut
+"pair_style"_pair_lj.html lj/cut/coul/long :ul
+
+"pair_style"_pair_hbond_dreiding.html hbond/dreiding/lj
+"pair_style"_pair_hbond_dreiding.html hbond/dreiding/morse :ul
+
+"special_bonds"_special_bonds.html dreiding :ul
+
+:line
+
+:link(howto-MacKerell)
+[(MacKerell)] MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field,
+Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).
+
+:link(howto-Mayo)
+[(Mayo)] Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
+(1990).
diff --git a/doc/src/Howto_body.txt b/doc/src/Howto_body.txt
new file mode 100644
index 0000000000..cf0a36a972
--- /dev/null
+++ b/doc/src/Howto_body.txt
@@ -0,0 +1,456 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Body particles :h3
+
+[Overview:]
+
+In LAMMPS, body particles are generalized finite-size particles.
+Individual body particles can represent complex entities, such as
+surface meshes of discrete points, collections of sub-particles,
+deformable objects, etc.  Note that other kinds of finite-size
+spherical and aspherical particles are also supported by LAMMPS, such
+as spheres, ellipsoids, line segments, and triangles, but they are
+simpler entities that body particles.  See "Section
+6.14"_Section_howto.html#howto_14 for a general overview of all these
+particle types.
+
+Body particles are used via the "atom_style body"_atom_style.html
+command.  It takes a body style as an argument.  The current body
+styles supported by LAMMPS are as follows.  The name in the first
+column is used as the {bstyle} argument for the "atom_style
+body"_atom_style.html command.
+
+{nparticle} : rigid body with N sub-particles
+{rounded/polygon} : 2d polygons with N vertices
+{rounded/polyhedron} : 3d polyhedra with N vertices, E edges and F faces :tb(s=:)
+
+The body style determines what attributes are stored for each body and
+thus how they can be used to compute pairwise body/body or
+bond/non-body (point particle) interactions.  More details of each
+style are described below.
+
+More styles may be added in the future.  See the "Modify
+body"_Modify_body.html doc page for details on how to add a new body
+style to the code.
+
+:line
+
+[When to use body particles:]
+
+You should not use body particles to model a rigid body made of
+simpler particles (e.g. point, sphere, ellipsoid, line segment,
+triangular particles), if the interaction between pairs of rigid
+bodies is just the summation of pairwise interactions between the
+simpler particles.  LAMMPS already supports this kind of model via the
+"fix rigid"_fix_rigid.html command.  Any of the numerous pair styles
+that compute interactions between simpler particles can be used.  The
+"fix rigid"_fix_rigid.html command time integrates the motion of the
+rigid bodies.  All of the standard LAMMPS commands for thermostatting,
+adding constraints, performing output, etc will operate as expected on
+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, 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,
+it would need to loop over the entire collection of interactions
+between pairs of simple particles within the two bodies, each time a
+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, 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
+
+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
+
+"fix nve/body"_fix_nve_body.html : integrate motion of a body particle in NVE ensemble
+"fix nvt/body"_fix_nvt_body.html : ditto for NVT ensemble
+"fix npt/body"_fix_npt_body.html : ditto for NPT ensemble
+"fix nph/body"_fix_nph_body.html : ditto for NPH ensemble
+"compute body/local"_compute_body_local.html : store sub-particle attributes of a body particle
+"compute temp/body"_compute_temp_body.html : compute temperature of body particles
+"dump local"_dump.html : output sub-particle attributes of a body particle
+"dump image"_dump_image.html : output body particle attributes as an image :tb(s=:)
+
+The pair styles defined for use with specific body styles are listed
+in the sections below.
+
+:line
+
+[Specifics of body style nparticle:]
+
+The {nparticle} body style represents body particles as a rigid body
+with a variable number N of sub-particles.  It is provided as a
+vanilla, prototypical example of a body particle, although as
+mentioned above, the "fix rigid"_fix_rigid.html command already
+duplicates its functionality.
+
+The atom_style body command for this body style takes two additional
+arguments:
+
+atom_style body nparticle Nmin Nmax
+Nmin = minimum # of sub-particles in any body in the system
+Nmax = maximum # of sub-particles in any body in the system :pre
+
+The Nmin and Nmax arguments are used to bound the size of data
+structures used internally by each particle.
+
+When the "read_data"_read_data.html command reads a data file for this
+body style, the following information must be provided for each entry
+in the {Bodies} section of the data file:
+
+atom-ID 1 M
+N
+ixx iyy izz ixy ixz iyz
+x1 y1 z1
+...
+xN yN zN :pre
+
+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
+as many lines as you wish; see the "read_data"_read_data.html command
+for more details.
+
+The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the
+values consistent with the current orientation of the rigid body
+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 sub-particle 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, as is the total mass
+of the body particle.
+
+The "pair_style body"_pair_body.html command can be used with this
+body style to compute body/body and body/non-body interactions.
+
+For output purposes via the "compute
+body/local"_compute_body_local.html and "dump local"_dump.html
+commands, this body style produces one datum for each of the N
+sub-particles in a body particle.  The datum has 3 values:
+
+1 = x position of sub-particle
+2 = y position of sub-particle
+3 = z position of sub-particle :pre
+
+These values are the current position of the sub-particle within the
+simulation domain, not a displacement from the center-of-mass (COM) of
+the body particle itself.  These values are calculated using the
+current COM and orientation of the body particle.
+
+For images created by the "dump image"_dump_image.html command, if the
+{body} keyword is set, then each body particle is drawn as a
+collection of spheres, one for each sub-particle.  The size of each
+sphere is determined by the {bflag1} parameter for the {body} keyword.
+The {bflag2} argument is ignored.
+
+:line
+
+[Specifics of body style rounded/polygon:]
+
+The {rounded/polygon} body style represents body particles as a 2d
+polygon with a variable number of N vertices.  This style can only be
+used for 2d models; see the "boundary"_boundary.html command.  See the
+"pair_style body/rounded/polygon" doc page for a diagram of two
+squares with rounded circles at the vertices.  Special cases for N = 1
+(circle) and N = 2 (rod with rounded ends) can also be specified.
+
+One use of this body style is for 2d discrete element models, as
+described in "Fraige"_#body-Fraige.
+
+Similar to body style {nparticle}, the atom_style body command for
+this body style takes two additional arguments:
+
+atom_style body rounded/polygon Nmin Nmax
+Nmin = minimum # of vertices in any body in the system
+Nmax = maximum # of vertices in any body in the system :pre
+
+The Nmin and Nmax arguments are used to bound the size of data
+structures used internally by each particle.
+
+When the "read_data"_read_data.html command reads a data file for this
+body style, the following information must be provided for each entry
+in the {Bodies} section of the data file:
+
+atom-ID 1 M
+N
+ixx iyy izz ixy ixz iyz
+x1 y1 z1
+...
+xN yN zN
+i j j k k ...
+diameter :pre
+
+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 (with z = 0.0 for each), followed by
+2N vertex indices corresponding to the end points of the N edges,
+followed by a single diameter value = the rounded diameter of the
+circle that surrounds each vertex. The diameter value can be different
+for each body particle. These floating-point values can be listed on
+as many lines as you wish; see the "read_data"_read_data.html command
+for more details.
+
+The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the
+values consistent with the current orientation of the rigid body
+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 square particle
+whose edge length is sqrt(2) and rounded diameter is 1.0.  The
+orientation of the square is aligned with the xy coordinate axes which
+is consistent with the 6 moments of inertia: ixx iyy izz ixy ixz iyz =
+1 1 4 0 0 0. Note that only Izz matters in 2D simulations.
+
+3 1 27
+4
+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
+
+A rod in 2D, whose length is 4.0, mass 1.0, rounded at two ends
+by circles of diameter 0.5, is specified as follows:
+
+1 1 13
+2
+1 1 1.33333 0 0 0
+-2 0 0
+2 0 0
+0.5 :pre
+
+A disk, whose diameter is 3.0, mass 1.0, is specified as follows:
+
+1 1 10
+1
+1 1 4.5 0 0 0
+0 0 0
+3.0 :pre
+
+The "pair_style body/rounded/polygon"_pair_body_rounded_polygon.html
+command can be used with this body style to compute body/body
+interactions.  The "fix wall/body/polygon"_fix_wall_body_polygon.html
+command can be used with this body style to compute the interaction of
+body particles with a wall.
+
+:line
+
+[Specifics of body style rounded/polyhedron:]
+
+The {rounded/polyhedron} body style represents body particles as a 3d
+polyhedron with a variable number of N vertices, E edges and F faces.
+This style can only be used for 3d models; see the
+"boundary"_boundary.html command.  See the "pair_style
+body/rounded/polygon" doc page for a diagram of a two 2d squares with
+rounded circles at the vertices.  A 3d cube with rounded spheres at
+the 8 vertices and 12 rounded edges would be similar.  Special cases
+for N = 1 (sphere) and N = 2 (rod with rounded ends) can also be
+specified.
+
+This body style is for 3d discrete element models, as described in
+"Wang"_#body-Wang.
+
+Similar to body style {rounded/polygon}, the atom_style body command
+for this body style takes two additional arguments:
+
+atom_style body rounded/polyhedron Nmin Nmax
+Nmin = minimum # of vertices in any body in the system
+Nmax = maximum # of vertices in any body in the system :pre
+
+The Nmin and Nmax arguments are used to bound the size of data
+structures used internally by each particle.
+
+When the "read_data"_read_data.html command reads a data file for this
+body style, the following information must be provided for each entry
+in the {Bodies} section of the data file:
+
+atom-ID 3 M
+N E F
+ixx iyy izz ixy ixz iyz
+x1 y1 z1
+...
+xN yN zN
+0 1
+1 2 
+2 3
+...
+0 1 2 -1
+0 2 3 -1
+...
+1 2 3 4
+diameter :pre
+
+where M = 6 + 3*N + 2*E + 4*F + 1, and N is the number of vertices in
+the body particle, E = number of edges, F = number of faces.
+
+The integer line has three values: number of vertices (N), number of
+edges (E) and number of faces (F). The floating point line(s) list 6
+moments of inertia followed by the coordinates of the N vertices (x1
+to zN) as 3N values, followed by 2N vertex indices corresponding to
+the end points of the E edges, then 4*F vertex indices defining F
+faces.  The last value is the diameter value = the rounded diameter of
+the sphere that surrounds each vertex. The diameter value can be
+different for each body particle. These floating-point values can be
+listed on as many lines as you wish; see the
+"read_data"_read_data.html command for more details.  Because the
+maxmimum vertices per face is hard-coded to be 4
+(i.e. quadrilaterals), faces with more than 4 vertices need to be
+split into triangles or quadrilaterals.  For triangular faces, the
+last vertex index should be set to -1.
+
+The ordering of the 4 vertices within a face should follow
+the right-hand rule so that the normal vector of the face points
+outwards from the center of mass.
+
+The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the
+values consistent with the current orientation of the rigid body
+around its center of mass.  The values are with respect to the
+simulation box XYZ axes, not with respect to the principal axes of the
+rigid body itself.  LAMMPS performs the latter calculation internally.
+The coordinates of each vertex are specified as its x,y,z displacement
+from the center-of-mass of the body particle.  The center-of-mass
+position of the particle is specified by the x,y,z values in the
+{Atoms} section of the data file.
+
+For example, the following information would specify a cubic particle
+whose edge length is 2.0 and rounded diameter is 0.5.
+The orientation of the cube is aligned with the xyz coordinate axes
+which is consistent with the 6 moments of inertia: ixx iyy izz ixy ixz
+iyz = 0.667 0.667 0.667 0 0 0.
+
+1 3 79
+8 12 6
+0.667 0.667 0.667 0 0 0
+1 1 1
+1 -1 1
+-1 -1 1
+-1 1 1
+1 1 -1
+1 -1 -1
+-1 -1 -1
+-1 1 -1
+0 1
+1 2
+2 3
+3 0
+4 5
+5 6
+6 7
+7 4
+0 4
+1 5
+2 6
+3 7
+0 1 2 3
+4 5 6 7
+0 1 5 4
+1 2 6 5
+2 3 7 6
+3 0 4 7
+0.5 :pre
+
+A rod in 3D, whose length is 4.0, mass 1.0 and rounded at two ends
+by circles of diameter 0.5, is specified as follows:
+
+1 1 13
+2
+0 1.33333 1.33333 0 0 0
+-2 0 0
+2 0 0
+0.5 :pre
+
+A sphere whose diameter is 3.0 and mass 1.0, is specified as follows:
+
+1 1 10
+1
+0.9 0.9 0.9 0 0 0
+0 0 0
+3.0 :pre
+
+The "pair_style
+body/rounded/polhedron"_pair_body_rounded_polyhedron.html command can
+be used with this body style to compute body/body interactions.  The
+"fix wall/body/polyhedron"_fix_wall_body_polygon.html command can be
+used with this body style to compute the interaction of body particles
+with a wall.
+
+:line
+
+For output purposes via the "compute
+body/local"_compute_body_local.html and "dump local"_dump.html
+commands, this body style produces one datum for each of the N
+sub-particles in a body particle.  The datum has 3 values:
+
+1 = x position of vertex
+2 = y position of vertex
+3 = z position of vertex :pre
+
+These values are the current position of the vertex within the
+simulation domain, not a displacement from the center-of-mass (COM) of
+the body particle itself.  These values are calculated using the
+current COM and orientation of the body particle.
+
+For images created by the "dump image"_dump_image.html command, if the
+{body} keyword is set, then each body particle is drawn as a polygon
+consisting of N line segments.  Note that the line segments are drawn
+between the N vertices, which does not correspond exactly to the
+physical extent of the body (because the "pair_style
+rounded/polygon"_pair_body_rounded_polygon.html defines finite-size
+spheres at those point and the line segments between the spheres are
+tangent to the spheres).  The drawn diameter of each line segment is
+determined by the {bflag1} parameter for the {body} keyword.  The
+{bflag2} argument is ignored.
+
+:line
+
+:link(body-Fraige)
+[(Fraige)] F. Y. Fraige, P. A. Langston, A. J. Matchett, J. Dodds,
+Particuology, 6, 455 (2008).
+
+:link(body-Wang)
+[(Wang)] J. Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular
+Matter, 13, 1 (2011).
diff --git a/doc/src/Howto_chunk.txt b/doc/src/Howto_chunk.txt
new file mode 100644
index 0000000000..9d757b2729
--- /dev/null
+++ b/doc/src/Howto_chunk.txt
@@ -0,0 +1,166 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Use chunks to calculate system properties :h3
+
+In LAMMS, "chunks" are collections of atoms, as defined by the
+"compute chunk/atom"_compute_chunk_atom.html command, which assigns
+each atom to a chunk ID (or to no chunk at all).  The number of chunks
+and the assignment of chunk IDs to atoms can be static or change over
+time.  Examples of "chunks" are molecules or spatial bins or atoms
+with similar values (e.g. coordination number or potential energy).
+
+The per-atom chunk IDs can be used as input to two other kinds of
+commands, to calculate various properties of a system:
+
+"fix ave/chunk"_fix_ave_chunk.html
+any of the "compute */chunk"_compute.html commands :ul
+
+Here, each of the 3 kinds of chunk-related commands is briefly
+overviewed.  Then some examples are given of how to compute different
+properties with chunk commands.
+
+Compute chunk/atom command: :h4
+
+This compute can assign atoms to chunks of various styles.  Only atoms
+in the specified group and optional specified region are assigned to a
+chunk.  Here are some possible chunk definitions:
+
+atoms in same molecule | chunk ID = molecule ID |
+atoms of same atom type | chunk ID = atom type |
+all atoms with same atom property (charge, radius, etc) | chunk ID = output of compute property/atom |
+atoms in same cluster | chunk ID = output of "compute cluster/atom"_compute_cluster_atom.html command |
+atoms in same spatial bin | chunk ID = bin ID |
+atoms in same rigid body | chunk ID = molecule ID used to define rigid bodies |
+atoms with similar potential energy | chunk ID = output of "compute pe/atom"_compute_pe_atom.html |
+atoms with same local defect structure | chunk ID = output of "compute centro/atom"_compute_centro_atom.html or "compute coord/atom"_compute_coord_atom.html command :tb(s=|,c=2)
+
+Note that chunk IDs are integer values, so for atom properties or
+computes that produce a floating point value, they will be truncated
+to an integer.  You could also use the compute in a variable that
+scales the floating point value to spread it across multiple integers.
+
+Spatial bins can be of various kinds, e.g. 1d bins = slabs, 2d bins =
+pencils, 3d bins = boxes, spherical bins, cylindrical bins.
+
+This compute also calculates the number of chunks {Nchunk}, which is
+used by other commands to tally per-chunk data.  {Nchunk} can be a
+static value or change over time (e.g. the number of clusters).  The
+chunk ID for an individual atom can also be static (e.g. a molecule
+ID), or dynamic (e.g. what spatial bin an atom is in as it moves).
+
+Note that this compute allows the per-atom output of other
+"computes"_compute.html, "fixes"_fix.html, and
+"variables"_variable.html to be used to define chunk IDs for each
+atom.  This means you can write your own compute or fix to output a
+per-atom quantity to use as chunk ID.  See the "Modify"_Modify.html
+doc pages for info on how to do this.  You can also define a "per-atom
+variable"_variable.html in the input script that uses a formula to
+generate a chunk ID for each atom.
+
+Fix ave/chunk command: :h4
+
+This fix takes the ID of a "compute
+chunk/atom"_compute_chunk_atom.html command as input.  For each chunk,
+it then sums one or more specified per-atom values over the atoms in
+each chunk.  The per-atom values can be any atom property, such as
+velocity, force, charge, potential energy, kinetic energy, stress,
+etc.  Additional keywords are defined for per-chunk properties like
+density and temperature.  More generally any per-atom value generated
+by other "computes"_compute.html, "fixes"_fix.html, and "per-atom
+variables"_variable.html, can be summed over atoms in each chunk.
+
+Similar to other averaging fixes, this fix allows the summed per-chunk
+values to be time-averaged in various ways, and output to a file.  The
+fix produces a global array as output with one row of values per
+chunk.
+
+Compute */chunk commands: :h4
+
+Currently the following computes operate on chunks of atoms to produce
+per-chunk values.
+
+"compute com/chunk"_compute_com_chunk.html
+"compute gyration/chunk"_compute_gyration_chunk.html
+"compute inertia/chunk"_compute_inertia_chunk.html
+"compute msd/chunk"_compute_msd_chunk.html
+"compute property/chunk"_compute_property_chunk.html
+"compute temp/chunk"_compute_temp_chunk.html
+"compute torque/chunk"_compute_vcm_chunk.html
+"compute vcm/chunk"_compute_vcm_chunk.html :ul
+
+They each take the ID of a "compute
+chunk/atom"_compute_chunk_atom.html command as input.  As their names
+indicate, they calculate the center-of-mass, radius of gyration,
+moments of inertia, mean-squared displacement, temperature, torque,
+and velocity of center-of-mass for each chunk of atoms.  The "compute
+property/chunk"_compute_property_chunk.html command can tally the
+count of atoms in each chunk and extract other per-chunk properties.
+
+The reason these various calculations are not part of the "fix
+ave/chunk command"_fix_ave_chunk.html, is that each requires a more
+complicated operation than simply summing and averaging over per-atom
+values in each chunk.  For example, many of them require calculation
+of a center of mass, which requires summing mass*position over the
+atoms and then dividing by summed mass.
+
+All of these computes produce a global vector or global array as
+output, wih one or more values per chunk.  They can be used
+in various ways:
+
+As input to the "fix ave/time"_fix_ave_time.html command, which can
+write the values to a file and optionally time average them. :ulb,l
+
+As input to the "fix ave/histo"_fix_ave_histo.html command to
+histogram values across chunks.  E.g. a histogram of cluster sizes or
+molecule diffusion rates. :l
+
+As input to special functions of "equal-style
+variables"_variable.html, like sum() and max().  E.g. to find the
+largest cluster or fastest diffusing molecule. :l
+:ule
+
+Example calculations with chunks :h4
+
+Here are examples using chunk commands to calculate various
+properties:
+
+(1) Average velocity in each of 1000 2d spatial bins:
+
+compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.01 units reduced
+fix 1 all ave/chunk 100 10 1000 cc1 vx vy file tmp.out :pre
+
+(2) Temperature in each spatial bin, after subtracting a flow
+velocity:
+
+compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.1 units reduced
+compute vbias all temp/profile 1 0 0 y 10
+fix 1 all ave/chunk 100 10 1000 cc1 temp bias vbias file tmp.out :pre
+
+(3) Center of mass of each molecule:
+
+compute cc1 all chunk/atom molecule
+compute myChunk all com/chunk cc1
+fix 1 all ave/time 100 1 100 c_myChunk\[*\] file tmp.out mode vector :pre
+
+(4) Total force on each molecule and ave/max across all molecules:
+
+compute cc1 all chunk/atom molecule
+fix 1 all ave/chunk 1000 1 1000 cc1 fx fy fz file tmp.out
+variable xave equal ave(f_1\[2\])
+variable xmax equal max(f_1\[2\])
+thermo 1000
+thermo_style custom step temp v_xave v_xmax :pre
+
+(5) Histogram of cluster sizes:
+
+compute cluster all cluster/atom 1.0
+compute cc1 all chunk/atom c_cluster compress yes
+compute size all property/chunk cc1 count
+fix 1 all ave/histo 100 1 100 0 20 20 c_size mode vector ave running beyond ignore file tmp.histo :pre
diff --git a/doc/src/Howto_coreshell.txt b/doc/src/Howto_coreshell.txt
new file mode 100644
index 0000000000..273568418b
--- /dev/null
+++ b/doc/src/Howto_coreshell.txt
@@ -0,0 +1,253 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Adiabatic core/shell model :h3
+
+The adiabatic core-shell model by "Mitchell and
+Fincham"_#MitchellFincham is a simple method for adding polarizability
+to a system.  In order to mimic the electron shell of an ion, a
+satellite particle is attached to it. This way the ions are split into
+a core and a shell where the latter is meant to react to the
+electrostatic environment inducing polarizability.  See the "Howto
+polarizable"_Howto_polarizable.html doc page for a discussion of all
+the polarizable models available in LAMMPS.
+
+Technically, shells are attached to the cores by a spring force f =
+k*r where k is a parametrized spring constant and r is the distance
+between the core and the shell. The charges of the core and the shell
+add up to the ion charge, thus q(ion) = q(core) + q(shell). This
+setup introduces the ion polarizability (alpha) given by
+alpha = q(shell)^2 / k. In a
+similar fashion the mass of the ion is distributed on the core and the
+shell with the core having the larger mass.
+
+To run this model in LAMMPS, "atom_style"_atom_style.html {full} can
+be used since atom charge and bonds are needed.  Each kind of
+core/shell pair requires two atom types and a bond type.  The core and
+shell of a core/shell pair should be bonded to each other with a
+harmonic bond that provides the spring force. For example, a data file
+for NaCl, as found in examples/coreshell, has this format:
+
+432   atoms  # core and shell atoms
+216   bonds  # number of core/shell springs :pre
+
+4     atom types  # 2 cores and 2 shells for Na and Cl
+2     bond types :pre
+
+0.0 24.09597 xlo xhi
+0.0 24.09597 ylo yhi
+0.0 24.09597 zlo zhi :pre
+
+Masses       # core/shell mass ratio = 0.1 :pre
+
+1 20.690784  # Na core
+2 31.90500   # Cl core
+3 2.298976   # Na shell
+4 3.54500    # Cl shell :pre
+
+Atoms :pre
+
+1    1    2   1.5005    0.00000000   0.00000000   0.00000000 # core of core/shell pair 1
+2    1    4  -2.5005    0.00000000   0.00000000   0.00000000 # shell of core/shell pair 1
+3    2    1   1.5056    4.01599500   4.01599500   4.01599500 # core of core/shell pair 2
+4    2    3  -0.5056    4.01599500   4.01599500   4.01599500 # shell of core/shell pair 2
+(...) :pre
+
+Bonds   # Bond topology for spring forces :pre
+
+1     2     1     2   # spring for core/shell pair 1
+2     2     3     4   # spring for core/shell pair 2
+(...) :pre
+
+Non-Coulombic (e.g. Lennard-Jones) pairwise interactions are only
+defined between the shells.  Coulombic interactions are defined
+between all cores and shells.  If desired, additional bonds can be
+specified between cores.
+
+The "special_bonds"_special_bonds.html command should be used to
+turn-off the Coulombic interaction within core/shell pairs, since that
+interaction is set by the bond spring.  This is done using the
+"special_bonds"_special_bonds.html command with a 1-2 weight = 0.0,
+which is the default value.  It needs to be considered whether one has
+to adjust the "special_bonds"_special_bonds.html weighting according
+to the molecular topology since the interactions of the shells are
+bypassed over an extra bond.
+
+Note that this core/shell implementation does not require all ions to
+be polarized.  One can mix core/shell pairs and ions without a
+satellite particle if desired.
+
+Since the core/shell model permits distances of r = 0.0 between the
+core and shell, a pair style with a "cs" suffix needs to be used to
+implement a valid long-range Coulombic correction.  Several such pair
+styles are provided in the CORESHELL package.  See "this doc
+page"_pair_cs.html for details.  All of the core/shell enabled pair
+styles require the use of a long-range Coulombic solver, as specified
+by the "kspace_style"_kspace_style.html command.  Either the PPPM or
+Ewald solvers can be used.
+
+For the NaCL example problem, these pair style and bond style settings
+are used:
+
+pair_style      born/coul/long/cs 20.0 20.0
+pair_coeff      * *      0.0 1.000   0.00  0.00   0.00
+pair_coeff      3 3    487.0 0.23768 0.00  1.05   0.50 #Na-Na
+pair_coeff      3 4 145134.0 0.23768 0.00  6.99   8.70 #Na-Cl
+pair_coeff      4 4 405774.0 0.23768 0.00 72.40 145.40 #Cl-Cl :pre
+
+bond_style      harmonic
+bond_coeff      1 63.014 0.0
+bond_coeff      2 25.724 0.0 :pre
+
+When running dynamics with the adiabatic core/shell model, the
+following issues should be considered.  The relative motion of
+the core and shell particles corresponds to the polarization,
+hereby an instantaneous relaxation of the shells is approximated
+and a fast core/shell spring frequency ensures a nearly constant
+internal kinetic energy during the simulation.
+Thermostats can alter this polarization behaviour, by scaling the
+internal kinetic energy, meaning the shell will not react freely to
+its electrostatic environment.
+Therefore it is typically desirable to decouple the relative motion of
+the core/shell pair, which is an imaginary degree of freedom, from the
+real physical system.  To do that, the "compute
+temp/cs"_compute_temp_cs.html command can be used, in conjunction with
+any of the thermostat fixes, such as "fix nvt"_fix_nh.html or "fix
+langevin"_fix_langevin.  This compute uses the center-of-mass velocity
+of the core/shell pairs to calculate a temperature, and insures that
+velocity is what is rescaled for thermostatting purposes.  This
+compute also works for a system with both core/shell pairs and
+non-polarized ions (ions without an attached satellite particle).  The
+"compute temp/cs"_compute_temp_cs.html command requires input of two
+groups, one for the core atoms, another for the shell atoms.
+Non-polarized ions which might also be included in the treated system
+should not be included into either of these groups, they are taken
+into account by the {group-ID} (2nd argument) of the compute.  The
+groups can be defined using the "group {type}"_group.html command.
+Note that to perform thermostatting using this definition of
+temperature, the "fix modify temp"_fix_modify.html command should be
+used to assign the compute to the thermostat fix.  Likewise the
+"thermo_modify temp"_thermo_modify.html command can be used to make
+this temperature be output for the overall system.
+
+For the NaCl example, this can be done as follows:
+
+group cores type 1 2
+group shells type 3 4
+compute CSequ all temp/cs cores shells
+fix thermoberendsen all temp/berendsen 1427 1427 0.4    # thermostat for the true physical system
+fix thermostatequ all nve                               # integrator as needed for the berendsen thermostat
+fix_modify thermoberendsen temp CSequ
+thermo_modify temp CSequ                                # output of center-of-mass derived temperature :pre
+
+The pressure for the core/shell system is computed via the regular
+LAMMPS convention by "treating the cores and shells as individual
+particles"_#MitchellFincham2. For the thermo output of the pressure
+as well as for the application of a barostat, it is necessary to
+use an additional "pressure"_compute_pressure compute based on the
+default "temperature"_compute_temp and specifying it as a second
+argument in "fix modify"_fix_modify.html and
+"thermo_modify"_thermo_modify.html resulting in:
+
+(...)
+compute CSequ all temp/cs cores shells
+compute thermo_press_lmp all pressure thermo_temp       # pressure for individual particles
+thermo_modify temp CSequ press thermo_press_lmp         # modify thermo to regular pressure
+fix press_bar all npt temp 300 300 0.04 iso 0 0 0.4
+fix_modify press_bar temp CSequ press thermo_press_lmp  # pressure modification for correct kinetic scalar :pre
+
+If "compute temp/cs"_compute_temp_cs.html is used, the decoupled
+relative motion of the core and the shell should in theory be
+stable.  However numerical fluctuation can introduce a small
+momentum to the system, which is noticable over long trajectories.
+Therefore it is recommendable to use the "fix
+momentum"_fix_momentum.html command in combination with "compute
+temp/cs"_compute_temp_cs.html when equilibrating the system to
+prevent any drift.
+
+When initializing the velocities of a system with core/shell pairs, it
+is also desirable to not introduce energy into the relative motion of
+the core/shell particles, but only assign a center-of-mass velocity to
+the pairs.  This can be done by using the {bias} keyword of the
+"velocity create"_velocity.html command and assigning the "compute
+temp/cs"_compute_temp_cs.html command to the {temp} keyword of the
+"velocity"_velocity.html command, e.g.
+
+velocity all create 1427 134 bias yes temp CSequ
+velocity all scale 1427 temp CSequ :pre
+
+To maintain the correct polarizability of the core/shell pairs, the
+kinetic energy of the internal motion shall remain nearly constant.
+Therefore the choice of spring force and mass ratio need to ensure
+much faster relative motion of the 2 atoms within the core/shell pair
+than their center-of-mass velocity. This allows the shells to
+effectively react instantaneously to the electrostatic environment and
+limits energy transfer to or from the core/shell oscillators.
+This fast movement also dictates the timestep that can be used.
+
+The primary literature of the adiabatic core/shell model suggests that
+the fast relative motion of the core/shell pairs only allows negligible
+energy transfer to the environment.
+The mentioned energy transfer will typically lead to a small drift
+in total energy over time.  This internal energy can be monitored
+using the "compute chunk/atom"_compute_chunk_atom.html and "compute
+temp/chunk"_compute_temp_chunk.html commands.  The internal kinetic
+energies of each core/shell pair can then be summed using the sum()
+special function of the "variable"_variable.html command.  Or they can
+be time/averaged and output using the "fix ave/time"_fix_ave_time.html
+command.  To use these commands, each core/shell pair must be defined
+as a "chunk".  If each core/shell pair is defined as its own molecule,
+the molecule ID can be used to define the chunks.  If cores are bonded
+to each other to form larger molecules, the chunks can be identified
+by the "fix property/atom"_fix_property_atom.html via assigning a
+core/shell ID to each atom using a special field in the data file read
+by the "read_data"_read_data.html command.  This field can then be
+accessed by the "compute property/atom"_compute_property_atom.html
+command, to use as input to the "compute
+chunk/atom"_compute_chunk_atom.html command to define the core/shell
+pairs as chunks.
+
+For example if core/shell pairs are the only molecules:
+
+read_data NaCl_CS_x0.1_prop.data
+compute prop all property/atom molecule
+compute cs_chunk all chunk/atom c_prop
+compute cstherm all temp/chunk cs_chunk temp internal com yes cdof 3.0     # note the chosen degrees of freedom for the core/shell pairs
+fix ave_chunk all ave/time 10 1 10 c_cstherm file chunk.dump mode vector :pre
+
+For example if core/shell pairs and other molecules are present:
+
+fix csinfo all property/atom i_CSID                       # property/atom command
+read_data NaCl_CS_x0.1_prop.data fix csinfo NULL CS-Info  # atom property added in the data-file
+compute prop all property/atom i_CSID
+(...) :pre
+
+The additional section in the date file would be formatted like this:
+
+CS-Info         # header of additional section :pre
+
+1   1           # column 1 = atom ID, column 2 = core/shell ID
+2   1
+3   2
+4   2
+5   3
+6   3
+7   4
+8   4
+(...) :pre
+
+:line
+
+:link(MitchellFincham)
+[(Mitchell and Fincham)] Mitchell, Fincham, J Phys Condensed Matter,
+5, 1031-1038 (1993).
+
+:link(MitchellFincham2)
+[(Fincham)] Fincham, Mackrodt and Mitchell, J Phys Condensed Matter,
+6, 393-404 (1994).
diff --git a/doc/src/Howto_couple.txt b/doc/src/Howto_couple.txt
new file mode 100644
index 0000000000..ec45bd1290
--- /dev/null
+++ b/doc/src/Howto_couple.txt
@@ -0,0 +1,105 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Coupling LAMMPS to other codes :h3
+
+LAMMPS is designed to allow it to be coupled to other codes.  For
+example, a quantum mechanics code might compute forces on a subset of
+atoms and pass those forces to LAMMPS.  Or a continuum finite element
+(FE) simulation might use atom positions as boundary conditions on FE
+nodal points, compute a FE solution, and return interpolated forces on
+MD atoms.
+
+LAMMPS can be coupled to other codes in at least 3 ways.  Each has
+advantages and disadvantages, which you'll have to think about in the
+context of your application.
+
+(1) Define a new "fix"_fix.html command that calls the other code.  In
+this scenario, LAMMPS is the driver code.  During its timestepping,
+the fix is invoked, and can make library calls to the other code,
+which has been linked to LAMMPS as a library.  This is the way the
+"POEMS"_poems package that performs constrained rigid-body motion on
+groups of atoms is hooked to LAMMPS.  See the "fix
+poems"_fix_poems.html command for more details.  See the
+"Modify"_Modify.html doc pages for info on how to add a new fix to
+LAMMPS.
+
+:link(poems,http://www.rpi.edu/~anderk5/lab)
+
+(2) Define a new LAMMPS command that calls the other code.  This is
+conceptually similar to method (1), but in this case LAMMPS and the
+other code are on a more equal footing.  Note that now the other code
+is not called during the timestepping of a LAMMPS run, but between
+runs.  The LAMMPS input script can be used to alternate LAMMPS runs
+with calls to the other code, invoked via the new command.  The
+"run"_run.html command facilitates this with its {every} option, which
+makes it easy to run a few steps, invoke the command, run a few steps,
+invoke the command, etc.
+
+In this scenario, the other code can be called as a library, as in
+(1), or it could be a stand-alone code, invoked by a system() call
+made by the command (assuming your parallel machine allows one or more
+processors to start up another program).  In the latter case the
+stand-alone code could communicate with LAMMPS thru files that the
+command writes and reads.
+
+See the "Modify command"_Modify_command.html doc page for info on how
+to add a new command to LAMMPS.
+
+(3) Use LAMMPS as a library called by another code.  In this case the
+other code is the driver and calls LAMMPS as needed.  Or a wrapper
+code could link and call both LAMMPS and another code as libraries.
+Again, the "run"_run.html command has options that allow it to be
+invoked with minimal overhead (no setup or clean-up) if you wish to do
+multiple short runs, driven by another program.
+
+Examples of driver codes that call LAMMPS as a library are included in
+the examples/COUPLE directory of the LAMMPS distribution; see
+examples/COUPLE/README for more details:
+
+simple: simple driver programs in C++ and C which invoke LAMMPS as a
+library :ulb,l
+
+lammps_quest: coupling of LAMMPS and "Quest"_quest, to run classical
+MD with quantum forces calculated by a density functional code :l
+
+lammps_spparks: coupling of LAMMPS and "SPPARKS"_spparks, to couple
+a kinetic Monte Carlo model for grain growth using MD to calculate
+strain induced across grain boundaries :l
+:ule
+
+:link(quest,http://dft.sandia.gov/Quest)
+:link(spparks,http://www.sandia.gov/~sjplimp/spparks.html)
+
+"This section"_Section_start.html#start_5 of the documentation
+describes how to build LAMMPS as a library.  Once this is done, you
+can interface with LAMMPS either via C++, C, Fortran, or Python (or
+any other language that supports a vanilla C-like interface).  For
+example, from C++ you could create one (or more) "instances" of
+LAMMPS, pass it an input script to process, or execute individual
+commands, all by invoking the correct class methods in LAMMPS.  From C
+or Fortran you can make function calls to do the same things.  See the
+"Python"_Python.html doc pages for a description of the Python wrapper
+provided with LAMMPS that operates through the LAMMPS library
+interface.
+
+The files src/library.cpp and library.h contain the C-style interface
+to LAMMPS.  See the "Howto library"_Howto_library.html doc page for a
+description of the interface and how to extend it for your needs.
+
+Note that the lammps_open() function that creates an instance of
+LAMMPS takes an MPI communicator as an argument.  This means that
+instance of LAMMPS will run on the set of processors in the
+communicator.  Thus the calling code can run LAMMPS on all or a subset
+of processors.  For example, a wrapper script might decide to
+alternate between LAMMPS and another code, allowing them both to run
+on all the processors.  Or it might allocate half the processors to
+LAMMPS and half to the other code and run both codes simultaneously
+before syncing them up periodically.  Or it might instantiate multiple
+instances of LAMMPS to perform different calculations.
diff --git a/doc/src/Howto_diffusion.txt b/doc/src/Howto_diffusion.txt
new file mode 100644
index 0000000000..e0e16e1042
--- /dev/null
+++ b/doc/src/Howto_diffusion.txt
@@ -0,0 +1,31 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Calculate a diffusion coefficient :h3
+
+The diffusion coefficient D of a material can be measured in at least
+2 ways using various options in LAMMPS.  See the examples/DIFFUSE
+directory for scripts that implement the 2 methods discussed here for
+a simple Lennard-Jones fluid model.
+
+The first method is to measure the mean-squared displacement (MSD) of
+the system, via the "compute msd"_compute_msd.html command.  The slope
+of the MSD versus time is proportional to the diffusion coefficient.
+The instantaneous MSD values can be accumulated in a vector via the
+"fix vector"_fix_vector.html command, and a line fit to the vector to
+compute its slope via the "variable slope"_variable.html function, and
+thus extract D.
+
+The second method is to measure the velocity auto-correlation function
+(VACF) of the system, via the "compute vacf"_compute_vacf.html
+command.  The time-integral of the VACF is proportional to the
+diffusion coefficient.  The instantaneous VACF values can be
+accumulated in a vector via the "fix vector"_fix_vector.html command,
+and time integrated via the "variable trap"_variable.html function,
+and thus extract D.
diff --git a/doc/src/Howto_dispersion.txt b/doc/src/Howto_dispersion.txt
new file mode 100644
index 0000000000..000f45076d
--- /dev/null
+++ b/doc/src/Howto_dispersion.txt
@@ -0,0 +1,108 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Long-raage dispersion settings :h3
+
+The PPPM method computes interactions by splitting the pair potential
+into two parts, one of which is computed in a normal pairwise fashion,
+the so-called real-space part, and one of which is computed using the
+Fourier transform, the so called reciprocal-space or kspace part.  For
+both parts, the potential is not computed exactly but is approximated.
+Thus, there is an error in both parts of the computation, the
+real-space and the kspace error. The just mentioned facts are true
+both for the PPPM for Coulomb as well as dispersion interactions. The
+deciding difference - and also the reason why the parameters for
+pppm/disp have to be selected with more care - is the impact of the
+errors on the results: The kspace error of the PPPM for Coulomb and
+dispersion interaction and the real-space error of the PPPM for
+Coulomb interaction have the character of noise. In contrast, the
+real-space error of the PPPM for dispersion has a clear physical
+interpretation: the underprediction of cohesion. As a consequence, the
+real-space error has a much stronger effect than the kspace error on
+simulation results for pppm/disp.  Parameters must thus be chosen in a
+way that this error is much smaller than the kspace error.
+
+When using pppm/disp and not making any specifications on the PPPM
+parameters via the kspace modify command, parameters will be tuned
+such that the real-space error and the kspace error are equal.  This
+will result in simulations that are either inaccurate or slow, both of
+which is not desirable. For selecting parameters for the pppm/disp
+that provide fast and accurate simulations, there are two approaches,
+which both have their up- and downsides.
+
+The first approach is to set desired real-space an kspace accuracies
+via the {kspace_modify force/disp/real} and {kspace_modify
+force/disp/kspace} commands. Note that the accuracies have to be
+specified in force units and are thus dependent on the chosen unit
+settings. For real units, 0.0001 and 0.002 seem to provide reasonable
+accurate and efficient computations for the real-space and kspace
+accuracies.  0.002 and 0.05 work well for most systems using lj
+units. PPPM parameters will be generated based on the desired
+accuracies. The upside of this approach is that it usually provides a
+good set of parameters and will work for both the {kspace_modify diff
+ad} and {kspace_modify diff ik} options.  The downside of the method
+is that setting the PPPM parameters will take some time during the
+initialization of the simulation.
+
+The second approach is to set the parameters for the pppm/disp
+explicitly using the {kspace_modify mesh/disp}, {kspace_modify
+order/disp}, and {kspace_modify gewald/disp} commands. This approach
+requires a more experienced user who understands well the impact of
+the choice of parameters on the simulation accuracy and
+performance. This approach provides a fast initialization of the
+simulation. However, it is sensitive to errors: A combination of
+parameters that will perform well for one system might result in
+far-from-optimal conditions for other simulations. For example,
+parameters that provide accurate and fast computations for
+all-atomistic force fields can provide insufficient accuracy or
+united-atomistic force fields (which is related to that the latter
+typically have larger dispersion coefficients).
+
+To avoid inaccurate or inefficient simulations, the pppm/disp stops
+simulations with an error message if no action is taken to control the
+PPPM parameters. If the automatic parameter generation is desired and
+real-space and kspace accuracies are desired to be equal, this error
+message can be suppressed using the {kspace_modify disp/auto yes}
+command.
+
+A reasonable approach that combines the upsides of both methods is to
+make the first run using the {kspace_modify force/disp/real} and
+{kspace_modify force/disp/kspace} commands, write down the PPPM
+parameters from the outut, and specify these parameters using the
+second approach in subsequent runs (which have the same composition,
+force field, and approximately the same volume).
+
+Concerning the performance of the pppm/disp there are two more things
+to consider. The first is that when using the pppm/disp, the cutoff
+parameter does no longer affect the accuracy of the simulation
+(subject to that gewald/disp is adjusted when changing the cutoff).
+The performance can thus be increased by examining different values
+for the cutoff parameter. A lower bound for the cutoff is only set by
+the truncation error of the repulsive term of pair potentials.
+
+The second is that the mixing rule of the pair style has an impact on
+the computation time when using the pppm/disp. Fastest computations
+are achieved when using the geometric mixing rule. Using the
+arithmetic mixing rule substantially increases the computational cost.
+The computational overhead can be reduced using the {kspace_modify
+mix/disp geom} and {kspace_modify splittol} commands. The first
+command simply enforces geometric mixing of the dispersion
+coefficients in kspace computations.  This introduces some error in
+the computations but will also significantly speed-up the
+simulations. The second keyword sets the accuracy with which the
+dispersion coefficients are approximated using a matrix factorization
+approach.  This may result in better accuracy then using the first
+command, but will usually also not provide an equally good increase of
+efficiency.
+
+Finally, pppm/disp can also be used when no mixing rules apply.
+This can be achieved using the {kspace_modify mix/disp none} command.
+Note that the code does not check automatically whether any mixing
+rule is fulfilled. If mixing rules do not apply, the user will have
+to specify this command explicitly.
diff --git a/doc/src/Howto_drude.txt b/doc/src/Howto_drude.txt
new file mode 100644
index 0000000000..e9c30db772
--- /dev/null
+++ b/doc/src/Howto_drude.txt
@@ -0,0 +1,77 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Drude induced dipoles :h3
+
+The thermalized Drude model represents induced dipoles by a pair of
+charges (the core atom and the Drude particle) connected by a harmonic
+spring.  See the "Howto polarizable"_Howto_polarizable.html doc page
+for a discussion of all the polarizable models available in LAMMPS.
+
+The Drude model has a number of features aimed at its use in
+molecular systems ("Lamoureux and Roux"_#howto-Lamoureux):
+
+Thermostating of the additional degrees of freedom associated with the
+induced dipoles at very low temperature, in terms of the reduced
+coordinates of the Drude particles with respect to their cores. This
+makes the trajectory close to that of relaxed induced dipoles. :ulb,l
+
+Consistent definition of 1-2 to 1-4 neighbors. A core-Drude particle
+pair represents a single (polarizable) atom, so the special screening
+factors in a covalent structure should be the same for the core and
+the Drude particle.  Drude particles have to inherit the 1-2, 1-3, 1-4
+special neighbor relations from their respective cores. :l
+
+Stabilization of the interactions between induced dipoles. Drude
+dipoles on covalently bonded atoms interact too strongly due to the
+short distances, so an atom may capture the Drude particle of a
+neighbor, or the induced dipoles within the same molecule may align
+too much. To avoid this, damping at short range can be done by Thole
+functions (for which there are physical grounds). This Thole damping
+is applied to the point charges composing the induced dipole (the
+charge of the Drude particle and the opposite charge on the core, not
+to the total charge of the core atom). :l,ule
+
+A detailed tutorial covering the usage of Drude induced dipoles in
+LAMMPS is on the "Howto drude2e"_Howto_drude2.html doc page.
+
+As with the core-shell model, the cores and Drude particles should
+appear in the data file as standard atoms. The same holds for the
+springs between them, which are described by standard harmonic bonds.
+The nature of the atoms (core, Drude particle or non-polarizable) is
+specified via the "fix drude"_fix_drude.html command.  The special
+list of neighbors is automatically refactored to account for the
+equivalence of core and Drude particles as regards special 1-2 to 1-4
+screening. It may be necessary to use the {extra/special/per/atom}
+keyword of the "read_data"_read_data.html command. If using "fix
+shake"_fix_shake.html, make sure no Drude particle is in this fix
+group.
+
+There are two ways to thermostat the Drude particles at a low
+temperature: use either "fix langevin/drude"_fix_langevin_drude.html
+for a Langevin thermostat, or "fix
+drude/transform/*"_fix_drude_transform.html for a Nose-Hoover
+thermostat. The former requires use of the command "comm_modify vel
+yes"_comm_modify.html. The latter requires two separate integration
+fixes like {nvt} or {npt}. The correct temperatures of the reduced
+degrees of freedom can be calculated using the "compute
+temp/drude"_compute_temp_drude.html. This requires also to use the
+command {comm_modify vel yes}.
+
+Short-range damping of the induced dipole interactions can be achieved
+using Thole functions through the "pair style
+thole"_pair_thole.html in "pair_style hybrid/overlay"_pair_hybrid.html
+with a Coulomb pair style. It may be useful to use {coul/long/cs} or
+similar from the CORESHELL package if the core and Drude particle come
+too close, which can cause numerical issues.
+
+:line
+
+:link(howto-Lamoureux)
+[(Lamoureux and Roux)] G. Lamoureux, B. Roux, J. Chem. Phys 119, 3025 (2003)
diff --git a/doc/src/tutorial_drude.txt b/doc/src/Howto_drude2.txt
similarity index 100%
rename from doc/src/tutorial_drude.txt
rename to doc/src/Howto_drude2.txt
diff --git a/doc/src/Howto_elastic.txt b/doc/src/Howto_elastic.txt
new file mode 100644
index 0000000000..4dda13fa53
--- /dev/null
+++ b/doc/src/Howto_elastic.txt
@@ -0,0 +1,47 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Calculate elastic constants :h3
+
+Elastic constants characterize the stiffness of a material. The formal
+definition is provided by the linear relation that holds between the
+stress and strain tensors in the limit of infinitesimal deformation.
+In tensor notation, this is expressed as s_ij = C_ijkl * e_kl, where
+the repeated indices imply summation. s_ij are the elements of the
+symmetric stress tensor. e_kl are the elements of the symmetric strain
+tensor. C_ijkl are the elements of the fourth rank tensor of elastic
+constants. In three dimensions, this tensor has 3^4=81 elements. Using
+Voigt notation, the tensor can be written as a 6x6 matrix, where C_ij
+is now the derivative of s_i w.r.t. e_j. Because s_i is itself a
+derivative w.r.t. e_i, it follows that C_ij is also symmetric, with at
+most 7*6/2 = 21 distinct elements.
+
+At zero temperature, it is easy to estimate these derivatives by
+deforming the simulation box in one of the six directions using the
+"change_box"_change_box.html command and measuring the change in the
+stress tensor. A general-purpose script that does this is given in the
+examples/elastic directory described on the "Examples"_Examples.html
+doc page.
+
+Calculating elastic constants at finite temperature is more
+challenging, because it is necessary to run a simulation that perfoms
+time averages of differential properties. One way to do this is to
+measure the change in average stress tensor in an NVT simulations when
+the cell volume undergoes a finite deformation. In order to balance
+the systematic and statistical errors in this method, the magnitude of
+the deformation must be chosen judiciously, and care must be taken to
+fully equilibrate the deformed cell before sampling the stress
+tensor. Another approach is to sample the triclinic cell fluctuations
+that occur in an NPT simulation. This method can also be slow to
+converge and requires careful post-processing "(Shinoda)"_#Shinoda1
+
+:line
+
+:link(Shinoda1)
+[(Shinoda)] Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).
diff --git a/doc/src/tutorial_github.txt b/doc/src/Howto_github.txt
similarity index 98%
rename from doc/src/tutorial_github.txt
rename to doc/src/Howto_github.txt
index fc261bdb95..191242205e 100644
--- a/doc/src/tutorial_github.txt
+++ b/doc/src/Howto_github.txt
@@ -25,8 +25,8 @@ or improvements to LAMMPS, as it significantly reduces the amount of
 work required by the LAMMPS developers. Consequently, creating a pull
 request will increase your chances to have your contribution included
 and will reduce the time until the integration is complete. For more
-information on the requirements to have your code included in LAMMPS,
-see the "Modify contribute"_Modify_contribute.html doc page.
+information on the requirements to have your code included into LAMMPS
+please see the "Modify contribute"_Modify_contribute.html doc page.
 
 :line
 
@@ -124,7 +124,7 @@ unrelated feature, you should switch branches!
 
 After everything is done, add the files to the branch and commit them:
 
- $ git add doc/src/tutorial_github.txt
+ $ git add doc/src/Howto_github.txt
  $ git add doc/src/JPG/tutorial*.png :pre
 
 IMPORTANT NOTE: Do not use {git commit -a} (or {git add -A}).  The -a
@@ -318,7 +318,7 @@ Because the changes are OK with us, we are going to merge by clicking on
 Now, since in the meantime our local text for the tutorial also changed,
 we need to pull Axel's change back into our branch, and merge them:
 
- $ git add tutorial_github.txt
+ $ git add Howto_github.txt
  $ git add JPG/tutorial_reverse_pull_request*.png
  $ git commit -m "Updated text and images on reverse pull requests"
  $ git pull :pre
@@ -331,7 +331,7 @@ With Axel's changes merged in and some final text updates, our feature
 branch is now perfect as far as we are concerned, so we are going to
 commit and push again:
 
- $ git add tutorial_github.txt
+ $ git add Howto_github.txt
  $ git add JPG/tutorial_reverse_pull_request6.png
  $ git commit -m "Merged Axel's suggestions and updated text"
  $ git push git@github.com:Pakketeretet2/lammps :pre
diff --git a/doc/src/Howto_granular.txt b/doc/src/Howto_granular.txt
new file mode 100644
index 0000000000..cfa01bcb63
--- /dev/null
+++ b/doc/src/Howto_granular.txt
@@ -0,0 +1,57 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Granular models :h3
+
+Granular system are composed of spherical particles with a diameter,
+as opposed to point particles.  This means they have an angular
+velocity and torque can be imparted to them to cause them to rotate.
+
+To run a simulation of a granular model, you will want to use
+the following commands:
+
+"atom_style sphere"_atom_style.html
+"fix nve/sphere"_fix_nve_sphere.html
+"fix gravity"_fix_gravity.html :ul
+
+This compute
+
+"compute erotate/sphere"_compute_erotate_sphere.html :ul
+
+calculates rotational kinetic energy which can be "output with
+thermodynamic info"_Howto_output.html.
+
+Use one of these 3 pair potentials, which compute forces and torques
+between interacting pairs of particles:
+
+"pair_style"_pair_style.html gran/history
+"pair_style"_pair_style.html gran/no_history
+"pair_style"_pair_style.html gran/hertzian :ul
+
+These commands implement fix options specific to granular systems:
+
+"fix freeze"_fix_freeze.html
+"fix pour"_fix_pour.html
+"fix viscous"_fix_viscous.html
+"fix wall/gran"_fix_wall_gran.html :ul
+
+The fix style {freeze} zeroes both the force and torque of frozen
+atoms, and should be used for granular system instead of the fix style
+{setforce}.
+
+For computational efficiency, you can eliminate needless pairwise
+computations between frozen atoms by using this command:
+
+"neigh_modify"_neigh_modify.html exclude :ul
+
+NOTE: By default, for 2d systems, granular particles are still modeled
+as 3d spheres, not 2d discs (circles), meaning their moment of inertia
+will be the same as in 3d.  If you wish to model granular particles in
+2d as 2d discs, see the note on this topic on the "Howto 2d"_Howto_2d
+doc page, where 2d simulations are discussed.
diff --git a/doc/src/Howto_kappa.txt b/doc/src/Howto_kappa.txt
new file mode 100644
index 0000000000..949901f21a
--- /dev/null
+++ b/doc/src/Howto_kappa.txt
@@ -0,0 +1,90 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Calculate thermal conductivity :h3
+
+The thermal conductivity kappa of a material can be measured in at
+least 4 ways using various options in LAMMPS.  See the examples/KAPPA
+directory for scripts that implement the 4 methods discussed here for
+a simple Lennard-Jones fluid model.  Also, see the "Howto
+viscosity"_Howto_viscosity.html doc page for an analogous discussion
+for viscosity.
+
+The thermal conductivity tensor kappa is a measure of the propensity
+of a material to transmit heat energy in a diffusive manner as given
+by Fourier's law
+
+J = -kappa grad(T)
+
+where J is the heat flux in units of energy per area per time and
+grad(T) is the spatial gradient of temperature.  The thermal
+conductivity thus has units of energy per distance per time per degree
+K and is often approximated as an isotropic quantity, i.e. as a
+scalar.
+
+The first method is to setup two thermostatted regions at opposite
+ends of a simulation box, or one in the middle and one at the end of a
+periodic box.  By holding the two regions at different temperatures
+with a "thermostatting fix"_Howto_thermostat.html, the energy added to
+the hot region should equal the energy subtracted from the cold region
+and be proportional to the heat flux moving between the regions.  See
+the papers by "Ikeshoji and Hafskjold"_#howto-Ikeshoji and
+"Wirnsberger et al"_#howto-Wirnsberger for details of this idea.  Note
+that thermostatting fixes such as "fix nvt"_fix_nh.html, "fix
+langevin"_fix_langevin.html, and "fix
+temp/rescale"_fix_temp_rescale.html store the cumulative energy they
+add/subtract.
+
+Alternatively, as a second method, the "fix heat"_fix_heat.html or
+"fix ehex"_fix_ehex.html commands can be used in place of thermostats
+on each of two regions to add/subtract specified amounts of energy to
+both regions.  In both cases, the resulting temperatures of the two
+regions can be monitored with the "compute temp/region" command and
+the temperature profile of the intermediate region can be monitored
+with the "fix ave/chunk"_fix_ave_chunk.html and "compute
+ke/atom"_compute_ke_atom.html commands.
+
+The third method is to perform a reverse non-equilibrium MD simulation
+using the "fix thermal/conductivity"_fix_thermal_conductivity.html
+command which implements the rNEMD algorithm of Muller-Plathe.
+Kinetic energy is swapped between atoms in two different layers of the
+simulation box.  This induces a temperature gradient between the two
+layers which can be monitored with the "fix
+ave/chunk"_fix_ave_chunk.html and "compute
+ke/atom"_compute_ke_atom.html commands.  The fix tallies the
+cumulative energy transfer that it performs.  See the "fix
+thermal/conductivity"_fix_thermal_conductivity.html command for
+details.
+
+The fourth method is based on the Green-Kubo (GK) formula which
+relates the ensemble average of the auto-correlation of the heat flux
+to kappa.  The heat flux can be calculated from the fluctuations of
+per-atom potential and kinetic energies and per-atom stress tensor in
+a steady-state equilibrated simulation.  This is in contrast to the
+two preceding non-equilibrium methods, where energy flows continuously
+between hot and cold regions of the simulation box.
+
+The "compute heat/flux"_compute_heat_flux.html command can calculate
+the needed heat flux and describes how to implement the Green_Kubo
+formalism using additional LAMMPS commands, such as the "fix
+ave/correlate"_fix_ave_correlate.html command to calculate the needed
+auto-correlation.  See the doc page for the "compute
+heat/flux"_compute_heat_flux.html command for an example input script
+that calculates the thermal conductivity of solid Ar via the GK
+formalism.
+
+:line
+
+:link(howto-Ikeshoji)
+[(Ikeshoji)] Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261
+(1994).
+
+:link(howto-Wirnsberger)
+[(Wirnsberger)] Wirnsberger, Frenkel, and Dellago, J Chem Phys, 143, 124104
+(2015).
diff --git a/doc/src/Howto_library.txt b/doc/src/Howto_library.txt
new file mode 100644
index 0000000000..b15aadd214
--- /dev/null
+++ b/doc/src/Howto_library.txt
@@ -0,0 +1,208 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Library interface to LAMMPS :h3
+
+As described in "Section 2.5"_Section_start.html#start_5, LAMMPS can
+be built as a library, so that it can be called by another code, used
+in a "coupled manner"_Howto_couple.html with other codes, or driven
+through a "Python interface"_Python.html.
+
+All of these methodologies use a C-style interface to LAMMPS that is
+provided in the files src/library.cpp and src/library.h.  The
+functions therein have a C-style argument list, but contain C++ code
+you could write yourself in a C++ application that was invoking LAMMPS
+directly.  The C++ code in the functions illustrates how to invoke
+internal LAMMPS operations.  Note that LAMMPS classes are defined
+within a LAMMPS namespace (LAMMPS_NS) if you use them from another C++
+application.
+
+The examples/COUPLE and python/examples directories have example C++
+and C and Python codes which show how a driver code can link to LAMMPS
+as a library, run LAMMPS on a subset of processors, grab data from
+LAMMPS, change it, and put it back into LAMMPS.
+
+The file src/library.cpp contains the following functions for creating
+and destroying an instance of LAMMPS and sending it commands to
+execute.  See the documentation in the src/library.cpp file for
+details.
+
+NOTE: You can write code for additional functions as needed to define
+how your code talks to LAMMPS and add them to src/library.cpp and
+src/library.h, as well as to the "Python interface"_Python.html.  The
+added functions can access or change any internal LAMMPS data you
+wish.
+
+void lammps_open(int, char **, MPI_Comm, void **)
+void lammps_open_no_mpi(int, char **, void **)
+void lammps_close(void *)
+int lammps_version(void *)
+void lammps_file(void *, char *)
+char *lammps_command(void *, char *)
+void lammps_commands_list(void *, int, char **)
+void lammps_commands_string(void *, char *)
+void lammps_free(void *) :pre
+
+The lammps_open() function is used to initialize LAMMPS, passing in a
+list of strings as if they were "command-line
+arguments"_Section_start.html#start_6 when LAMMPS is run in
+stand-alone mode from the command line, and a MPI communicator for
+LAMMPS to run under.  It returns a ptr to the LAMMPS object that is
+created, and which is used in subsequent library calls.  The
+lammps_open() function can be called multiple times, to create
+multiple instances of LAMMPS.
+
+LAMMPS will run on the set of processors in the communicator.  This
+means the calling code can run LAMMPS on all or a subset of
+processors.  For example, a wrapper script might decide to alternate
+between LAMMPS and another code, allowing them both to run on all the
+processors.  Or it might allocate half the processors to LAMMPS and
+half to the other code and run both codes simultaneously before
+syncing them up periodically.  Or it might instantiate multiple
+instances of LAMMPS to perform different calculations.
+
+The lammps_open_no_mpi() function is similar except that no MPI
+communicator is passed from the caller.  Instead, MPI_COMM_WORLD is
+used to instantiate LAMMPS, and MPI is initialized if necessary.
+
+The lammps_close() function is used to shut down an instance of LAMMPS
+and free all its memory.
+
+The lammps_version() function can be used to determined the specific
+version of the underlying LAMMPS code. This is particularly useful
+when loading LAMMPS as a shared library via dlopen(). The code using
+the library interface can than use this information to adapt to
+changes to the LAMMPS command syntax between versions. The returned
+LAMMPS version code is an integer (e.g. 2 Sep 2015 results in
+20150902) that grows with every new LAMMPS version.
+
+The lammps_file(), lammps_command(), lammps_commands_list(), and
+lammps_commands_string() functions are used to pass one or more
+commands to LAMMPS to execute, the same as if they were coming from an
+input script.
+
+Via these functions, the calling code can read or generate a series of
+LAMMPS commands one or multiple at a time and pass it thru the library
+interface to setup a problem and then run it in stages.  The caller
+can interleave the command function calls with operations it performs,
+calls to extract information from or set information within LAMMPS, or
+calls to another code's library.
+
+The lammps_file() function passes the filename of an input script.
+The lammps_command() function passes a single command as a string.
+The lammps_commands_list() function passes multiple commands in a
+char** list.  In both lammps_command() and lammps_commands_list(),
+individual commands may or may not have a trailing newline.  The
+lammps_commands_string() function passes multiple commands
+concatenated into one long string, separated by newline characters.
+In both lammps_commands_list() and lammps_commands_string(), a single
+command can be spread across multiple lines, if the last printable
+character of all but the last line is "&", the same as if the lines
+appeared in an input script.
+
+The lammps_free() function is a clean-up function to free memory that
+the library allocated previously via other function calls.  See
+comments in src/library.cpp file for which other functions need this
+clean-up.
+
+The file src/library.cpp also contains these functions for extracting
+information from LAMMPS and setting value within LAMMPS.  Again, see
+the documentation in the src/library.cpp file for details, including
+which quantities can be queried by name:
+
+int lammps_extract_setting(void *, char *)
+void *lammps_extract_global(void *, char *)
+void lammps_extract_box(void *, double *, double *,
+                        double *, double *, double *, int *, int *)
+void *lammps_extract_atom(void *, char *)
+void *lammps_extract_compute(void *, char *, int, int)
+void *lammps_extract_fix(void *, char *, int, int, int, int)
+void *lammps_extract_variable(void *, char *, char *) :pre
+
+The extract_setting() function returns info on the size
+of data types (e.g. 32-bit or 64-bit atom IDs) used
+by the LAMMPS executable (a compile-time choice).
+
+The other extract functions return a pointer to various global or
+per-atom quantities stored in LAMMPS or to values calculated by a
+compute, fix, or variable.  The pointer returned by the
+extract_global() function can be used as a permanent reference to a
+value which may change.  For the extract_atom() method, see the
+extract() method in the src/atom.cpp file for a list of valid per-atom
+properties.  New names could easily be added if the property you want
+is not listed.  For the other extract functions, the underlying
+storage may be reallocated as LAMMPS runs, so you need to re-call the
+function to assure a current pointer or returned value(s).
+
+double lammps_get_thermo(void *, char *)
+int lammps_get_natoms(void *) :pre
+
+int lammps_set_variable(void *, char *, char *)
+void lammps_reset_box(void *, double *, double *, double, double, double) :pre
+
+The lammps_get_thermo() function returns the current value of a thermo
+keyword as a double precision value.
+
+The lammps_get_natoms() function returns the total number of atoms in
+the system and can be used by the caller to allocate memory for the
+lammps_gather_atoms() and lammps_scatter_atoms() functions.
+
+The lammps_set_variable() function can set an existing string-style
+variable to a new string value, so that subsequent LAMMPS commands can
+access the variable.
+
+The lammps_reset_box() function resets the size and shape of the
+simulation box, e.g. as part of restoring a previously extracted and
+saved state of a simulation.
+
+void lammps_gather_atoms(void *, char *, int, int, void *)
+void lammps_gather_atoms_concat(void *, char *, int, int, void *)
+void lammps_gather_atoms_subset(void *, char *, int, int, int, int *, void *)
+void lammps_scatter_atoms(void *, char *, int, int, void *)
+void lammps_scatter_atoms_subset(void *, char *, int, int, int, int *, void *) :pre
+
+void lammps_create_atoms(void *, int, tagint *, int *, double *, double *,
+                         imageint *, int) :pre
+
+The gather functions collect peratom info of the requested type (atom
+coords, atom types, forces, etc) from all processors, and returns the
+same vector of values to each callling processor.  The scatter
+functions do the inverse.  They distribute a vector of peratom values,
+passed by all calling processors, to invididual atoms, which may be
+owned by different processos.
+
+The lammps_gather_atoms() function does this for all N atoms in the
+system, ordered by atom ID, from 1 to N.  The
+lammps_gather_atoms_concat() function does it for all N atoms, but
+simply concatenates the subset of atoms owned by each processor.  The
+resulting vector is not ordered by atom ID.  Atom IDs can be requetsed
+by the same function if the caller needs to know the ordering.  The
+lammps_gather_subset() function allows the caller to request values
+for only a subset of atoms (identified by ID).
+For all 3 gather function, per-atom image flags can be retrieved in 2 ways.
+If the count is specified as 1, they are returned 
+in a packed format with all three image flags stored in a single integer.
+If the count is specified as 3, the values are unpacked into xyz flags
+by the library before returning them.
+
+The lammps_scatter_atoms() function takes a list of values for all N
+atoms in the system, ordered by atom ID, from 1 to N, and assigns
+those values to each atom in the system.  The
+lammps_scatter_atoms_subset() function takes a subset of IDs as an
+argument and only scatters those values to the owning atoms.
+
+The lammps_create_atoms() function takes a list of N atoms as input
+with atom types and coords (required), an optionally atom IDs and
+velocities and image flags.  It uses the coords of each atom to assign
+it as a new atom to the processor that owns it.  This function is
+useful to add atoms to a simulation or (in tandem with
+lammps_reset_box()) to restore a previously extracted and saved state
+of a simulation.  Additional properties for the new atoms can then be
+assigned via the lammps_scatter_atoms() or lammps_extract_atom()
+functions.
diff --git a/doc/src/Howto_manifold.txt b/doc/src/Howto_manifold.txt
new file mode 100644
index 0000000000..c9bb1ce57f
--- /dev/null
+++ b/doc/src/Howto_manifold.txt
@@ -0,0 +1,41 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Manifolds (surfaces) :h3
+
+[Overview:]
+
+This doc page is not about a LAMMPS input script command, but about
+manifolds, which are generalized surfaces, as defined and used by the
+USER-MANIFOLD package, to track particle motion on the manifolds.  See
+the src/USER-MANIFOLD/README file for more details about the package
+and its commands.
+
+Below is a list of currently supported manifolds by the USER-MANIFOLD
+package, their parameters and a short description of them.  The
+parameters listed here are in the same order as they should be passed
+to the relevant fixes.
+
+{manifold} @ {parameters} @ {equation} @ {description}
+cylinder @ R @ x^2 + y^2 - R^2 = 0 @ Cylinder along z-axis, axis going through (0,0,0)
+cylinder_dent @ R l a @ x^2 + y^2 - r(z)^2 = 0, r(x) = R if | z | > l, r(z) = R - a*(1 + cos(z/l))/2 otherwise @ A cylinder with a dent around z = 0
+dumbbell @ a A B c @ -( x^2 + y^2 ) + (a^2 - z^2/c^2) * ( 1 + (A*sin(B*z^2))^4) = 0 @ A dumbbell
+ellipsoid @ a  b c @ (x/a)^2 + (y/b)^2 + (z/c)^2 = 0 @ An ellipsoid
+gaussian_bump @ A l rc1 rc2 @ if( x < rc1) -z + A * exp( -x^2 / (2 l^2) ); else if( x < rc2 ) -z + a + b*x + c*x^2 + d*x^3; else z @ A Gaussian bump at x = y = 0, smoothly tapered to a flat plane z = 0.
+plane @ a b c x0 y0 z0 @ a*(x-x0) + b*(y-y0) + c*(z-z0) = 0 @ A plane with normal (a,b,c) going through point (x0,y0,z0)
+plane_wiggle @ a w @ z - a*sin(w*x) = 0 @ A plane with a sinusoidal modulation on z along x.
+sphere @ R @ x^2 + y^2 + z^2 - R^2 = 0 @ A sphere of radius R
+supersphere @ R q @ | x |^q + | y |^q + | z |^q - R^q = 0 @ A supersphere of hyperradius R
+spine @ a, A, B, B2, c @ -(x^2 + y^2) + (a^2 - z^2/f(z)^2)*(1 + (A*sin(g(z)*z^2))^4), f(z) = c if z > 0, 1 otherwise; g(z) = B if z > 0, B2 otherwise  @ An approximation to a dendtritic spine
+spine_two @ a, A, B, B2, c @ -(x^2 + y^2) + (a^2 - z^2/f(z)^2)*(1 + (A*sin(g(z)*z^2))^2), f(z) = c if z > 0, 1 otherwise; g(z) = B if z > 0, B2 otherwise  @ Another approximation to a dendtritic spine
+thylakoid @ wB LB lB @ Various, see "(Paquay)"_#Paquay1 @ A model grana thylakoid consisting of two block-like compartments connected by a bridge of width wB, length LB and taper length lB
+torus @ R r  @  (R - sqrt( x^2 + y^2 ) )^2 + z^2 - r^2  @ A torus with large radius R and small radius r, centered on (0,0,0) :tb(s=@)
+
+:link(Paquay1)
+[(Paquay)] Paquay and Kusters, Biophys. J., 110, 6, (2016).
+preprint available at "arXiv:1411.3019"_http://arxiv.org/abs/1411.3019/.
diff --git a/doc/src/Howto_multiple.txt b/doc/src/Howto_multiple.txt
new file mode 100644
index 0000000000..3516debb71
--- /dev/null
+++ b/doc/src/Howto_multiple.txt
@@ -0,0 +1,95 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Run multiple simulations from one input script :h3
+
+This can be done in several ways.  See the documentation for
+individual commands for more details on how these examples work.
+
+If "multiple simulations" means continue a previous simulation for
+more timesteps, then you simply use the "run"_run.html command
+multiple times.  For example, this script
+
+units lj
+atom_style atomic
+read_data data.lj
+run 10000
+run 10000
+run 10000
+run 10000
+run 10000 :pre
+
+would run 5 successive simulations of the same system for a total of
+50,000 timesteps.
+
+If you wish to run totally different simulations, one after the other,
+the "clear"_clear.html command can be used in between them to
+re-initialize LAMMPS.  For example, this script
+
+units lj
+atom_style atomic
+read_data data.lj
+run 10000
+clear
+units lj
+atom_style atomic
+read_data data.lj.new
+run 10000 :pre
+
+would run 2 independent simulations, one after the other.
+
+For large numbers of independent simulations, you can use
+"variables"_variable.html and the "next"_next.html and
+"jump"_jump.html commands to loop over the same input script
+multiple times with different settings.  For example, this
+script, named in.polymer
+
+variable d index run1 run2 run3 run4 run5 run6 run7 run8
+shell cd $d
+read_data data.polymer
+run 10000
+shell cd ..
+clear
+next d
+jump in.polymer :pre
+
+would run 8 simulations in different directories, using a data.polymer
+file in each directory.  The same concept could be used to run the
+same system at 8 different temperatures, using a temperature variable
+and storing the output in different log and dump files, for example
+
+variable a loop 8
+variable t index 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15
+log log.$a
+read data.polymer
+velocity all create $t 352839
+fix 1 all nvt $t $t 100.0
+dump 1 all atom 1000 dump.$a
+run 100000
+clear
+next t
+next a
+jump in.polymer :pre
+
+All of the above examples work whether you are running on 1 or
+multiple processors, but assumed you are running LAMMPS on a single
+partition of processors.  LAMMPS can be run on multiple partitions via
+the "-partition" command-line switch as described in "this
+section"_Section_start.html#start_6 of the manual.
+
+In the last 2 examples, if LAMMPS were run on 3 partitions, the same
+scripts could be used if the "index" and "loop" variables were
+replaced with {universe}-style variables, as described in the
+"variable"_variable.html command.  Also, the "next t" and "next a"
+commands would need to be replaced with a single "next a t" command.
+With these modifications, the 8 simulations of each script would run
+on the 3 partitions one after the other until all were finished.
+Initially, 3 simulations would be started simultaneously, one on each
+partition.  When one finished, that partition would then start
+the 4th simulation, and so forth, until all 8 were completed.
diff --git a/doc/src/Howto_nemd.txt b/doc/src/Howto_nemd.txt
new file mode 100644
index 0000000000..efb3a5cd73
--- /dev/null
+++ b/doc/src/Howto_nemd.txt
@@ -0,0 +1,48 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+NEMD simulations :h3
+
+Non-equilibrium molecular dynamics or NEMD simulations are typically
+used to measure a fluid's rheological properties such as viscosity.
+In LAMMPS, such simulations can be performed by first setting up a
+non-orthogonal simulation box (see the preceding Howto section).
+
+A shear strain can be applied to the simulation box at a desired
+strain rate by using the "fix deform"_fix_deform.html command.  The
+"fix nvt/sllod"_fix_nvt_sllod.html command can be used to thermostat
+the sheared fluid and integrate the SLLOD equations of motion for the
+system.  Fix nvt/sllod uses "compute
+temp/deform"_compute_temp_deform.html to compute a thermal temperature
+by subtracting out the streaming velocity of the shearing atoms.  The
+velocity profile or other properties of the fluid can be monitored via
+the "fix ave/chunk"_fix_ave_chunk.html command.
+
+As discussed in the previous section on non-orthogonal simulation
+boxes, the amount of tilt or skew that can be applied is limited by
+LAMMPS for computational efficiency to be 1/2 of the parallel box
+length.  However, "fix deform"_fix_deform.html can continuously strain
+a box by an arbitrary amount.  As discussed in the "fix
+deform"_fix_deform.html command, when the tilt value reaches a limit,
+the box is flipped to the opposite limit which is an equivalent tiling
+of periodic space.  The strain rate can then continue to change as
+before.  In a long NEMD simulation these box re-shaping events may
+occur many times.
+
+In a NEMD simulation, the "remap" option of "fix
+deform"_fix_deform.html should be set to "remap v", since that is what
+"fix nvt/sllod"_fix_nvt_sllod.html assumes to generate a velocity
+profile consistent with the applied shear strain rate.
+
+An alternative method for calculating viscosities is provided via the
+"fix viscosity"_fix_viscosity.html command.
+
+NEMD simulations can also be used to measure transport properties of a fluid
+through a pore or channel. Simulations of steady-state flow can be performed
+using the "fix flow/gauss"_fix_flow_gauss.html command.
diff --git a/doc/src/Howto_output.txt b/doc/src/Howto_output.txt
new file mode 100644
index 0000000000..ed2a78ee19
--- /dev/null
+++ b/doc/src/Howto_output.txt
@@ -0,0 +1,307 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Output from LAMMPS (thermo, dumps, computes, fixes, variables) :h3
+
+There are four basic kinds of LAMMPS output:
+
+"Thermodynamic output"_thermo_style.html, which is a list
+of quantities printed every few timesteps to the screen and logfile. :ulb,l
+
+"Dump files"_dump.html, which contain snapshots of atoms and various
+per-atom values and are written at a specified frequency. :l
+
+Certain fixes can output user-specified quantities to files: "fix
+ave/time"_fix_ave_time.html for time averaging, "fix
+ave/chunk"_fix_ave_chunk.html for spatial or other averaging, and "fix
+print"_fix_print.html for single-line output of
+"variables"_variable.html.  Fix print can also output to the
+screen. :l
+
+"Restart files"_restart.html. :l
+:ule
+
+A simulation prints one set of thermodynamic output and (optionally)
+restart files.  It can generate any number of dump files and fix
+output files, depending on what "dump"_dump.html and "fix"_fix.html
+commands you specify.
+
+As discussed below, LAMMPS gives you a variety of ways to determine
+what quantities are computed and printed when the thermodynamics,
+dump, or fix commands listed above perform output.  Throughout this
+discussion, note that users can also "add their own computes and fixes
+to LAMMPS"_Modify.html which can then generate values that can then be
+output with these commands.
+
+The following sub-sections discuss different LAMMPS command related
+to output and the kind of data they operate on and produce:
+
+"Global/per-atom/local data"_#global
+"Scalar/vector/array data"_#scalar
+"Thermodynamic output"_#thermo
+"Dump file output"_#dump
+"Fixes that write output files"_#fixoutput
+"Computes that process output quantities"_#computeoutput
+"Fixes that process output quantities"_#fixprocoutput
+"Computes that generate values to output"_#compute
+"Fixes that generate values to output"_#fix
+"Variables that generate values to output"_#variable
+"Summary table of output options and data flow between commands"_#table :ul
+
+Global/per-atom/local data :h4,link(global)
+
+Various output-related commands work with three different styles of
+data: global, per-atom, or local.  A global datum is one or more
+system-wide values, e.g. the temperature of the system.  A per-atom
+datum is one or more values per atom, e.g. the kinetic energy of each
+atom.  Local datums are calculated by each processor based on the
+atoms it owns, but there may be zero or more per atom, e.g. a list of
+bond distances.
+
+Scalar/vector/array data :h4,link(scalar)
+
+Global, per-atom, and local datums can each come in three kinds: a
+single scalar value, a vector of values, or a 2d array of values.  The
+doc page for a "compute" or "fix" or "variable" that generates data
+will specify both the style and kind of data it produces, e.g. a
+per-atom vector.
+
+When a quantity is accessed, as in many of the output commands
+discussed below, it can be referenced via the following bracket
+notation, where ID in this case is the ID of a compute.  The leading
+"c_" would be replaced by "f_" for a fix, or "v_" for a variable:
+
+c_ID | entire scalar, vector, or array
+c_ID\[I\] | one element of vector, one column of array
+c_ID\[I\]\[J\] | one element of array :tb(s=|)
+
+In other words, using one bracket reduces the dimension of the data
+once (vector -> scalar, array -> vector).  Using two brackets reduces
+the dimension twice (array -> scalar).  Thus a command that uses
+scalar values as input can typically also process elements of a vector
+or array.
+
+Thermodynamic output :h4,link(thermo)
+
+The frequency and format of thermodynamic output is set by the
+"thermo"_thermo.html, "thermo_style"_thermo_style.html, and
+"thermo_modify"_thermo_modify.html commands.  The
+"thermo_style"_thermo_style.html command also specifies what values
+are calculated and written out.  Pre-defined keywords can be specified
+(e.g. press, etotal, etc).  Three additional kinds of keywords can
+also be specified (c_ID, f_ID, v_name), where a "compute"_compute.html
+or "fix"_fix.html or "variable"_variable.html provides the value to be
+output.  In each case, the compute, fix, or variable must generate
+global values for input to the "thermo_style custom"_dump.html
+command.
+
+Note that thermodynamic output values can be "extensive" or
+"intensive".  The former scale with the number of atoms in the system
+(e.g. total energy), the latter do not (e.g. temperature).  The
+setting for "thermo_modify norm"_thermo_modify.html determines whether
+extensive quantities are normalized or not.  Computes and fixes
+produce either extensive or intensive values; see their individual doc
+pages for details.  "Equal-style variables"_variable.html produce only
+intensive values; you can include a division by "natoms" in the
+formula if desired, to make an extensive calculation produce an
+intensive result.
+
+Dump file output :h4,link(dump)
+
+Dump file output is specified by the "dump"_dump.html and
+"dump_modify"_dump_modify.html commands.  There are several
+pre-defined formats (dump atom, dump xtc, etc).
+
+There is also a "dump custom"_dump.html format where the user
+specifies what values are output with each atom.  Pre-defined atom
+attributes can be specified (id, x, fx, etc).  Three additional kinds
+of keywords can also be specified (c_ID, f_ID, v_name), where a
+"compute"_compute.html or "fix"_fix.html or "variable"_variable.html
+provides the values to be output.  In each case, the compute, fix, or
+variable must generate per-atom values for input to the "dump
+custom"_dump.html command.
+
+There is also a "dump local"_dump.html format where the user specifies
+what local values to output.  A pre-defined index keyword can be
+specified to enumerate the local values.  Two additional kinds of
+keywords can also be specified (c_ID, f_ID), where a
+"compute"_compute.html or "fix"_fix.html or "variable"_variable.html
+provides the values to be output.  In each case, the compute or fix
+must generate local values for input to the "dump local"_dump.html
+command.
+
+Fixes that write output files :h4,link(fixoutput)
+
+Several fixes take various quantities as input and can write output
+files: "fix ave/time"_fix_ave_time.html, "fix
+ave/chunk"_fix_ave_chunk.html, "fix ave/histo"_fix_ave_histo.html,
+"fix ave/correlate"_fix_ave_correlate.html, and "fix
+print"_fix_print.html.
+
+The "fix ave/time"_fix_ave_time.html command enables direct output to
+a file and/or time-averaging of global scalars or vectors.  The user
+specifies one or more quantities as input.  These can be global
+"compute"_compute.html values, global "fix"_fix.html values, or
+"variables"_variable.html of any style except the atom style which
+produces per-atom values.  Since a variable can refer to keywords used
+by the "thermo_style custom"_thermo_style.html command (like temp or
+press) and individual per-atom values, a wide variety of quantities
+can be time averaged and/or output in this way.  If the inputs are one
+or more scalar values, then the fix generate a global scalar or vector
+of output.  If the inputs are one or more vector values, then the fix
+generates a global vector or array of output.  The time-averaged
+output of this fix can also be used as input to other output commands.
+
+The "fix ave/chunk"_fix_ave_chunk.html command enables direct output
+to a file of chunk-averaged per-atom quantities like those output in
+dump files.  Chunks can represent spatial bins or other collections of
+atoms, e.g. individual molecules.  The per-atom quantities can be atom
+density (mass or number) or atom attributes such as position,
+velocity, force.  They can also be per-atom quantities calculated by a
+"compute"_compute.html, by a "fix"_fix.html, or by an atom-style
+"variable"_variable.html.  The chunk-averaged output of this fix can
+also be used as input to other output commands.
+
+The "fix ave/histo"_fix_ave_histo.html command enables direct output
+to a file of histogrammed quantities, which can be global or per-atom
+or local quantities.  The histogram output of this fix can also be
+used as input to other output commands.
+
+The "fix ave/correlate"_fix_ave_correlate.html command enables direct
+output to a file of time-correlated quantities, which can be global
+values.  The correlation matrix output of this fix can also be used as
+input to other output commands.
+
+The "fix print"_fix_print.html command can generate a line of output
+written to the screen and log file or to a separate file, periodically
+during a running simulation.  The line can contain one or more
+"variable"_variable.html values for any style variable except the
+vector or atom styles).  As explained above, variables themselves can
+contain references to global values generated by "thermodynamic
+keywords"_thermo_style.html, "computes"_compute.html,
+"fixes"_fix.html, or other "variables"_variable.html, or to per-atom
+values for a specific atom.  Thus the "fix print"_fix_print.html
+command is a means to output a wide variety of quantities separate
+from normal thermodynamic or dump file output.
+
+Computes that process output quantities :h4,link(computeoutput)
+
+The "compute reduce"_compute_reduce.html and "compute
+reduce/region"_compute_reduce.html commands take one or more per-atom
+or local vector quantities as inputs and "reduce" them (sum, min, max,
+ave) to scalar quantities.  These are produced as output values which
+can be used as input to other output commands.
+
+The "compute slice"_compute_slice.html command take one or more global
+vector or array quantities as inputs and extracts a subset of their
+values to create a new vector or array.  These are produced as output
+values which can be used as input to other output commands.
+
+The "compute property/atom"_compute_property_atom.html command takes a
+list of one or more pre-defined atom attributes (id, x, fx, etc) and
+stores the values in a per-atom vector or array.  These are produced
+as output values which can be used as input to other output commands.
+The list of atom attributes is the same as for the "dump
+custom"_dump.html command.
+
+The "compute property/local"_compute_property_local.html command takes
+a list of one or more pre-defined local attributes (bond info, angle
+info, etc) and stores the values in a local vector or array.  These
+are produced as output values which can be used as input to other
+output commands.
+
+Fixes that process output quantities :h4,link(fixprocoutput)
+
+The "fix vector"_fix_vector.html command can create global vectors as
+output from global scalars as input, accumulating them one element at
+a time.
+
+The "fix ave/atom"_fix_ave_atom.html command performs time-averaging
+of per-atom vectors.  The per-atom quantities can be atom attributes
+such as position, velocity, force.  They can also be per-atom
+quantities calculated by a "compute"_compute.html, by a
+"fix"_fix.html, or by an atom-style "variable"_variable.html.  The
+time-averaged per-atom output of this fix can be used as input to
+other output commands.
+
+The "fix store/state"_fix_store_state.html command can archive one or
+more per-atom attributes at a particular time, so that the old values
+can be used in a future calculation or output.  The list of atom
+attributes is the same as for the "dump custom"_dump.html command,
+including per-atom quantities calculated by a "compute"_compute.html,
+by a "fix"_fix.html, or by an atom-style "variable"_variable.html.
+The output of this fix can be used as input to other output commands.
+
+Computes that generate values to output :h4,link(compute)
+
+Every "compute"_compute.html in LAMMPS produces either global or
+per-atom or local values.  The values can be scalars or vectors or
+arrays of data.  These values can be output using the other commands
+described in this section.  The doc page for each compute command
+describes what it produces.  Computes that produce per-atom or local
+values have the word "atom" or "local" in their style name.  Computes
+without the word "atom" or "local" produce global values.
+
+Fixes that generate values to output :h4,link(fix)
+
+Some "fixes"_fix.html in LAMMPS produces either global or per-atom or
+local values which can be accessed by other commands.  The values can
+be scalars or vectors or arrays of data.  These values can be output
+using the other commands described in this section.  The doc page for
+each fix command tells whether it produces any output quantities and
+describes them.
+
+Variables that generate values to output :h4,link(variable)
+
+"Variables"_variable.html defined in an input script can store one or
+more strings.  But equal-style, vector-style, and atom-style or
+atomfile-style variables generate a global scalar value, global vector
+or values, or a per-atom vector, respectively, when accessed.  The
+formulas used to define these variables can contain references to the
+thermodynamic keywords and to global and per-atom data generated by
+computes, fixes, and other variables.  The values generated by
+variables can be used as input to and thus output by the other
+commands described in this section.
+
+Summary table of output options and data flow between commands :h4,link(table)
+
+This table summarizes the various commands that can be used for
+generating output from LAMMPS.  Each command produces output data of
+some kind and/or writes data to a file.  Most of the commands can take
+data from other commands as input.  Thus you can link many of these
+commands together in pipeline form, where data produced by one command
+is used as input to another command and eventually written to the
+screen or to a file.  Note that to hook two commands together the
+output and input data types must match, e.g. global/per-atom/local
+data and scalar/vector/array data.
+
+Also note that, as described above, when a command takes a scalar as
+input, that could be an element of a vector or array.  Likewise a
+vector input could be a column of an array.
+
+Command: Input: Output:
+"thermo_style custom"_thermo_style.html: global scalars: screen, log file:
+"dump custom"_dump.html: per-atom vectors: dump file:
+"dump local"_dump.html: local vectors: dump file:
+"fix print"_fix_print.html: global scalar from variable: screen, file:
+"print"_print.html: global scalar from variable: screen:
+"computes"_compute.html: N/A: global/per-atom/local scalar/vector/array:
+"fixes"_fix.html: N/A: global/per-atom/local scalar/vector/array:
+"variables"_variable.html: global scalars and vectors, per-atom vectors: global scalar and vector, per-atom vector:
+"compute reduce"_compute_reduce.html: per-atom/local vectors: global scalar/vector:
+"compute slice"_compute_slice.html: global vectors/arrays: global vector/array:
+"compute property/atom"_compute_property_atom.html: per-atom vectors: per-atom vector/array:
+"compute property/local"_compute_property_local.html: local vectors: local vector/array:
+"fix vector"_fix_vector.html: global scalars: global vector:
+"fix ave/atom"_fix_ave_atom.html: per-atom vectors: per-atom vector/array:
+"fix ave/time"_fix_ave_time.html: global scalars/vectors: global scalar/vector/array, file:
+"fix ave/chunk"_fix_ave_chunk.html: per-atom vectors: global array, file:
+"fix ave/histo"_fix_ave_histo.html: global/per-atom/local scalars and vectors: global array, file:
+"fix ave/correlate"_fix_ave_correlate.html: global scalars: global array, file:
+"fix store/state"_fix_store_state.html: per-atom vectors: per-atom vector/array :tb(c=3,s=:)
diff --git a/doc/src/Howto_polarizable.txt b/doc/src/Howto_polarizable.txt
new file mode 100644
index 0000000000..ec96ddc9a9
--- /dev/null
+++ b/doc/src/Howto_polarizable.txt
@@ -0,0 +1,81 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Polarizable models :h3
+
+In polarizable force fields the charge distributions in molecules and
+materials respond to their electrostatic environments. Polarizable
+systems can be simulated in LAMMPS using three methods:
+
+the fluctuating charge method, implemented in the "QEQ"_fix_qeq.html
+package, :ulb,l
+the adiabatic core-shell method, implemented in the
+"CORESHELL"_Howto_coreshell.html package, :l
+the thermalized Drude dipole method, implemented in the
+"USER-DRUDE"_Howto_drude.html package. :l,ule
+
+The fluctuating charge method calculates instantaneous charges on
+interacting atoms based on the electronegativity equalization
+principle. It is implemented in the "fix qeq"_fix_qeq.html which is
+available in several variants. It is a relatively efficient technique
+since no additional particles are introduced. This method allows for
+charge transfer between molecules or atom groups. However, because the
+charges are located at the interaction sites, off-plane components of
+polarization cannot be represented in planar molecules or atom groups.
+
+The two other methods share the same basic idea: polarizable atoms are
+split into one core atom and one satellite particle (called shell or
+Drude particle) attached to it by a harmonic spring.  Both atoms bear
+a charge and they represent collectively an induced electric dipole.
+These techniques are computationally more expensive than the QEq
+method because of additional particles and bonds. These two
+charge-on-spring methods differ in certain features, with the
+core-shell model being normally used for ionic/crystalline materials,
+whereas the so-called Drude model is normally used for molecular
+systems and fluid states.
+
+The core-shell model is applicable to crystalline materials where the
+high symmetry around each site leads to stable trajectories of the
+core-shell pairs. However, bonded atoms in molecules can be so close
+that a core would interact too strongly or even capture the Drude
+particle of a neighbor. The Drude dipole model is relatively more
+complex in order to remediate this and other issues. Specifically, the
+Drude model includes specific thermostating of the core-Drude pairs
+and short-range damping of the induced dipoles.
+
+The three polarization methods can be implemented through a
+self-consistent calculation of charges or induced dipoles at each
+timestep. In the fluctuating charge scheme this is done by the matrix
+inversion method in "fix qeq/point"_fix_qeq.html, but for core-shell
+or Drude-dipoles the relaxed-dipoles technique would require an slow
+iterative procedure. These self-consistent solutions yield accurate
+trajectories since the additional degrees of freedom representing
+polarization are massless.  An alternative is to attribute a mass to
+the additional degrees of freedom and perform time integration using
+an extended Lagrangian technique. For the fluctuating charge scheme
+this is done by "fix qeq/dynamic"_fix_qeq.html, and for the
+charge-on-spring models by the methods outlined in the next two
+sections. The assignment of masses to the additional degrees of
+freedom can lead to unphysical trajectories if care is not exerted in
+choosing the parameters of the polarizable models and the simulation
+conditions.
+
+In the core-shell model the vibration of the shells is kept faster
+than the ionic vibrations to mimic the fast response of the
+polarizable electrons.  But in molecular systems thermalizing the
+core-Drude pairs at temperatures comparable to the rest of the
+simulation leads to several problems (kinetic energy transfer, too
+short a timestep, etc.) In order to avoid these problems the relative
+motion of the Drude particles with respect to their cores is kept
+"cold" so the vibration of the core-Drude pairs is very slow,
+approaching the self-consistent regime.  In both models the
+temperature is regulated using the velocities of the center of mass of
+core+shell (or Drude) pairs, but in the Drude model the actual
+relative core-Drude particle motion is thermostated separately as
+well.
diff --git a/doc/src/tutorial_pylammps.txt b/doc/src/Howto_pylammps.txt
similarity index 95%
rename from doc/src/tutorial_pylammps.txt
rename to doc/src/Howto_pylammps.txt
index 11cddb3cbf..abf7c52d05 100644
--- a/doc/src/tutorial_pylammps.txt
+++ b/doc/src/Howto_pylammps.txt
@@ -15,13 +15,19 @@ END_RST -->
 
 Overview :h4
 
-PyLammps is a Python wrapper class which can be created on its own or use an
-existing lammps Python object. It creates a simpler, Python-like interface to
-common LAMMPS functionality. Unlike the original flat C-types interface, it
-exposes a discoverable API. It no longer requires knowledge of the underlying
-C++ code implementation.  Finally, the IPyLammps wrapper builds on top of
-PyLammps and adds some additional features for IPython integration into IPython
-notebooks, e.g. for embedded visualization output from dump/image.
+PyLammps is a Python wrapper class which can be created on its own or
+use an existing lammps Python object.  It creates a simpler,
+Python-like interface to common LAMMPS functionality, in contrast to
+the lammps.py wrapper on the C-style LAMMPS library interface which is
+written using Python ctypes.  The lammps.py wrapper is discussed on
+the "Python library"_Python_library.html doc page.
+
+Unlike the flat ctypes interface, PyLammps exposes a discoverable API.
+It no longer requires knowledge of the underlying C++ code
+implementation.  Finally, the IPyLammps wrapper builds on top of
+PyLammps and adds some additional features for IPython integration
+into IPython notebooks, e.g. for embedded visualization output from
+dump/image.
 
 Comparison of lammps and PyLammps interfaces :h5
 
@@ -40,7 +46,6 @@ communication with LAMMPS is hidden from API user
 shorter, more concise Python
 better IPython integration, designed for quick prototyping :ul
 
-
 Quick Start :h4
 
 System-wide Installation :h5
diff --git a/doc/src/Howto_replica.txt b/doc/src/Howto_replica.txt
new file mode 100644
index 0000000000..b2f0faa209
--- /dev/null
+++ b/doc/src/Howto_replica.txt
@@ -0,0 +1,61 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Multi-replica simulations :h3
+
+Several commands in LAMMPS run mutli-replica simulations, meaning
+that multiple instances (replicas) of your simulation are run
+simultaneously, with small amounts of data exchanged between replicas
+periodically.
+
+These are the relevant commands:
+
+"neb"_neb.html for nudged elastic band calculations
+"prd"_prd.html for parallel replica dynamics
+"tad"_tad.html for temperature accelerated dynamics
+"temper"_temper.html for parallel tempering
+"fix pimd"_fix_pimd.html for path-integral molecular dynamics (PIMD) :ul
+
+NEB is a method for finding transition states and barrier energies.
+PRD and TAD are methods for performing accelerated dynamics to find
+and perform infrequent events.  Parallel tempering or replica exchange
+runs different replicas at a series of temperature to facilitate
+rare-event sampling.
+
+These commands can only be used if LAMMPS was built with the REPLICA
+package.  See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info on packages.
+
+PIMD runs different replicas whose individual particles are coupled
+together by springs to model a system or ring-polymers.
+
+This commands can only be used if LAMMPS was built with the USER-MISC
+package.  See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info on packages.
+
+In all these cases, you must run with one or more processors per
+replica.  The processors assigned to each replica are determined at
+run-time by using the "-partition command-line
+switch"_Section_start.html#start_6 to launch LAMMPS on multiple
+partitions, which in this context are the same as replicas.  E.g.
+these commands:
+
+mpirun -np 16 lmp_linux -partition 8x2 -in in.temper
+mpirun -np 8 lmp_linux -partition 8x1 -in in.neb :pre
+
+would each run 8 replicas, on either 16 or 8 processors.  Note the use
+of the "-in command-line switch"_Section_start.html#start_6 to specify
+the input script which is required when running in multi-replica mode.
+
+Also note that with MPI installed on a machine (e.g. your desktop),
+you can run on more (virtual) processors than you have physical
+processors.  Thus the above commands could be run on a
+single-processor (or few-processor) desktop so that you can run
+a multi-replica simulation on more replicas than you have
+physical processors.
diff --git a/doc/src/Howto_restart.txt b/doc/src/Howto_restart.txt
new file mode 100644
index 0000000000..d2a993fcd3
--- /dev/null
+++ b/doc/src/Howto_restart.txt
@@ -0,0 +1,97 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Restart a simulation :h3
+
+There are 3 ways to continue a long LAMMPS simulation.  Multiple
+"run"_run.html commands can be used in the same input script.  Each
+run will continue from where the previous run left off.  Or binary
+restart files can be saved to disk using the "restart"_restart.html
+command.  At a later time, these binary files can be read via a
+"read_restart"_read_restart.html command in a new script.  Or they can
+be converted to text data files using the "-r command-line
+switch"_Section_start.html#start_6 and read by a
+"read_data"_read_data.html command in a new script.
+
+Here we give examples of 2 scripts that read either a binary restart
+file or a converted data file and then issue a new run command to
+continue where the previous run left off.  They illustrate what
+settings must be made in the new script.  Details are discussed in the
+documentation for the "read_restart"_read_restart.html and
+"read_data"_read_data.html commands.
+
+Look at the {in.chain} input script provided in the {bench} directory
+of the LAMMPS distribution to see the original script that these 2
+scripts are based on.  If that script had the line
+
+restart         50 tmp.restart :pre
+
+added to it, it would produce 2 binary restart files (tmp.restart.50
+and tmp.restart.100) as it ran.
+
+This script could be used to read the 1st restart file and re-run the
+last 50 timesteps:
+
+read_restart    tmp.restart.50 :pre
+
+neighbor        0.4 bin
+neigh_modify    every 1 delay 1 :pre
+
+fix             1 all nve
+fix             2 all langevin 1.0 1.0 10.0 904297 :pre
+
+timestep        0.012 :pre
+
+run             50 :pre
+
+Note that the following commands do not need to be repeated because
+their settings are included in the restart file: {units, atom_style,
+special_bonds, pair_style, bond_style}.  However these commands do
+need to be used, since their settings are not in the restart file:
+{neighbor, fix, timestep}.
+
+If you actually use this script to perform a restarted run, you will
+notice that the thermodynamic data match at step 50 (if you also put a
+"thermo 50" command in the original script), but do not match at step
+100.  This is because the "fix langevin"_fix_langevin.html command
+uses random numbers in a way that does not allow for perfect restarts.
+
+As an alternate approach, the restart file could be converted to a data
+file as follows:
+
+lmp_g++ -r tmp.restart.50 tmp.restart.data :pre
+
+Then, this script could be used to re-run the last 50 steps:
+
+units           lj
+atom_style      bond
+pair_style      lj/cut 1.12
+pair_modify     shift yes
+bond_style      fene
+special_bonds   0.0 1.0 1.0 :pre
+
+read_data       tmp.restart.data :pre
+
+neighbor        0.4 bin
+neigh_modify    every 1 delay 1 :pre
+
+fix             1 all nve
+fix             2 all langevin 1.0 1.0 10.0 904297 :pre
+
+timestep        0.012 :pre
+
+reset_timestep  50
+run             50 :pre
+
+Note that nearly all the settings specified in the original {in.chain}
+script must be repeated, except the {pair_coeff} and {bond_coeff}
+commands since the new data file lists the force field coefficients.
+Also, the "reset_timestep"_reset_timestep.html command is used to tell
+LAMMPS the current timestep.  This value is stored in restart files,
+but not in data files.
diff --git a/doc/src/Howto_spc.txt b/doc/src/Howto_spc.txt
new file mode 100644
index 0000000000..6a63c1f6a6
--- /dev/null
+++ b/doc/src/Howto_spc.txt
@@ -0,0 +1,54 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+SPC water model :h3
+
+The SPC water model specifies a 3-site rigid water molecule with
+charges and Lennard-Jones parameters assigned to each of the 3 atoms.
+In LAMMPS the "fix shake"_fix_shake.html command can be used to hold
+the two O-H bonds and the H-O-H angle rigid.  A bond style of
+{harmonic} and an angle style of {harmonic} or {charmm} should also be
+used.
+
+These are the additional parameters (in real units) to set for O and H
+atoms and the water molecule to run a rigid SPC model.
+
+O mass = 15.9994
+H mass = 1.008
+O charge = -0.820
+H charge = 0.410
+LJ epsilon of OO = 0.1553
+LJ sigma of OO = 3.166
+LJ epsilon, sigma of OH, HH = 0.0
+r0 of OH bond = 1.0
+theta of HOH angle = 109.47 :all(b),p
+
+Note that as originally proposed, the SPC model was run with a 9
+Angstrom cutoff for both LJ and Coulommbic terms.  It can also be used
+with long-range Coulombics (Ewald or PPPM in LAMMPS), without changing
+any of the parameters above, though it becomes a different model in
+that mode of usage.
+
+The SPC/E (extended) water model is the same, except
+the partial charge assignments change:
+
+O charge = -0.8476
+H charge = 0.4238 :all(b),p
+
+See the "(Berendsen)"_#howto-Berendsen reference for more details on both
+the SPC and SPC/E models.
+
+Wikipedia also has a nice article on "water
+models"_http://en.wikipedia.org/wiki/Water_model.
+
+:line
+
+:link(howto-Berendsen)
+[(Berendsen)] Berendsen, Grigera, Straatsma, J Phys Chem, 91,
+6269-6271 (1987).
diff --git a/doc/src/Howto_spherical.txt b/doc/src/Howto_spherical.txt
new file mode 100644
index 0000000000..bc16ece2a3
--- /dev/null
+++ b/doc/src/Howto_spherical.txt
@@ -0,0 +1,243 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Finite-size spherical and aspherical particles :h3
+
+Typical MD models treat atoms or particles as point masses.  Sometimes
+it is desirable to have a model with finite-size particles such as
+spheroids or ellipsoids or generalized aspherical bodies.  The
+difference is that such particles have a moment of inertia, rotational
+energy, and angular momentum.  Rotation is induced by torque coming
+from interactions with other particles.
+
+LAMMPS has several options for running simulations with these kinds of
+particles.  The following aspects are discussed in turn:
+
+atom styles
+pair potentials
+time integration
+computes, thermodynamics, and dump output
+rigid bodies composed of finite-size particles :ul
+
+Example input scripts for these kinds of models are in the body,
+colloid, dipole, ellipse, line, peri, pour, and tri directories of the
+"examples directory"_Examples.html in the LAMMPS distribution.
+
+Atom styles :h4
+
+There are several "atom styles"_atom_style.html that allow for
+definition of finite-size particles: sphere, dipole, ellipsoid, line,
+tri, peri, and body.
+
+The sphere style defines particles that are spheriods and each
+particle can have a unique diameter and mass (or density).  These
+particles store an angular velocity (omega) and can be acted upon by
+torque.  The "set" command can be used to modify the diameter and mass
+of individual particles, after then are created.
+
+The dipole style does not actually define finite-size particles, but
+is often used in conjunction with spherical particles, via a command
+like
+
+atom_style hybrid sphere dipole :pre
+
+This is because when dipoles interact with each other, they induce
+torques, and a particle must be finite-size (i.e. have a moment of
+inertia) in order to respond and rotate.  See the "atom_style
+dipole"_atom_style.html command for details.  The "set" command can be
+used to modify the orientation and length of the dipole moment of
+individual particles, after then are created.
+
+The ellipsoid style defines particles that are ellipsoids and thus can
+be aspherical.  Each particle has a shape, specified by 3 diameters,
+and mass (or density).  These particles store an angular momentum and
+their orientation (quaternion), and can be acted upon by torque.  They
+do not store an angular velocity (omega), which can be in a different
+direction than angular momentum, rather they compute it as needed.
+The "set" command can be used to modify the diameter, orientation, and
+mass of individual particles, after then are created.  It also has a
+brief explanation of what quaternions are.
+
+The line style defines line segment particles with two end points and
+a mass (or density).  They can be used in 2d simulations, and they can
+be joined together to form rigid bodies which represent arbitrary
+polygons.
+
+The tri style defines triangular particles with three corner points
+and a mass (or density).  They can be used in 3d simulations, and they
+can be joined together to form rigid bodies which represent arbitrary
+particles with a triangulated surface.
+
+The peri style is used with "Peridynamic models"_pair_peri.html and
+defines particles as having a volume, that is used internally in the
+"pair_style peri"_pair_peri.html potentials.
+
+The body style allows for definition of particles which can represent
+complex entities, such as surface meshes of discrete points,
+collections of sub-particles, deformable objects, etc.  The body style
+is discussed in more detail on the "Howto body"_Howto_body.html doc
+page.
+
+Note that if one of these atom styles is used (or multiple styles via
+the "atom_style hybrid"_atom_style.html command), not all particles in
+the system are required to be finite-size or aspherical.
+
+For example, in the ellipsoid style, if the 3 shape parameters are set
+to the same value, the particle will be a sphere rather than an
+ellipsoid.  If the 3 shape parameters are all set to 0.0 or if the
+diameter is set to 0.0, it will be a point particle.  In the line or
+tri style, if the lineflag or triflag is specified as 0, then it
+will be a point particle.
+
+Some of the pair styles used to compute pairwise interactions between
+finite-size particles also compute the correct interaction with point
+particles as well, e.g. the interaction between a point particle and a
+finite-size particle or between two point particles.  If necessary,
+"pair_style hybrid"_pair_hybrid.html can be used to insure the correct
+interactions are computed for the appropriate style of interactions.
+Likewise, using groups to partition particles (ellipsoids versus
+spheres versus point particles) will allow you to use the appropriate
+time integrators and temperature computations for each class of
+particles.  See the doc pages for various commands for details.
+
+Also note that for "2d simulations"_dimension.html, atom styles sphere
+and ellipsoid still use 3d particles, rather than as circular disks or
+ellipses.  This means they have the same moment of inertia as the 3d
+object.  When temperature is computed, the correct degrees of freedom
+are used for rotation in a 2d versus 3d system.
+
+Pair potentials :h4
+
+When a system with finite-size particles is defined, the particles
+will only rotate and experience torque if the force field computes
+such interactions.  These are the various "pair
+styles"_pair_style.html that generate torque:
+
+"pair_style gran/history"_pair_gran.html
+"pair_style gran/hertzian"_pair_gran.html
+"pair_style gran/no_history"_pair_gran.html
+"pair_style dipole/cut"_pair_dipole.html
+"pair_style gayberne"_pair_gayberne.html
+"pair_style resquared"_pair_resquared.html
+"pair_style brownian"_pair_brownian.html
+"pair_style lubricate"_pair_lubricate.html
+"pair_style line/lj"_pair_line_lj.html
+"pair_style tri/lj"_pair_tri_lj.html
+"pair_style body"_pair_body.html :ul
+
+The granular pair styles are used with spherical particles.  The
+dipole pair style is used with the dipole atom style, which could be
+applied to spherical or ellipsoidal particles.  The GayBerne and
+REsquared potentials require ellipsoidal particles, though they will
+also work if the 3 shape parameters are the same (a sphere).  The
+Brownian and lubrication potentials are used with spherical particles.
+The line, tri, and body potentials are used with line segment,
+triangular, and body particles respectively.
+
+Time integration :h4
+
+There are several fixes that perform time integration on finite-size
+spherical particles, meaning the integrators update the rotational
+orientation and angular velocity or angular momentum of the particles:
+
+"fix nve/sphere"_fix_nve_sphere.html
+"fix nvt/sphere"_fix_nvt_sphere.html
+"fix npt/sphere"_fix_npt_sphere.html :ul
+
+Likewise, there are 3 fixes that perform time integration on
+ellipsoidal particles:
+
+"fix nve/asphere"_fix_nve_asphere.html
+"fix nvt/asphere"_fix_nvt_asphere.html
+"fix npt/asphere"_fix_npt_asphere.html :ul
+
+The advantage of these fixes is that those which thermostat the
+particles include the rotational degrees of freedom in the temperature
+calculation and thermostatting.  The "fix langevin"_fix_langevin
+command can also be used with its {omgea} or {angmom} options to
+thermostat the rotational degrees of freedom for spherical or
+ellipsoidal particles.  Other thermostatting fixes only operate on the
+translational kinetic energy of finite-size particles.
+
+These fixes perform constant NVE time integration on line segment,
+triangular, and body particles:
+
+"fix nve/line"_fix_nve_line.html
+"fix nve/tri"_fix_nve_tri.html
+"fix nve/body"_fix_nve_body.html :ul
+
+Note that for mixtures of point and finite-size particles, these
+integration fixes can only be used with "groups"_group.html which
+contain finite-size particles.
+
+Computes, thermodynamics, and dump output :h4
+
+There are several computes that calculate the temperature or
+rotational energy of spherical or ellipsoidal particles:
+
+"compute temp/sphere"_compute_temp_sphere.html
+"compute temp/asphere"_compute_temp_asphere.html
+"compute erotate/sphere"_compute_erotate_sphere.html
+"compute erotate/asphere"_compute_erotate_asphere.html :ul
+
+These include rotational degrees of freedom in their computation.  If
+you wish the thermodynamic output of temperature or pressure to use
+one of these computes (e.g. for a system entirely composed of
+finite-size particles), then the compute can be defined and the
+"thermo_modify"_thermo_modify.html command used.  Note that by default
+thermodynamic quantities will be calculated with a temperature that
+only includes translational degrees of freedom.  See the
+"thermo_style"_thermo_style.html command for details.
+
+These commands can be used to output various attributes of finite-size
+particles:
+
+"dump custom"_dump.html
+"compute property/atom"_compute_property_atom.html
+"dump local"_dump.html
+"compute body/local"_compute_body_local.html :ul
+
+Attributes include the dipole moment, the angular velocity, the
+angular momentum, the quaternion, the torque, the end-point and
+corner-point coordinates (for line and tri particles), and
+sub-particle attributes of body particles.
+
+Rigid bodies composed of finite-size particles :h4
+
+The "fix rigid"_fix_rigid.html command treats a collection of
+particles as a rigid body, computes its inertia tensor, sums the total
+force and torque on the rigid body each timestep due to forces on its
+constituent particles, and integrates the motion of the rigid body.
+
+If any of the constituent particles of a rigid body are finite-size
+particles (spheres or ellipsoids or line segments or triangles), then
+their contribution to the inertia tensor of the body is different than
+if they were point particles.  This means the rotational dynamics of
+the rigid body will be different.  Thus a model of a dimer is
+different if the dimer consists of two point masses versus two
+spheroids, even if the two particles have the same mass.  Finite-size
+particles that experience torque due to their interaction with other
+particles will also impart that torque to a rigid body they are part
+of.
+
+See the "fix rigid" command for example of complex rigid-body models
+it is possible to define in LAMMPS.
+
+Note that the "fix shake"_fix_shake.html command can also be used to
+treat 2, 3, or 4 particles as a rigid body, but it always assumes the
+particles are point masses.
+
+Also note that body particles cannot be modeled with the "fix
+rigid"_fix_rigid.html command.  Body particles are treated by LAMMPS
+as single particles, though they can store internal state, such as a
+list of sub-particles.  Individual body partices are typically treated
+as rigid bodies, and their motion integrated with a command like "fix
+nve/body"_fix_nve_body.html.  Interactions between pairs of body
+particles are computed via a command like "pair_style
+body"_pair_body.html.
diff --git a/doc/src/Howto_spins.txt b/doc/src/Howto_spins.txt
new file mode 100644
index 0000000000..3cb9e480b2
--- /dev/null
+++ b/doc/src/Howto_spins.txt
@@ -0,0 +1,59 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Magnetic spins :h3
+
+The magnetic spin simualtions are enabled by the SPIN package, whose
+implementation is detailed in "Tranchida"_#Tranchida7.
+
+The model representents the simulation of atomic magnetic spins coupled 
+to lattice vibrations. The dynamics of those magnetic spins can be used 
+to simulate a broad range a phenomena related to magneto-elasticity, or 
+or to study the influence of defects on the magnetic properties of 
+materials. 
+
+The magnetic spins are interacting with each others and with the 
+lattice via pair interactions. Typically, the magnetic exchange 
+interaction can be defined using the 
+"pair/spin/exchange"_pair_spin_exchange.html command. This exchange
+applies a magnetic torque to a given spin, considering the orientation
+of its neighboring spins and their relative distances. 
+It also applies a force on the atoms as a function of the spin 
+orientations and their associated inter-atomic distances. 
+ 
+The command "fix precession/spin"_fix_precession_spin.html allows to
+apply a constant magnetic torque on all the spins in the system. This
+torque can be an external magnetic field (Zeeman interaction), or an
+uniaxial magnetic anisotropy. 
+
+A Langevin thermostat can be applied to those magnetic spins using 
+"fix langevin/spin"_fix_langevin_spin.html. Typically, this thermostat 
+can be coupled to another Langevin thermostat applied to the atoms 
+using "fix langevin"_fix_langevin.html in order to simulate 
+thermostated spin-lattice system. 
+
+The magnetic Gilbert damping can also be applied using "fix 
+langevin/spin"_fix_langevin_spin.html. It allows to either dissipate 
+the thermal energy of the Langevin thermostat, or to perform a 
+relaxation of the magnetic configuration toward an equilibrium state.
+
+All the computed magnetic properties can be outputed by two main 
+commands. The first one is "compute spin"_compute_spin.html, that 
+enables to evaluate magnetic averaged quantities, such as the total 
+magnetization of the system along x, y, or z, the spin temperature, or
+the magnetic energy. The second command is "compute 
+property/atom"_compute_property_atom.html. It enables to output all the
+per atom magnetic quantities. Typically, the orientation of a given 
+magnetic spin, or the magnetic force acting on this spin.
+
+:line
+
+:link(Tranchida7)
+[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson, 
+arXiv preprint arXiv:1801.10233, (2018).
diff --git a/doc/src/Howto_temperature.txt b/doc/src/Howto_temperature.txt
new file mode 100644
index 0000000000..3d1bd8a2d6
--- /dev/null
+++ b/doc/src/Howto_temperature.txt
@@ -0,0 +1,40 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Calcalate temperature :h3
+
+Temperature is computed as kinetic energy divided by some number of
+degrees of freedom (and the Boltzmann constant).  Since kinetic energy
+is a function of particle velocity, there is often a need to
+distinguish between a particle's advection velocity (due to some
+aggregate motion of particles) and its thermal velocity.  The sum of
+the two is the particle's total velocity, but the latter is often what
+is wanted to compute a temperature.
+
+LAMMPS has several options for computing temperatures, any of which can be used in "thermostatting"_Howto_thermostat.html and "barostatting"_Howto_barostat.html.  These "compute commands"_compute.html calculate temperature:
+
+"compute temp"_compute_temp.html
+"compute temp/sphere"_compute_temp_sphere.html
+"compute temp/asphere"_compute_temp_asphere.html
+"compute temp/com"_compute_temp_com.html
+"compute temp/deform"_compute_temp_deform.html
+"compute temp/partial"_compute_temp_partial.html
+"compute temp/profile"_compute_temp_profile.html
+"compute temp/ramp"_compute_temp_ramp.html
+"compute temp/region"_compute_temp_region.html :ul
+
+All but the first 3 calculate velocity biases directly (e.g. advection
+velocities) that are removed when computing the thermal temperature.
+"Compute temp/sphere"_compute_temp_sphere.html and "compute
+temp/asphere"_compute_temp_asphere.html compute kinetic energy for
+finite-size particles that includes rotational degrees of freedom.
+They both allow for velocity biases indirectly, via an optional extra
+argument which is another temperature compute that subtracts a velocity bias.
+This allows the translational velocity of spherical or aspherical
+particles to be adjusted in prescribed ways.
diff --git a/doc/src/Howto_thermostat.txt b/doc/src/Howto_thermostat.txt
new file mode 100644
index 0000000000..c1887d9738
--- /dev/null
+++ b/doc/src/Howto_thermostat.txt
@@ -0,0 +1,89 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Thermostats :h3
+
+Thermostatting means controlling the temperature of particles in an MD
+simulation.  "Barostatting"_Howto_barostat.html means controlling the
+pressure.  Since the pressure includes a kinetic component due to
+particle velocities, both these operations require calculation of the
+temperature.  Typically a target temperature (T) and/or pressure (P)
+is specified by the user, and the thermostat or barostat attempts to
+equilibrate the system to the requested T and/or P.
+
+Thermostatting in LAMMPS is performed by "fixes"_fix.html, or in one
+case by a pair style.  Several thermostatting fixes are available:
+Nose-Hoover (nvt), Berendsen, CSVR, Langevin, and direct rescaling
+(temp/rescale).  Dissipative particle dynamics (DPD) thermostatting
+can be invoked via the {dpd/tstat} pair style:
+
+"fix nvt"_fix_nh.html
+"fix nvt/sphere"_fix_nvt_sphere.html
+"fix nvt/asphere"_fix_nvt_asphere.html
+"fix nvt/sllod"_fix_nvt_sllod.html
+"fix temp/berendsen"_fix_temp_berendsen.html
+"fix temp/csvr"_fix_temp_csvr.html
+"fix langevin"_fix_langevin.html
+"fix temp/rescale"_fix_temp_rescale.html
+"pair_style dpd/tstat"_pair_dpd.html :ul
+
+"Fix nvt"_fix_nh.html only thermostats the translational velocity of
+particles.  "Fix nvt/sllod"_fix_nvt_sllod.html also does this, except
+that it subtracts out a velocity bias due to a deforming box and
+integrates the SLLOD equations of motion.  See the "Howto
+nemd"_Howto_nemd.html doc page for further details.  "Fix
+nvt/sphere"_fix_nvt_sphere.html and "fix
+nvt/asphere"_fix_nvt_asphere.html thermostat not only translation
+velocities but also rotational velocities for spherical and aspherical
+particles.
+
+DPD thermostatting alters pairwise interactions in a manner analogous
+to the per-particle thermostatting of "fix
+langevin"_fix_langevin.html.
+
+Any of the thermostatting fixes can use "temperature
+computes"_Howto_thermostat.html that remove bias which has two
+effects.  First, the current calculated temperature, which is compared
+to the requested target temperature, is calculated with the velocity
+bias removed.  Second, the thermostat adjusts only the thermal
+temperature component of the particle's velocities, which are the
+velocities with the bias removed.  The removed bias is then added back
+to the adjusted velocities.  See the doc pages for the individual
+fixes and for the "fix_modify"_fix_modify.html command for
+instructions on how to assign a temperature compute to a
+thermostatting fix.  For example, you can apply a thermostat to only
+the x and z components of velocity by using it in conjunction with
+"compute temp/partial"_compute_temp_partial.html.  Of you could
+thermostat only the thermal temperature of a streaming flow of
+particles without affecting the streaming velocity, by using "compute
+temp/profile"_compute_temp_profile.html.
+
+NOTE: Only the nvt fixes perform time integration, meaning they update
+the velocities and positions of particles due to forces and velocities
+respectively.  The other thermostat fixes only adjust velocities; they
+do NOT perform time integration updates.  Thus they should be used in
+conjunction with a constant NVE integration fix such as these:
+
+"fix nve"_fix_nve.html
+"fix nve/sphere"_fix_nve_sphere.html
+"fix nve/asphere"_fix_nve_asphere.html :ul
+
+Thermodynamic output, which can be setup via the
+"thermo_style"_thermo_style.html command, often includes temperature
+values.  As explained on the doc page for the
+"thermo_style"_thermo_style.html command, the default temperature is
+setup by the thermo command itself.  It is NOT the temperature
+associated with any thermostatting fix you have defined or with any
+compute you have defined that calculates a temperature.  The doc pages
+for the thermostatting fixes explain the ID of the temperature compute
+they create.  Thus if you want to view these temperatures, you need to
+specify them explicitly via the "thermo_style
+custom"_thermo_style.html command.  Or you can use the
+"thermo_modify"_thermo_modify.html command to re-define what
+temperature compute is used for default thermodynamic output.
diff --git a/doc/src/Howto_tip3p.txt b/doc/src/Howto_tip3p.txt
new file mode 100644
index 0000000000..23ab604d1f
--- /dev/null
+++ b/doc/src/Howto_tip3p.txt
@@ -0,0 +1,69 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+TIP3P water model :h3
+
+The TIP3P water model as implemented in CHARMM
+"(MacKerell)"_#howto-MacKerell specifies a 3-site rigid water molecule with
+charges and Lennard-Jones parameters assigned to each of the 3 atoms.
+In LAMMPS the "fix shake"_fix_shake.html command can be used to hold
+the two O-H bonds and the H-O-H angle rigid.  A bond style of
+{harmonic} and an angle style of {harmonic} or {charmm} should also be
+used.
+
+These are the additional parameters (in real units) to set for O and H
+atoms and the water molecule to run a rigid TIP3P-CHARMM model with a
+cutoff.  The K values can be used if a flexible TIP3P model (without
+fix shake) is desired.  If the LJ epsilon and sigma for HH and OH are
+set to 0.0, it corresponds to the original 1983 TIP3P model
+"(Jorgensen)"_#Jorgensen1.
+
+O mass = 15.9994
+H mass = 1.008
+O charge = -0.834
+H charge = 0.417
+LJ epsilon of OO = 0.1521
+LJ sigma of OO = 3.1507
+LJ epsilon of HH = 0.0460
+LJ sigma of HH = 0.4000
+LJ epsilon of OH = 0.0836
+LJ sigma of OH = 1.7753
+K of OH bond = 450
+r0 of OH bond = 0.9572
+K of HOH angle = 55
+theta of HOH angle = 104.52 :all(b),p
+
+These are the parameters to use for TIP3P with a long-range Coulombic
+solver (e.g. Ewald or PPPM in LAMMPS), see "(Price)"_#Price1 for
+details:
+
+O mass = 15.9994
+H mass = 1.008
+O charge = -0.830
+H charge = 0.415
+LJ epsilon of OO = 0.102
+LJ sigma of OO = 3.188
+LJ epsilon, sigma of OH, HH = 0.0
+K of OH bond = 450
+r0 of OH bond = 0.9572
+K of HOH angle = 55
+theta of HOH angle = 104.52 :all(b),p
+
+Wikipedia also has a nice article on "water
+models"_http://en.wikipedia.org/wiki/Water_model.
+
+:line
+
+:link(Jorgensen1)
+[(Jorgensen)] Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem
+Phys, 79, 926 (1983).
+
+:link(Price1)
+[(Price)] Price and Brooks, J Chem Phys, 121, 10096 (2004).
+
diff --git a/doc/src/Howto_tip4p.txt b/doc/src/Howto_tip4p.txt
new file mode 100644
index 0000000000..a471bdc918
--- /dev/null
+++ b/doc/src/Howto_tip4p.txt
@@ -0,0 +1,112 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+TIP4P water model :h3
+
+The four-point TIP4P rigid water model extends the traditional
+three-point TIP3P model by adding an additional site, usually
+massless, where the charge associated with the oxygen atom is placed.
+This site M is located at a fixed distance away from the oxygen along
+the bisector of the HOH bond angle.  A bond style of {harmonic} and an
+angle style of {harmonic} or {charmm} should also be used.
+
+A TIP4P model is run with LAMMPS using either this command
+for a cutoff model:
+
+"pair_style lj/cut/tip4p/cut"_pair_lj.html
+
+or these two commands for a long-range model:
+
+"pair_style lj/cut/tip4p/long"_pair_lj.html
+"kspace_style pppm/tip4p"_kspace_style.html :ul
+
+For both models, the bond lengths and bond angles should be held fixed
+using the "fix shake"_fix_shake.html command.
+
+These are the additional parameters (in real units) to set for O and H
+atoms and the water molecule to run a rigid TIP4P model with a cutoff
+"(Jorgensen)"_#Jorgensen1.  Note that the OM distance is specified in
+the "pair_style"_pair_style.html command, not as part of the pair
+coefficients.
+
+O mass = 15.9994
+H mass = 1.008
+O charge = -1.040
+H charge = 0.520
+r0 of OH bond = 0.9572
+theta of HOH angle = 104.52
+OM distance = 0.15
+LJ epsilon of O-O = 0.1550
+LJ sigma of O-O = 3.1536
+LJ epsilon, sigma of OH, HH = 0.0
+Coulombic cutoff = 8.5 :all(b),p
+
+For the TIP4/Ice model (J Chem Phys, 122, 234511 (2005);
+http://dx.doi.org/10.1063/1.1931662) these values can be used:
+
+O mass = 15.9994
+H mass =  1.008
+O charge = -1.1794
+H charge =  0.5897
+r0 of OH bond = 0.9572
+theta of HOH angle = 104.52
+OM distance = 0.1577
+LJ epsilon of O-O = 0.21084
+LJ sigma of O-O = 3.1668
+LJ epsilon, sigma of OH, HH = 0.0
+Coulombic cutoff = 8.5 :all(b),p
+
+For the TIP4P/2005 model (J Chem Phys, 123, 234505 (2005);
+http://dx.doi.org/10.1063/1.2121687), these values can be used:
+
+O mass = 15.9994
+H mass =  1.008
+O charge = -1.1128
+H charge = 0.5564
+r0 of OH bond = 0.9572
+theta of HOH angle = 104.52
+OM distance = 0.1546
+LJ epsilon of O-O = 0.1852
+LJ sigma of O-O = 3.1589
+LJ epsilon, sigma of OH, HH = 0.0
+Coulombic cutoff = 8.5 :all(b),p
+
+These are the parameters to use for TIP4P with a long-range Coulombic
+solver (e.g. Ewald or PPPM in LAMMPS):
+
+O mass = 15.9994
+H mass = 1.008
+O charge = -1.0484
+H charge = 0.5242
+r0 of OH bond = 0.9572
+theta of HOH angle = 104.52
+OM distance = 0.1250
+LJ epsilon of O-O = 0.16275
+LJ sigma of O-O = 3.16435
+LJ epsilon, sigma of OH, HH = 0.0 :all(b),p
+
+Note that the when using the TIP4P pair style, the neighbor list
+cutoff for Coulomb interactions is effectively extended by a distance
+2 * (OM distance), to account for the offset distance of the
+fictitious charges on O atoms in water molecules.  Thus it is
+typically best in an efficiency sense to use a LJ cutoff >= Coulomb
+cutoff + 2*(OM distance), to shrink the size of the neighbor list.
+This leads to slightly larger cost for the long-range calculation, so
+you can test the trade-off for your model.  The OM distance and the LJ
+and Coulombic cutoffs are set in the "pair_style
+lj/cut/tip4p/long"_pair_lj.html command.
+
+Wikipedia also has a nice article on "water
+models"_http://en.wikipedia.org/wiki/Water_model.
+
+:line
+
+:link(Jorgensen1)
+[(Jorgensen)] Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem
+Phys, 79, 926 (1983).
diff --git a/doc/src/Howto_triclinic.txt b/doc/src/Howto_triclinic.txt
new file mode 100644
index 0000000000..10bcc5e9d1
--- /dev/null
+++ b/doc/src/Howto_triclinic.txt
@@ -0,0 +1,213 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+Triclinic (non-orthogonal) simulation boxes :h3
+
+By default, LAMMPS uses an orthogonal simulation box to encompass the
+particles.  The "boundary"_boundary.html command sets the boundary
+conditions of the box (periodic, non-periodic, etc).  The orthogonal
+box has its "origin" at (xlo,ylo,zlo) and is defined by 3 edge vectors
+starting from the origin given by [a] = (xhi-xlo,0,0); [b] =
+(0,yhi-ylo,0); [c] = (0,0,zhi-zlo).  The 6 parameters
+(xlo,xhi,ylo,yhi,zlo,zhi) are defined at the time the simulation box
+is created, e.g. by the "create_box"_create_box.html or
+"read_data"_read_data.html or "read_restart"_read_restart.html
+commands.  Additionally, LAMMPS defines box size parameters lx,ly,lz
+where lx = xhi-xlo, and similarly in the y and z dimensions.  The 6
+parameters, as well as lx,ly,lz, can be output via the "thermo_style
+custom"_thermo_style.html command.
+
+LAMMPS also allows simulations to be performed in triclinic
+(non-orthogonal) simulation boxes shaped as a parallelepiped with
+triclinic symmetry.  The parallelepiped has its "origin" at
+(xlo,ylo,zlo) and is defined by 3 edge vectors starting from the
+origin given by [a] = (xhi-xlo,0,0); [b] = (xy,yhi-ylo,0); [c] =
+(xz,yz,zhi-zlo).  {xy,xz,yz} can be 0.0 or positive or negative values
+and are called "tilt factors" because they are the amount of
+displacement applied to faces of an originally orthogonal box to
+transform it into the parallelepiped.  In LAMMPS the triclinic
+simulation box edge vectors [a], [b], and [c] cannot be arbitrary
+vectors.  As indicated, [a] must lie on the positive x axis.  [b] must
+lie in the xy plane, with strictly positive y component. [c] may have
+any orientation with strictly positive z component.  The requirement
+that [a], [b], and [c] have strictly positive x, y, and z components,
+respectively, ensures that [a], [b], and [c] form a complete
+right-handed basis.  These restrictions impose no loss of generality,
+since it is possible to rotate/invert any set of 3 crystal basis
+vectors so that they conform to the restrictions.
+
+For example, assume that the 3 vectors [A],[B],[C] are the edge
+vectors of a general parallelepiped, where there is no restriction on
+[A],[B],[C] other than they form a complete right-handed basis i.e.
+[A] x [B] . [C] > 0.  The equivalent LAMMPS [a],[b],[c] are a linear
+rotation of [A], [B], and [C] and can be computed as follows:
+
+:c,image(Eqs/transform.jpg)
+
+where A = | [A] | indicates the scalar length of [A]. The hat symbol (^)
+indicates the corresponding unit vector. {beta} and {gamma} are angles
+between the vectors described below. Note that by construction,
+[a], [b], and [c] have strictly positive x, y, and z components, respectively.
+If it should happen that
+[A], [B], and [C] form a left-handed basis, then the above equations
+are not valid for [c]. In this case, it is necessary
+to first apply an inversion. This can be achieved
+by interchanging two basis vectors or by changing the sign of one of them.
+
+For consistency, the same rotation/inversion applied to the basis vectors
+must also be applied to atom positions, velocities,
+and any other vector quantities.
+This can be conveniently achieved by first converting to
+fractional coordinates in the
+old basis and then converting to distance coordinates in the new basis.
+The transformation is given by the following equation:
+
+:c,image(Eqs/rotate.jpg)
+
+where {V} is the volume of the box, [X] is the original vector quantity and
+[x] is the vector in the LAMMPS basis.
+
+There is no requirement that a triclinic box be periodic in any
+dimension, though it typically should be in at least the 2nd dimension
+of the tilt (y in xy) if you want to enforce a shift in periodic
+boundary conditions across that boundary.  Some commands that work
+with triclinic boxes, e.g. the "fix deform"_fix_deform.html and "fix
+npt"_fix_nh.html commands, require periodicity or non-shrink-wrap
+boundary conditions in specific dimensions.  See the command doc pages
+for details.
+
+The 9 parameters (xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz) are defined at the
+time the simulation box is created.  This happens in one of 3 ways.
+If the "create_box"_create_box.html command is used with a region of
+style {prism}, then a triclinic box is setup.  See the
+"region"_region.html command for details.  If the
+"read_data"_read_data.html command is used to define the simulation
+box, and the header of the data file contains a line with the "xy xz
+yz" keyword, then a triclinic box is setup.  See the
+"read_data"_read_data.html command for details.  Finally, if the
+"read_restart"_read_restart.html command reads a restart file which
+was written from a simulation using a triclinic box, then a triclinic
+box will be setup for the restarted simulation.
+
+Note that you can define a triclinic box with all 3 tilt factors =
+0.0, so that it is initially orthogonal.  This is necessary if the box
+will become non-orthogonal, e.g. due to the "fix npt"_fix_nh.html or
+"fix deform"_fix_deform.html commands.  Alternatively, you can use the
+"change_box"_change_box.html command to convert a simulation box from
+orthogonal to triclinic and vice versa.
+
+As with orthogonal boxes, LAMMPS defines triclinic box size parameters
+lx,ly,lz where lx = xhi-xlo, and similarly in the y and z dimensions.
+The 9 parameters, as well as lx,ly,lz, can be output via the
+"thermo_style custom"_thermo_style.html command.
+
+To avoid extremely tilted boxes (which would be computationally
+inefficient), LAMMPS normally requires that no tilt factor can skew
+the box more than half the distance of the parallel box length, which
+is the 1st dimension in the tilt factor (x for xz).  This is required
+both when the simulation box is created, e.g. via the
+"create_box"_create_box.html or "read_data"_read_data.html commands,
+as well as when the box shape changes dynamically during a simulation,
+e.g. via the "fix deform"_fix_deform.html or "fix npt"_fix_nh.html
+commands.
+
+For example, if xlo = 2 and xhi = 12, then the x box length is 10 and
+the xy tilt factor must be between -5 and 5.  Similarly, both xz and
+yz must be between -(xhi-xlo)/2 and +(yhi-ylo)/2.  Note that this is
+not a limitation, since if the maximum tilt factor is 5 (as in this
+example), then configurations with tilt = ..., -15, -5, 5, 15, 25,
+... are geometrically all equivalent.  If the box tilt exceeds this
+limit during a dynamics run (e.g. via the "fix deform"_fix_deform.html
+command), then the box is "flipped" to an equivalent shape with a tilt
+factor within the bounds, so the run can continue.  See the "fix
+deform"_fix_deform.html doc page for further details.
+
+One exception to this rule is if the 1st dimension in the tilt
+factor (x for xy) is non-periodic.  In that case, the limits on the
+tilt factor are not enforced, since flipping the box in that dimension
+does not change the atom positions due to non-periodicity.  In this
+mode, if you tilt the system to extreme angles, the simulation will
+simply become inefficient, due to the highly skewed simulation box.
+
+The limitation on not creating a simulation box with a tilt factor
+skewing the box more than half the distance of the parallel box length
+can be overridden via the "box"_box.html command.  Setting the {tilt}
+keyword to {large} allows any tilt factors to be specified.
+
+Box flips that may occur using the "fix deform"_fix_deform.html or
+"fix npt"_fix_nh.html commands can be turned off using the {flip no}
+option with either of the commands.
+
+Note that if a simulation box has a large tilt factor, LAMMPS will run
+less efficiently, due to the large volume of communication needed to
+acquire ghost atoms around a processor's irregular-shaped sub-domain.
+For extreme values of tilt, LAMMPS may also lose atoms and generate an
+error.
+
+Triclinic crystal structures are often defined using three lattice
+constants {a}, {b}, and {c}, and three angles {alpha}, {beta} and
+{gamma}. Note that in this nomenclature, the a, b, and c lattice
+constants are the scalar lengths of the edge vectors [a], [b], and [c]
+defined above.  The relationship between these 6 quantities
+(a,b,c,alpha,beta,gamma) and the LAMMPS box sizes (lx,ly,lz) =
+(xhi-xlo,yhi-ylo,zhi-zlo) and tilt factors (xy,xz,yz) is as follows:
+
+:c,image(Eqs/box.jpg)
+
+The inverse relationship can be written as follows:
+
+:c,image(Eqs/box_inverse.jpg)
+
+The values of {a}, {b}, {c} , {alpha}, {beta} , and {gamma} can be printed
+out or accessed by computes using the
+"thermo_style custom"_thermo_style.html keywords
+{cella}, {cellb}, {cellc}, {cellalpha}, {cellbeta}, {cellgamma},
+respectively.
+
+As discussed on the "dump"_dump.html command doc page, when the BOX
+BOUNDS for a snapshot is written to a dump file for a triclinic box,
+an orthogonal bounding box which encloses the triclinic simulation box
+is output, along with the 3 tilt factors (xy, xz, yz) of the triclinic
+box, formatted as follows:
+
+ITEM: BOX BOUNDS xy xz yz
+xlo_bound xhi_bound xy
+ylo_bound yhi_bound xz
+zlo_bound zhi_bound yz :pre
+
+This bounding box is convenient for many visualization programs and is
+calculated from the 9 triclinic box parameters
+(xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz) as follows:
+
+xlo_bound = xlo + MIN(0.0,xy,xz,xy+xz)
+xhi_bound = xhi + MAX(0.0,xy,xz,xy+xz)
+ylo_bound = ylo + MIN(0.0,yz)
+yhi_bound = yhi + MAX(0.0,yz)
+zlo_bound = zlo
+zhi_bound = zhi :pre
+
+These formulas can be inverted if you need to convert the bounding box
+back into the triclinic box parameters, e.g. xlo = xlo_bound -
+MIN(0.0,xy,xz,xy+xz).
+
+One use of triclinic simulation boxes is to model solid-state crystals
+with triclinic symmetry.  The "lattice"_lattice.html command can be
+used with non-orthogonal basis vectors to define a lattice that will
+tile a triclinic simulation box via the
+"create_atoms"_create_atoms.html command.
+
+A second use is to run Parinello-Rahman dynamics via the "fix
+npt"_fix_nh.html command, which will adjust the xy, xz, yz tilt
+factors to compensate for off-diagonal components of the pressure
+tensor.  The analog for an "energy minimization"_minimize.html is
+the "fix box/relax"_fix_box_relax.html command.
+
+A third use is to shear a bulk solid to study the response of the
+material.  The "fix deform"_fix_deform.html command can be used for
+this purpose.  It allows dynamic control of the xy, xz, yz tilt
+factors as a simulation runs.  This is discussed in the next section
+on non-equilibrium MD (NEMD) simulations.
diff --git a/doc/src/Howto_viscosity.txt b/doc/src/Howto_viscosity.txt
new file mode 100644
index 0000000000..4760607fd5
--- /dev/null
+++ b/doc/src/Howto_viscosity.txt
@@ -0,0 +1,133 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Calculate viscosity :h3
+
+The shear viscosity eta of a fluid can be measured in at least 5 ways
+using various options in LAMMPS.  See the examples/VISCOSITY directory
+for scripts that implement the 5 methods discussed here for a simple
+Lennard-Jones fluid model.  Also, see the "Howto
+kappa"_Howto_kappa.html doc page for an analogous discussion for
+thermal conductivity.
+
+Eta is a measure of the propensity of a fluid to transmit momentum in
+a direction perpendicular to the direction of velocity or momentum
+flow.  Alternatively it is the resistance the fluid has to being
+sheared.  It is given by
+
+J = -eta grad(Vstream)
+
+where J is the momentum flux in units of momentum per area per time.
+and grad(Vstream) is the spatial gradient of the velocity of the fluid
+moving in another direction, normal to the area through which the
+momentum flows.  Viscosity thus has units of pressure-time.
+
+The first method is to perform a non-equilibrium MD (NEMD) simulation
+by shearing the simulation box via the "fix deform"_fix_deform.html
+command, and using the "fix nvt/sllod"_fix_nvt_sllod.html command to
+thermostat the fluid via the SLLOD equations of motion.
+Alternatively, as a second method, one or more moving walls can be
+used to shear the fluid in between them, again with some kind of
+thermostat that modifies only the thermal (non-shearing) components of
+velocity to prevent the fluid from heating up.
+
+In both cases, the velocity profile setup in the fluid by this
+procedure can be monitored by the "fix ave/chunk"_fix_ave_chunk.html
+command, which determines grad(Vstream) in the equation above.
+E.g. the derivative in the y-direction of the Vx component of fluid
+motion or grad(Vstream) = dVx/dy.  The Pxy off-diagonal component of
+the pressure or stress tensor, as calculated by the "compute
+pressure"_compute_pressure.html command, can also be monitored, which
+is the J term in the equation above.  See the "Howto
+nemd"_Howto_nemd.html doc page for details on NEMD simulations.
+
+The third method is to perform a reverse non-equilibrium MD simulation
+using the "fix viscosity"_fix_viscosity.html command which implements
+the rNEMD algorithm of Muller-Plathe.  Momentum in one dimension is
+swapped between atoms in two different layers of the simulation box in
+a different dimension.  This induces a velocity gradient which can be
+monitored with the "fix ave/chunk"_fix_ave_chunk.html command.
+The fix tallies the cumulative momentum transfer that it performs.
+See the "fix viscosity"_fix_viscosity.html command for details.
+
+The fourth method is based on the Green-Kubo (GK) formula which
+relates the ensemble average of the auto-correlation of the
+stress/pressure tensor to eta.  This can be done in a fully
+equilibrated simulation which is in contrast to the two preceding
+non-equilibrium methods, where momentum flows continuously through the
+simulation box.
+
+Here is an example input script that calculates the viscosity of
+liquid Ar via the GK formalism:
+
+# Sample LAMMPS input script for viscosity of liquid Ar :pre
+
+units       real
+variable    T equal 86.4956
+variable    V equal vol
+variable    dt equal 4.0
+variable    p equal 400     # correlation length
+variable    s equal 5       # sample interval
+variable    d equal $p*$s   # dump interval :pre
+
+# convert from LAMMPS real units to SI :pre
+
+variable    kB equal 1.3806504e-23    # \[J/K/] Boltzmann
+variable    atm2Pa equal 101325.0
+variable    A2m equal 1.0e-10
+variable    fs2s equal 1.0e-15
+variable    convert equal $\{atm2Pa\}*$\{atm2Pa\}*$\{fs2s\}*$\{A2m\}*$\{A2m\}*$\{A2m\} :pre
+
+# setup problem :pre
+
+dimension    3
+boundary     p p p
+lattice      fcc 5.376 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1
+region       box block 0 4 0 4 0 4
+create_box   1 box
+create_atoms 1 box
+mass         1 39.948
+pair_style   lj/cut 13.0
+pair_coeff   * * 0.2381 3.405
+timestep     $\{dt\}
+thermo       $d :pre
+
+# equilibration and thermalization :pre
+
+velocity     all create $T 102486 mom yes rot yes dist gaussian
+fix          NVT all nvt temp $T $T 10 drag 0.2
+run          8000 :pre
+
+# viscosity calculation, switch to NVE if desired :pre
+
+#unfix       NVT
+#fix         NVE all nve :pre
+
+reset_timestep 0
+variable     pxy equal pxy
+variable     pxz equal pxz
+variable     pyz equal pyz
+fix          SS all ave/correlate $s $p $d &
+             v_pxy v_pxz v_pyz type auto file S0St.dat ave running
+variable     scale equal $\{convert\}/($\{kB\}*$T)*$V*$s*$\{dt\}
+variable     v11 equal trap(f_SS\[3\])*$\{scale\}
+variable     v22 equal trap(f_SS\[4\])*$\{scale\}
+variable     v33 equal trap(f_SS\[5\])*$\{scale\}
+thermo_style custom step temp press v_pxy v_pxz v_pyz v_v11 v_v22 v_v33
+run          100000
+variable     v equal (v_v11+v_v22+v_v33)/3.0
+variable     ndens equal count(all)/vol
+print        "average viscosity: $v \[Pa.s\] @ $T K, $\{ndens\} /A^3" :pre
+
+The fifth method is related to the above Green-Kubo method,
+but uses the Einstein formulation, analogous to the Einstein
+mean-square-displacement formulation for self-diffusivity. The
+time-integrated momentum fluxes play the role of Cartesian
+coordinates, whose mean-square displacement increases linearly
+with time at sufficiently long times.
diff --git a/doc/src/Howto_viz.txt b/doc/src/Howto_viz.txt
new file mode 100644
index 0000000000..53635442c8
--- /dev/null
+++ b/doc/src/Howto_viz.txt
@@ -0,0 +1,40 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Visualize LAMMPS snapshots :h3
+
+LAMMPS itself does not do visualization, but snapshots from LAMMPS
+simulations can be visualized (and analyzed) in a variety of ways.
+
+Mention dump image and dump movie.
+
+LAMMPS snapshots are created by the "dump"_dump.html command which can
+create files in several formats. The native LAMMPS dump format is a
+text file (see "dump atom" or "dump custom") which can be visualized
+by several popular visualization tools. The "dump
+image"_dump_image.html and "dump movie"_dump_image.html styles can
+output internally rendered images and convert a sequence of them to a
+movie during the MD run.  Several programs included with LAMMPS as
+auxiliary tools can convert between LAMMPS format files and other
+formats.  See the "Tools"_Tools.html doc page for details.
+
+A Python-based toolkit distributed by our group can read native LAMMPS
+dump files, including custom dump files with additional columns of
+user-specified atom information, and convert them to various formats
+or pipe them into visualization software directly.  See the "Pizza.py
+WWW site"_pizza for details.  Specifically, Pizza.py can convert
+LAMMPS dump files into PDB, XYZ, "Ensight"_ensight, and VTK formats.
+Pizza.py can pipe LAMMPS dump files directly into the Raster3d and
+RasMol visualization programs.  Pizza.py has tools that do interactive
+3d OpenGL visualization and one that creates SVG images of dump file
+snapshots.
+
+:link(pizza,http://www.sandia.gov/~sjplimp/pizza.html)
+:link(ensight,http://www.ensight.com)
+:link(atomeye,http://mt.seas.upenn.edu/Archive/Graphics/A)
diff --git a/doc/src/Howto_walls.txt b/doc/src/Howto_walls.txt
new file mode 100644
index 0000000000..7b0f8c0cfa
--- /dev/null
+++ b/doc/src/Howto_walls.txt
@@ -0,0 +1,80 @@
+"Higher level section"_Howto.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Walls :h3
+
+Walls in an MD simulation are typically used to bound particle motion,
+i.e. to serve as a boundary condition.
+
+Walls in LAMMPS can be of rough (made of particles) or idealized
+surfaces.  Ideal walls can be smooth, generating forces only in the
+normal direction, or frictional, generating forces also in the
+tangential direction.
+
+Rough walls, built of particles, can be created in various ways.  The
+particles themselves can be generated like any other particle, via the
+"lattice"_lattice.html and "create_atoms"_create_atoms.html commands,
+or read in via the "read_data"_read_data.html command.
+
+Their motion can be constrained by many different commands, so that
+they do not move at all, move together as a group at constant velocity
+or in response to a net force acting on them, move in a prescribed
+fashion (e.g. rotate around a point), etc.  Note that if a time
+integration fix like "fix nve"_fix_nve.html or "fix nvt"_fix_nh.html
+is not used with the group that contains wall particles, their
+positions and velocities will not be updated.
+
+"fix aveforce"_fix_aveforce.html - set force on particles to average value, so they move together
+"fix setforce"_fix_setforce.html - set force on particles to a value, e.g. 0.0
+"fix freeze"_fix_freeze.html - freeze particles for use as granular walls
+"fix nve/noforce"_fix_nve_noforce.html - advect particles by their velocity, but without force
+"fix move"_fix_move.html - prescribe motion of particles by a linear velocity, oscillation, rotation, variable :ul
+
+The "fix move"_fix_move.html command offers the most generality, since
+the motion of individual particles can be specified with
+"variable"_variable.html formula which depends on time and/or the
+particle position.
+
+For rough walls, it may be useful to turn off pairwise interactions
+between wall particles via the "neigh_modify
+exclude"_neigh_modify.html command.
+
+Rough walls can also be created by specifying frozen particles that do
+not move and do not interact with mobile particles, and then tethering
+other particles to the fixed particles, via a "bond"_bond_style.html.
+The bonded particles do interact with other mobile particles.
+
+Idealized walls can be specified via several fix commands.  "Fix
+wall/gran"_fix_wall_gran.html creates frictional walls for use with
+granular particles; all the other commands create smooth walls.
+
+"fix wall/reflect"_fix_wall_reflect.html - reflective flat walls
+"fix wall/lj93"_fix_wall.html - flat walls, with Lennard-Jones 9/3 potential
+"fix wall/lj126"_fix_wall.html - flat walls, with Lennard-Jones 12/6 potential
+"fix wall/colloid"_fix_wall.html - flat walls, with "pair_style colloid"_pair_colloid.html potential
+"fix wall/harmonic"_fix_wall.html - flat walls, with repulsive harmonic spring potential
+"fix wall/region"_fix_wall_region.html - use region surface as wall
+"fix wall/gran"_fix_wall_gran.html - flat or curved walls with "pair_style granular"_pair_gran.html potential :ul
+
+The {lj93}, {lj126}, {colloid}, and {harmonic} styles all allow the
+flat walls to move with a constant velocity, or oscillate in time.
+The "fix wall/region"_fix_wall_region.html command offers the most
+generality, since the region surface is treated as a wall, and the
+geometry of the region can be a simple primitive volume (e.g. a
+sphere, or cube, or plane), or a complex volume made from the union
+and intersection of primitive volumes.  "Regions"_region.html can also
+specify a volume "interior" or "exterior" to the specified primitive
+shape or {union} or {intersection}.  "Regions"_region.html can also be
+"dynamic" meaning they move with constant velocity, oscillate, or
+rotate.
+
+The only frictional idealized walls currently in LAMMPS are flat or
+curved surfaces specified by the "fix wall/gran"_fix_wall_gran.html
+command.  At some point we plan to allow regoin surfaces to be used as
+frictional walls, as well as triangulated surfaces.
diff --git a/doc/src/Intro.txt b/doc/src/Intro.txt
new file mode 100644
index 0000000000..a634799721
--- /dev/null
+++ b/doc/src/Intro.txt
@@ -0,0 +1,43 @@
+"Previous Section"_Manual.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Section_start.html :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands.html#comm)
+
+:line
+
+Introduction :h2
+
+The "LAMMPS website"_lws is the best introduction to LAMMPS.
+
+Here is a list of webpages you can browse:
+
+"Brief intro and significant recent features"_lws
+"List of features"_http://lammps.sandia.gov/features.html
+"List of non-features"_http://lammps.sandia.gov/non_features.html
+"Recent bug fixes and new features"_http://lammps.sandia.gov/bug.html :ul
+
+"Download info"_http://lammps.sandia.gov/download.html
+"GitHub site"_https://github.com/lammps/lammps
+"SourceForge site"_https://sourceforge.net/projects/lammps
+"Open source and licensing info"_http://lammps.sandia.gov/open_source.html :ul
+
+"Glossary of MD terms relevant to LAMMPS"_http://lammps.sandia.gov/glossary.html
+"LAMMPS highlights with images"_http://lammps.sandia.gov/pictures.html
+"LAMMPS highlights with movies"_http://lammps.sandia.gov/movies.html
+"Mail list"_http://lammps.sandia.gov/mail.html
+"Workshops"_http://lammps.sandia.gov/workshops.html
+"Tutorials"_http://lammps.sandia.gov/tutorials.html
+"Developer guide"_http://lammps.sandia.gov/Developer.pdf :ul
+
+"Pre- and post-processing tools for LAMMPS"_http://lammps.sandia.gov/prepost.html
+"Other software usable with LAMMPS"_http://lammps.sandia.gov/offsite.html
+"Viz tools usable with LAMMPS"_http://lammps.sandia.gov/viz.html :ul
+
+"Benchmark performance"_http://lammps.sandia.gov/bench.html
+"Publications that have cited LAMMPS"_http://lammps.sandia.gov/papers.html
+"Authors of the LAMMPS code"_http://lammps.sandia.gov/authors.html
+"History of LAMMPS development"_http://lammps.sandia.gov/history.html
+"Funding for LAMMPS"_http://lammps.sandia.gov/funding.html :ul
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index 31b8a6a1d4..3fe5a25fbb 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -1,5 +1,5 @@
 <!-- HTML_ONLY -->
-<
+<HEAD>
 <TITLE>LAMMPS Users Manual</TITLE>
 <META NAME="docnumber" CONTENT="16 Jul 2018 version">
 <META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
@@ -18,86 +18,46 @@
 
 :line
 
-LAMMPS Documentation :c,h1
-16 Jul 2018 version :c,h2
-
-Version info: :h3
-
-The LAMMPS "version" is the date when it was released, such as 1 May
-2010. LAMMPS is updated continuously.  Whenever we fix a bug or add a
-feature, we release it immediately, and post a notice on "this page of
-the WWW site"_bug. Every 2-4 months one of the incremental releases
-is subjected to more thorough testing and labeled as a {stable} version.
-
-Each dated copy of LAMMPS contains all the
-features and bug-fixes up to and including that version date. The
-version date is printed to the screen and logfile every time you run
-LAMMPS. It is also in the file src/version.h and in the LAMMPS
-directory name created when you unpack a tarball, and at the top of
-the first page of the manual (this page).
+<H1></H1>
 
-If you browse the HTML doc pages on the LAMMPS WWW site, they always
-describe the most current [development] version of LAMMPS. :ulb,l
-
-If you browse the HTML doc pages included in your tarball, they
-describe the version you have. :l
-
-The "PDF file"_Manual.pdf on the WWW site or in the tarball is updated
-about once per month.  This is because it is large, and we don't want
-it to be part of every patch. :l
+LAMMPS Documentation :c,h1
+16 Mar 2018 version :c,h2
 
-There is also a "Developer.pdf"_Developer.pdf file in the doc
-directory, which describes the internal structure and algorithms of
-LAMMPS.  :l
-:ule
+"What is a LAMMPS version?"_Manual_version.html
 
 LAMMPS stands for Large-scale Atomic/Molecular Massively Parallel
 Simulator.
 
 LAMMPS is a classical molecular dynamics simulation code designed to
-run efficiently on parallel computers.  It was developed at Sandia
-National Laboratories, a US Department of Energy facility, with
+run efficiently on parallel computers.  It was developed originally at
+Sandia National Laboratories, a US Department of Energy facility, with
 funding from the DOE.  It is an open-source code, distributed freely
 under the terms of the GNU Public License (GPL).
 
-The current core group of LAMMPS developers is at Sandia National
-Labs and Temple University:
+The "LAMMPS website"_lws has information about the code authors, a
+"mail list"_http://lammps.sandia.gov where users can post questions,
+and a "GitHub site"https://github.com/lammps/lammps where all LAMMPS
+development is coordinated.
+
+:line
 
-"Steve Plimpton"_sjp, sjplimp at sandia.gov :ulb,l
-Aidan Thompson, athomps at sandia.gov :l
-Stan Moore, stamoor at sandia.gov :l
-"Axel Kohlmeyer"_ako, akohlmey at gmail.com :l
-:ule
+"PDF file"_Manual.pdf of the entire manual, generated by
+"htmldoc"_http://freecode.com/projects/htmldoc
 
-Past core developers include Paul Crozier, Ray Shan and Mark Stevens,
-all at Sandia. The [LAMMPS home page] at
-"http://lammps.sandia.gov"_http://lammps.sandia.gov has more information
-about the code and its uses. Interaction with external LAMMPS developers,
-bug reports and feature requests are mainly coordinated through the
-"LAMMPS project on GitHub."_https://github.com/lammps/lammps
-The lammps.org domain, currently hosting "public continuous integration
-testing"_https://ci.lammps.org/job/lammps/ and "precompiled Linux
-RPM and Windows installer packages"_http://packages.lammps.org is located
-at Temple University and managed by Richard Berger,
-richard.berger at temple.edu.
+The content for this manual is part of the LAMMPS distribution.
+You can build a local copy of the Manual as HTML pages or a PDF file,
+by following the steps on the "this page"_Build_manual.html.
 
-:link(bug,http://lammps.sandia.gov/bug.html)
-:link(sjp,http://www.sandia.gov/~sjplimp)
-:link(ako,http://goo.gl/1wk0)
+There is also a "Developer.pdf"_Developer.pdf document which gives
+a brief description of the basic code structure of LAMMPS.
 
 :line
 
-The LAMMPS documentation is organized into the following sections.  If
-you find errors or omissions in this manual or have suggestions for
-useful information to add, please send an email to the developers so
-we can improve the LAMMPS documentation.
+This manual is organized into the following sections.
 
 Once you are familiar with LAMMPS, you may want to bookmark "this
-page"_Section_commands.html#comm at Section_commands.html#comm since
-it gives quick access to documentation for all LAMMPS commands.
-
-"PDF file"_Manual.pdf of the entire manual, generated by
-"htmldoc"_http://freecode.com/projects/htmldoc
+page"_Commands.html since it gives quick access to a doc page for
+every LAMMPS command.
 
 <!-- RST
 
@@ -108,25 +68,23 @@ it gives quick access to documentation for all LAMMPS commands.
    :name: userdoc
    :includehidden:
 
-   Section_intro
+   Intro
    Section_start
    Section_commands
    Packages
    Speed
-   Section_howto
+   Howto
    Examples
    Tools
    Modify
    Python
    Errors
-   Section_history
 
 .. toctree::
    :caption: Index
    :name: index
    :hidden:
 
-   tutorials
    commands
    fixes
    computes
@@ -145,12 +103,7 @@ Indices and tables
 END_RST -->
 
 <!-- HTML_ONLY -->
-"Introduction"_Section_intro.html :olb,l
-  1.1 "What is LAMMPS"_intro_1 :ulb,b
-  1.2 "LAMMPS features"_intro_2 :b
-  1.3 "LAMMPS non-features"_intro_3 :b
-  1.4 "Open source distribution"_intro_4 :b
-  1.5 "Acknowledgments and citations"_intro_5 :ule,b
+"Introduction"_Intro.html :olb,l
 "Getting started"_Section_start.html :l
   2.1 "What's in the LAMMPS distribution"_start_1 :ulb,b
   2.2 "Making LAMMPS"_start_2 :b
@@ -168,50 +121,14 @@ END_RST -->
   3.5 "Commands listed alphabetically"_cmd_5 :ule,b
 "Optional packages"_Packages.html :l
 "Accelerate performance"_Speed.html :l
-"How-to discussions"_Section_howto.html :l
-  6.1 "Restarting a simulation"_howto_1 :ulb,b
-  6.2 "2d simulations"_howto_2 :b
-  6.3 "CHARMM and AMBER force fields"_howto_3 :b
-  6.4 "Running multiple simulations from one input script"_howto_4 :b
-  6.5 "Multi-replica simulations"_howto_5 :b
-  6.6 "Granular models"_howto_6 :b
-  6.7 "TIP3P water model"_howto_7 :b
-  6.8 "TIP4P water model"_howto_8 :b
-  6.9 "SPC water model"_howto_9 :b
-  6.10 "Coupling LAMMPS to other codes"_howto_10 :b
-  6.11 "Visualizing LAMMPS snapshots"_howto_11 :b
-  6.12 "Triclinic (non-orthogonal) simulation boxes"_howto_12 :b
-  6.13 "NEMD simulations"_howto_13 :b
-  6.14 "Finite-size spherical and aspherical particles"_howto_14 :b
-  6.15 "Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_howto_15 :b
-  6.16 "Thermostatting, barostatting, and compute temperature"_howto_16 :b
-  6.17 "Walls"_howto_17 :b
-  6.18 "Elastic constants"_howto_18 :b
-  6.19 "Library interface to LAMMPS"_howto_19 :b
-  6.20 "Calculating thermal conductivity"_howto_20 :b
-  6.21 "Calculating viscosity"_howto_21 :b
-  6.22 "Calculating a diffusion coefficient"_howto_22 :b
-  6.23 "Using chunks to calculate system properties"_howto_23 :b
-  6.24 "Setting parameters for pppm/disp"_howto_24 :b
-  6.25 "Polarizable models"_howto_25 :b
-  6.26 "Adiabatic core/shell model"_howto_26 :b
-  6.27 "Drude induced dipoles"_howto_27 :ule,b
+"How-to discussions"_Howto.html :l
 "Example scripts"_Examples.html :l
 "Auxiliary tools"_Tools.html :l
 "Modify & extend LAMMPS"_Modify.html :l
 "Use Python with LAMMPS"_Python.html :l
 "Errors"_Errors.html :l
-"Future and history"_Section_history.html :l
-  13.1 "Coming attractions"_hist_1 :ulb,b
-  13.2 "Past versions"_hist_2 :ule,b
 :ole
 
-:link(intro_1,Section_intro.html#intro_1)
-:link(intro_2,Section_intro.html#intro_2)
-:link(intro_3,Section_intro.html#intro_3)
-:link(intro_4,Section_intro.html#intro_4)
-:link(intro_5,Section_intro.html#intro_5)
-
 :link(start_1,Section_start.html#start_1)
 :link(start_2,Section_start.html#start_2)
 :link(start_3,Section_start.html#start_3)
@@ -227,36 +144,6 @@ END_RST -->
 :link(cmd_4,Section_commands.html#cmd_4)
 :link(cmd_5,Section_commands.html#cmd_5)
 
-:link(howto_1,Section_howto.html#howto_1)
-:link(howto_2,Section_howto.html#howto_2)
-:link(howto_3,Section_howto.html#howto_3)
-:link(howto_4,Section_howto.html#howto_4)
-:link(howto_5,Section_howto.html#howto_5)
-:link(howto_6,Section_howto.html#howto_6)
-:link(howto_7,Section_howto.html#howto_7)
-:link(howto_8,Section_howto.html#howto_8)
-:link(howto_9,Section_howto.html#howto_9)
-:link(howto_10,Section_howto.html#howto_10)
-:link(howto_11,Section_howto.html#howto_11)
-:link(howto_12,Section_howto.html#howto_12)
-:link(howto_13,Section_howto.html#howto_13)
-:link(howto_14,Section_howto.html#howto_14)
-:link(howto_15,Section_howto.html#howto_15)
-:link(howto_16,Section_howto.html#howto_16)
-:link(howto_17,Section_howto.html#howto_17)
-:link(howto_18,Section_howto.html#howto_18)
-:link(howto_19,Section_howto.html#howto_19)
-:link(howto_20,Section_howto.html#howto_20)
-:link(howto_21,Section_howto.html#howto_21)
-:link(howto_22,Section_howto.html#howto_22)
-:link(howto_23,Section_howto.html#howto_23)
-:link(howto_24,Section_howto.html#howto_24)
-:link(howto_25,Section_howto.html#howto_25)
-:link(howto_26,Section_howto.html#howto_26)
-:link(howto_27,Section_howto.html#howto_27)
-
-:link(hist_1,Section_history.html#hist_1)
-:link(hist_2,Section_history.html#hist_2)
 <!-- END_HTML_ONLY -->
 
 </BODY>
diff --git a/doc/src/Manual_version.txt b/doc/src/Manual_version.txt
new file mode 100644
index 0000000000..db4301b6ea
--- /dev/null
+++ b/doc/src/Manual_version.txt
@@ -0,0 +1,33 @@
+"Higher level section"_Manual.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+What does a LAMMPS version mean: :h3
+
+The LAMMPS "version" is the date when it was released, such as 1 May
+2014. LAMMPS is updated continuously.  Whenever we fix a bug or add a
+feature, we release it in the next {patch} release, which are
+typically made every couple of weeks.  Info on patch releases are on
+"this website page"_http://lammps.sandia.gov/bug.html. Every few
+months, the latest patch release is subjected to more thorough testing
+and labeled as a {stable} version.
+
+Each version of LAMMPS contains all the features and bug-fixes up to
+and including its version date.
+
+The version date is printed to the screen and logfile every time you
+run LAMMPS. It is also in the file src/version.h and in the LAMMPS
+directory name created when you unpack a tarball.  And it is on the
+first page of the "manual"_Manual.html.
+
+If you browse the HTML doc pages on the LAMMPS WWW site, they always
+describe the most current patch release of LAMMPS. :ulb,l
+
+If you browse the HTML doc pages included in your tarball, they
+describe the version you have, which may be older. :l,ule
+
diff --git a/doc/src/Modify_body.txt b/doc/src/Modify_body.txt
index b1dc8130cd..a0627ebdda 100644
--- a/doc/src/Modify_body.txt
+++ b/doc/src/Modify_body.txt
@@ -14,10 +14,9 @@ Body particles can represent complex entities, such as surface meshes
 of discrete points, collections of sub-particles, deformable objects,
 etc.
 
-See "Section 6.14"_Section_howto.html#howto_14 of the manual for
-an overview of using body particles and the "body"_body.html doc page
-for details on the various body styles LAMMPS supports.  New styles
-can be created to add new kinds of body particles to LAMMPS.
+See the "Howto body"_Howto_body.html doc page for an overview of using
+body particles and the various body styles LAMMPS supports.  New
+styles can be created to add new kinds of body particles to LAMMPS.
 
 Body_nparticle.cpp is an example of a body particle that is treated as
 a rigid body containing N sub-particles.
diff --git a/doc/src/Modify_contribute.txt b/doc/src/Modify_contribute.txt
index 80795b5e20..9d47b08251 100644
--- a/doc/src/Modify_contribute.txt
+++ b/doc/src/Modify_contribute.txt
@@ -32,14 +32,14 @@ How quickly your contribution will be integrated depends largely on
 how much effort it will cause to integrate and test it, how much it
 requires changes to the core codebase, and of how much interest it is
 to the larger LAMMPS community.  Please see below for a checklist of
-typical requirements. Once you have prepared everything, see "this
-tutorial"_tutorial_github.html for instructions on how to submit your
-changes or new files through a GitHub pull request. If you prefer to
-submit patches or full files, you should first make certain, that your
-code works correctly with the latest patch-level version of LAMMPS and
-contains all bugfixes from it. Then create a gzipped tar file of all
-changed or added files or a corresponding patch file using 'diff -u'
-or 'diff -c' and compress it with gzip. Please only use gzip
+typical requirements. Once you have prepared everything, see the
+"Howto github"_Howto_github.html doc page for instructions on how to
+submit your changes or new files through a GitHub pull request. If you
+prefer to submit patches or full files, you should first make certain,
+that your code works correctly with the latest patch-level version of
+LAMMPS and contains all bugfixes from it. Then create a gzipped tar
+file of all changed or added files or a corresponding patch file using
+'diff -u' or 'diff -c' and compress it with gzip. Please only use gzip
 compression, as this works well on all platforms.
 
 If the new features/files are broadly useful we may add them as core
@@ -54,8 +54,9 @@ packages by typing "make package" in the LAMMPS src directory.
 
 Note that by providing us files to release, you are agreeing to make
 them open-source, i.e. we can release them under the terms of the GPL,
-used as a license for the rest of LAMMPS.  See "Section
-1.4"_Section_intro.html#intro_4 for details.
+used as a license for the rest of LAMMPS.  See the "Open
+source"_http://lammps.sandia.gov/open_source.html page on the LAMMPS
+website for details.
 
 With user packages and files, all we are really providing (aside from
 the fame and fortune that accompanies having your name in the source
diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt
index af18d097d9..543578054c 100644
--- a/doc/src/Packages_details.txt
+++ b/doc/src/Packages_details.txt
@@ -112,7 +112,7 @@ make machine :pre
 [Supporting info:]
 
 src/ASPHERE: filenames -> commands
-"Section 6.14"_Section_howto.html#howto_14
+"Howto spherical"_Howto_spherical.html
 "pair_style gayberne"_pair_gayberne.html
 "pair_style resquared"_pair_resquared.html
 "doc/PDF/pair_gayberne_extra.pdf"_PDF/pair_gayberne_extra.pdf
@@ -130,7 +130,8 @@ BODY package :link(BODY),h4
 
 Body-style particles with internal structure.  Computes,
 time-integration fixes, pair styles, as well as the body styles
-themselves.  See the "body"_body.html doc page for an overview.
+themselves.  See the "Howto body"_Howto_body.html doc page for an
+overview.
 
 [Install or un-install:]
 
@@ -143,7 +144,7 @@ make machine :pre
 [Supporting info:]
 
 src/BODY filenames -> commands
-"body"_body.html
+"Howto_body"_Howto_body.html
 "atom_style body"_atom_style.html
 "fix nve/body"_fix_nve_body.html
 "pair_style body"_pair_body.html
@@ -258,9 +259,9 @@ Compute and pair styles that implement the adiabatic core/shell model
 for polarizability.  The pair styles augment Born, Buckingham, and
 Lennard-Jones styles with core/shell capabilities.  The "compute
 temp/cs"_compute_temp_cs.html command calculates the temperature of a
-system with core/shell particles.  See "Section
-6.26"_Section_howto.html#howto_26 for an overview of how to use this
-package.
+system with core/shell particles.  See the "Howto
+coreshell"_Howto_coreshell.html doc page for an overview of how to use
+this package.
 
 [Author:] Hendrik Heenen (Technical U of Munich).
 
@@ -275,8 +276,8 @@ make machine :pre
 [Supporting info:]
 
 src/CORESHELL: filenames -> commands
-"Section 6.26"_Section_howto.html#howto_26
-"Section 6.25"_Section_howto.html#howto_25
+"Howto coreshell"_Howto_coreshell.html
+"Howto polarizable"_Howto_polarizable.html
 "compute temp/cs"_compute_temp_cs.html
 "pair_style born/coul/long/cs"_pair_cs.html
 "pair_style buck/coul/long/cs"_pair_cs.html
@@ -418,7 +419,7 @@ make machine :pre
 [Supporting info:]
 
 src/GRANULAR: filenames -> commands
-"Section 6.6"_Section_howto.html#howto_6,
+"Howto granular"_Howto_granular.html
 "fix pour"_fix_pour.html
 "fix wall/gran"_fix_wall_gran.html
 "pair_style gran/hooke"_pair_gran.html
@@ -625,9 +626,9 @@ make machine :pre
 src/KSPACE: filenames -> commands
 "kspace_style"_kspace_style.html
 "doc/PDF/kspace.pdf"_PDF/kspace.pdf
-"Section 6.7"_Section_howto.html#howto_7
-"Section 6.8"_Section_howto.html#howto_8
-"Section 6.9"_Section_howto.html#howto_9
+"Howto tip3p"_Howto_tip3p.html
+"Howto tip4p"_Howto_tip4p.html
+"Howto spc"_Howto_spc.html
 "pair_style coul"_pair_coul.html
 Pair Styles section of "Section 3.5"_Section_commands.html#cmd_5 with "long" or "msm" in pair style name
 examples/peptide
@@ -876,7 +877,7 @@ src/MOLECULE: filenames -> commands
 "improper_style"_improper_style.html
 "pair_style hbond/dreiding/lj"_pair_hbond_dreiding.html
 "pair_style lj/charmm/coul/charmm"_pair_charmm.html
-"Section 6.3"_Section_howto.html#howto_3
+"Howto bioFF"_Howto_bioFF.html
 examples/cmap
 examples/dreiding
 examples/micelle,
@@ -1114,10 +1115,10 @@ PYTHON package :link(PYTHON),h4
 
 A "python"_python.html command which allow you to execute Python code
 from a LAMMPS input script.  The code can be in a separate file or
-embedded in the input script itself.  See "Section
-11.2"_Section_python.html#py_2 for an overview of using Python from
-LAMMPS in this manner and the entire section for other ways to use
-LAMMPS and Python together.
+embedded in the input script itself.  See the "Python
+call"_Python_call.html doc page for an overview of using Python from
+LAMMPS in this manner and all the "Python"_Python.html doc pages for
+other ways to use LAMMPS and Python together.
 
 [Install or un-install:]
 
@@ -1138,7 +1139,7 @@ to Makefile.lammps) if the LAMMPS build fails.
 [Supporting info:]
 
 src/PYTHON: filenames -> commands
-"Section 11"_Section_python.html
+"Python call"_Python.html
 lib/python/README
 examples/python :ul
 
@@ -1228,8 +1229,8 @@ REPLICA package :link(REPLICA),h4
 [Contents:]
 
 A collection of multi-replica methods which can be used when running
-multiple LAMMPS simulations (replicas).  See "Section
-6.5"_Section_howto.html#howto_5 for an overview of how to run
+multiple LAMMPS simulations (replicas).  See the "Howto
+replica"_Howto_replica.html doc page for an overview of how to run
 multi-replica simulations in LAMMPS.  Methods in the package include
 nudged elastic band (NEB), parallel replica dynamics (PRD),
 temperature accelerated dynamics (TAD), parallel tempering, and a
@@ -1248,7 +1249,7 @@ make machine :pre
 [Supporting info:]
 
 src/REPLICA: filenames -> commands
-"Section 6.5"_Section_howto.html#howto_5
+"Howto replica"_Howto_replica.html
 "neb"_neb.html
 "prd"_prd.html
 "tad"_tad.html
@@ -1798,10 +1799,10 @@ USER-DRUDE package :link(USER-DRUDE),h4
 [Contents:]
 
 Fixes, pair styles, and a compute to simulate thermalized Drude
-oscillators as a model of polarization.  See "Section
-6.27"_Section_howto.html#howto_27 for an overview of how to use the
-package.  There are auxiliary tools for using this package in
-tools/drude.
+oscillators as a model of polarization.  See the "Howto
+drude"_Howto_drude.html and "Howto drude2"_Howto_drude2.html doc pages
+for an overview of how to use the package.  There are auxiliary tools
+for using this package in tools/drude.
 
 [Authors:] Alain Dequidt (U Blaise Pascal Clermont-Ferrand), Julien
 Devemy (CNRS), and Agilio Padua (U Blaise Pascal).
@@ -1817,8 +1818,9 @@ make machine :pre
 [Supporting info:]
 
 src/USER-DRUDE: filenames -> commands
-"Section 6.27"_Section_howto.html#howto_27
-"Section 6.25"_Section_howto.html#howto_25
+"Howto drude"_Howto_drude.html
+"Howto drude2"_Howto_drude2.html
+"Howto polarizable"_Howto_polarizable.html
 src/USER-DRUDE/README
 "fix drude"_fix_drude.html
 "fix drude/transform/*"_fix_drude_transform.html
@@ -2158,7 +2160,7 @@ make machine :pre
 
 src/USER-MANIFOLD: filenames -> commands
 src/USER-MANIFOLD/README
-"doc/manifolds"_manifolds.html
+"Howto manifold"_Howto_manifold.html
 "fix manifoldforce"_fix_manifoldforce.html
 "fix nve/manifold/rattle"_fix_nve_manifold_rattle.html
 "fix nvt/manifold/rattle"_fix_nvt_manifold_rattle.html
diff --git a/doc/src/Packages_standard.txt b/doc/src/Packages_standard.txt
index 095bf699a6..b2c06eebfd 100644
--- a/doc/src/Packages_standard.txt
+++ b/doc/src/Packages_standard.txt
@@ -31,15 +31,15 @@ int = internal library: provided with LAMMPS, but you may need to build it
 ext = external library: you will need to download and install it on your machine :ul
 
 Package, Description, Doc page, Example, Library
-"ASPHERE"_Packages_details.html#ASPHERE, aspherical particle models, "Section 6.6.14"_Section_howto.html#howto_14, ellipse, -
-"BODY"_Packages_details.html#BODY, body-style particles, "body"_body.html, body, -
+"ASPHERE"_Packages_details.html#ASPHERE, aspherical particle models, "Howto spherical"_Howto_spherical.html, ellipse, -
+"BODY"_Packages_details.html#BODY, body-style particles, "Howto body"_Howto_body.html, body, -
 "CLASS2"_Packages_details.html#CLASS2, class 2 force fields, "pair_style lj/class2"_pair_class2.html, -, -
 "COLLOID"_Packages_details.html#COLLOID, colloidal particles, "atom_style colloid"_atom_style.html, colloid, -
 "COMPRESS"_Packages_details.html#COMPRESS, I/O compression, "dump */gz"_dump.html, -, sys
-"CORESHELL"_Packages_details.html#CORESHELL, adiabatic core/shell model, "Section 6.6.25"_Section_howto.html#howto_25, coreshell, -
+"CORESHELL"_Packages_details.html#CORESHELL, adiabatic core/shell model, "Howto coreshell"_Howto_coreshell.html, coreshell, -
 "DIPOLE"_Packages_details.html#DIPOLE, point dipole particles, "pair_style dipole/cut"_pair_dipole.html, dipole, -
 "GPU"_Packages_details.html#GPU, GPU-enabled styles, "Section gpu"_Speed_gpu.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, int
-"GRANULAR"_Packages_details.html#GRANULAR, granular systems, "Section 6.6.6"_Section_howto.html#howto_6, pour, -
+"GRANULAR"_Packages_details.html#GRANULAR, granular systems, "Howto granular"_Howto_granular.html, pour, -
 "KIM"_Packages_details.html#KIM, OpenKIM wrapper, "pair_style kim"_pair_kim.html, kim, ext
 "KOKKOS"_Packages_details.html#KOKKOS, Kokkos-enabled styles, "Speed kokkos"_Speed_kokkos.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
 "KSPACE"_Packages_details.html#KSPACE, long-range Coulombic solvers, "kspace_style"_kspace_style.html, peptide, -
@@ -48,7 +48,7 @@ Package, Description, Doc page, Example, Library
 "MC"_Packages_details.html#MC, Monte Carlo options, "fix gcmc"_fix_gcmc.html, -, -
 "MEAM"_Packages_details.html#MEAM, modified EAM potential, "pair_style meam"_pair_meam.html, meam, int
 "MISC"_Packages_details.html#MISC, miscellanous single-file commands, -, -, -
-"MOLECULE"_Packages_details.html#MOLECULE, molecular system force fields, "Section 6.6.3"_Section_howto.html#howto_3, peptide, -
+"MOLECULE"_Packages_details.html#MOLECULE, molecular system force fields, "Howto bioFF"_Howto_bioFF.html, peptide, -
 "MPIIO"_Packages_details.html#MPIIO, MPI parallel I/O dump and restart, "dump"_dump.html, -, -
 "MSCG"_Packages_details.html#MSCG, multi-scale coarse-graining wrapper, "fix mscg"_fix_mscg.html, mscg, ext
 "OPT"_Packages_details.html#OPT, optimized pair styles, "Speed opt"_Speed_opt.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
@@ -57,7 +57,7 @@ Package, Description, Doc page, Example, Library
 "PYTHON"_Packages_details.html#PYTHON, embed Python code in an input script, "python"_python.html, python, sys
 "QEQ"_Packages_details.html#QEQ, QEq charge equilibration, "fix qeq"_fix_qeq.html, qeq, -
 "REAX"_Packages_details.html#REAX, ReaxFF potential (Fortran), "pair_style reax"_pair_reax.html, reax, int
-"REPLICA"_Packages_details.html#REPLICA, multi-replica methods, "Section 6.6.5"_Section_howto.html#howto_5, tad, -
+"REPLICA"_Packages_details.html#REPLICA, multi-replica methods, "Howto replica"_Howto_replica.html, tad, -
 "RIGID"_Packages_details.html#RIGID, rigid bodies and constraints, "fix rigid"_fix_rigid.html, rigid, -
 "SHOCK"_Packages_details.html#SHOCK, shock loading methods, "fix msst"_fix_msst.html, -, -
 "SNAP"_Packages_details.html#SNAP, quantum-fitted potential, "pair_style snap"_pair_snap.html, snap, -
diff --git a/doc/src/Packages_user.txt b/doc/src/Packages_user.txt
index 73c7fdb65d..0465296980 100644
--- a/doc/src/Packages_user.txt
+++ b/doc/src/Packages_user.txt
@@ -46,7 +46,7 @@ Package, Description, Doc page, Example, Library
 "USER-COLVARS"_Packages_details.html#USER-COLVARS, collective variables library, "fix colvars"_fix_colvars.html, USER/colvars, int
 "USER-DIFFRACTION"_Packages_details.html#USER-DIFFRACTION, virtual x-ray and electron diffraction,"compute xrd"_compute_xrd.html, USER/diffraction, -
 "USER-DPD"_Packages_details.html#USER-DPD, reactive dissipative particle dynamics, src/USER-DPD/README, USER/dpd, -
-"USER-DRUDE"_Packages_details.html#USER-DRUDE, Drude oscillators, "tutorial"_tutorial_drude.html, USER/drude, -
+"USER-DRUDE"_Packages_details.html#USER-DRUDE, Drude oscillators, "Howto drude"_Howto_drude.html, USER/drude, -
 "USER-EFF"_Packages_details.html#USER-EFF, electron force field,"pair_style eff/cut"_pair_eff.html, USER/eff, -
 "USER-FEP"_Packages_details.html#USER-FEP, free energy perturbation,"compute fep"_compute_fep.html, USER/fep, -
 "USER-H5MD"_Packages_details.html#USER-H5MD, dump output via HDF5,"dump h5md"_dump_h5md.html, -, ext
diff --git a/doc/src/Python_library.txt b/doc/src/Python_library.txt
index 4babbb746c..db16c39a47 100644
--- a/doc/src/Python_library.txt
+++ b/doc/src/Python_library.txt
@@ -21,8 +21,8 @@ from lammps import lammps :pre
 These are the methods defined by the lammps module.  If you look at
 the files src/library.cpp and src/library.h you will see they
 correspond one-to-one with calls you can make to the LAMMPS library
-from a C++ or C or Fortran program, and which are described in
-"Section 6.19"_Section_howto.html#howto_19 of the manual.
+from a C++ or C or Fortran program, and which are described on the
+"Howto library"_Howto_library.html doc page.
 
 The python/examples directory has Python scripts which show how Python
 can run LAMMPS, grab data, change it, and put it back into LAMMPS.
@@ -165,11 +165,11 @@ subscripting.  The one exception is that for a fix that calculates a
 global vector or array, a single double value from the vector or array
 is returned, indexed by I (vector) or I and J (array).  I,J are
 zero-based indices.  The I,J arguments can be left out if not needed.
-See "Section 6.15"_Section_howto.html#howto_15 of the manual for a
-discussion of global, per-atom, and local data, and of scalar, vector,
-and array data types.  See the doc pages for individual
-"computes"_compute.html and "fixes"_fix.html for a description of what
-they calculate and store.
+See the "Howto output"_Howto_output.html doc page for a discussion of
+global, per-atom, and local data, and of scalar, vector, and array
+data types.  See the doc pages for individual "computes"_compute.html
+and "fixes"_fix.html for a description of what they calculate and
+store.
 
 For extract_variable(), an "equal-style or atom-style
 variable"_variable.html is evaluated and its result returned.
diff --git a/doc/src/Python_pylammps.txt b/doc/src/Python_pylammps.txt
index ad5ed192ee..cdc8e2c086 100644
--- a/doc/src/Python_pylammps.txt
+++ b/doc/src/Python_pylammps.txt
@@ -10,5 +10,5 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 PyLammps interface :h3
 
 PyLammps is a Python wrapper class which can be created on its own or
-use an existing lammps Python object.  It has its own "PyLammps
-Tutorial"_tutorial_pylammps.html doc page.
+use an existing lammps Python object.  It has its own "Howto
+pylammps"_Howto_pylammps.html doc page.
diff --git a/doc/src/Section_history.txt b/doc/src/Section_history.txt
deleted file mode 100644
index 6bbd1e4d99..0000000000
--- a/doc/src/Section_history.txt
+++ /dev/null
@@ -1,135 +0,0 @@
-"Previous Section"_Errors.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Manual.html :c
-
-:link(lws,http://lammps.sandia.gov)
-:link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
-
-:line
-
-13. Future and history :h2
-
-This section lists features we plan to add to LAMMPS, features of
-previous versions of LAMMPS, and features of other parallel molecular
-dynamics codes our group has distributed.
-
-13.1 "Coming attractions"_#hist_1
-13.2 "Past versions"_#hist_2 :all(b)
-
-:line
-:line
-
-13.1 Coming attractions :h3,link(hist_1)
-
-As of summer 2016 we are using the "LAMMPS project issue tracker
-on GitHub"_https://github.com/lammps/lammps/issues for keeping
-track of suggested, planned or pending new features. This includes
-discussions of how to best implement them, or why they would be
-useful. Especially if a planned or proposed feature is non-trivial
-to add, e.g. because it requires changes to some of the core
-classes of LAMMPS, people planning to contribute a new feature to
-LAMMS are encouraged to submit an issue about their planned
-implementation this way in order to receive feedback from the
-LAMMPS core developers. They will provide suggestions about
-the validity of the proposed approach and possible improvements,
-pitfalls or alternatives.
-
-Please see some of the closed issues for examples of how to
-suggest code enhancements, submit proposed changes, or report
-possible bugs and how they are resolved.
-
-As an alternative to using GitHub, you may e-mail the
-"core developers"_http://lammps.sandia.gov/authors.html or send
-an e-mail to the "LAMMPS Mail list"_http://lammps.sandia.gov/mail.html
-if you want to have your suggestion added to the list.
-
-:line
-
-13.2 Past versions :h3,link(hist_2)
-
-LAMMPS development began in the mid 1990s under a cooperative research
-& development agreement (CRADA) between two DOE labs (Sandia and LLNL)
-and 3 companies (Cray, Bristol Myers Squibb, and Dupont). The goal was
-to develop a large-scale parallel classical MD code; the coding effort
-was led by Steve Plimpton at Sandia.
-
-After the CRADA ended, a final F77 version, LAMMPS 99, was
-released. As development of LAMMPS continued at Sandia, its memory
-management was converted to F90; a final F90 version was released as
-LAMMPS 2001.
-
-The current LAMMPS is a rewrite in C++ and was first publicly released
-as an open source code in 2004. It includes many new features beyond
-those in LAMMPS 99 or 2001. It also includes features from older
-parallel MD codes written at Sandia, namely ParaDyn, Warp, and
-GranFlow (see below).
-
-In late 2006 we began merging new capabilities into LAMMPS that were
-developed by Aidan Thompson at Sandia for his MD code GRASP, which has
-a parallel framework similar to LAMMPS. Most notably, these have
-included many-body potentials - Stillinger-Weber, Tersoff, ReaxFF -
-and the associated charge-equilibration routines needed for ReaxFF.
-
-The "History link"_http://lammps.sandia.gov/history.html on the
-LAMMPS WWW page gives a timeline of features added to the
-C++ open-source version of LAMMPS over the last several years.
-
-These older codes are available for download from the "LAMMPS WWW
-site"_lws, except for Warp & GranFlow which were primarily used
-internally.  A brief listing of their features is given here.
-
-LAMMPS 2001
-
-    F90 + MPI
-    dynamic memory
-    spatial-decomposition parallelism
-    NVE, NVT, NPT, NPH, rRESPA integrators
-    LJ and Coulombic pairwise force fields
-    all-atom, united-atom, bead-spring polymer force fields
-    CHARMM-compatible force fields
-    class 2 force fields
-    3d/2d Ewald & PPPM
-    various force and temperature constraints
-    SHAKE
-    Hessian-free truncated-Newton minimizer
-    user-defined diagnostics :ul
-
-LAMMPS 99
-
-    F77 + MPI
-    static memory allocation
-    spatial-decomposition parallelism
-    most of the LAMMPS 2001 features with a few exceptions
-    no 2d Ewald & PPPM
-    molecular force fields are missing a few CHARMM terms
-    no SHAKE :ul
-
-Warp
-
-    F90 + MPI
-    spatial-decomposition parallelism
-    embedded atom method (EAM) metal potentials + LJ
-    lattice and grain-boundary atom creation
-    NVE, NVT integrators
-    boundary conditions for applying shear stresses
-    temperature controls for actively sheared systems
-    per-atom energy and centro-symmetry computation and output :ul
-
-ParaDyn
-
-    F77 + MPI
-    atom- and force-decomposition parallelism
-    embedded atom method (EAM) metal potentials
-    lattice atom creation
-    NVE, NVT, NPT integrators
-    all serial DYNAMO features for controls and constraints :ul
-
-GranFlow
-
-    F90 + MPI
-    spatial-decomposition parallelism
-    frictional granular potentials
-    NVE integrator
-    boundary conditions for granular flow and packing and walls
-    particle insertion :ul
diff --git a/doc/src/Section_howto.txt b/doc/src/Section_howto.txt
deleted file mode 100644
index f929d3bdab..0000000000
--- a/doc/src/Section_howto.txt
+++ /dev/null
@@ -1,3011 +0,0 @@
-"Previous Section"_Speed.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Examples.html :c
-
-:link(lws,http://lammps.sandia.gov)
-:link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
-
-:line
-
-6. How-to discussions :h2
-
-This section describes how to perform common tasks using LAMMPS.
-
-6.1 "Restarting a simulation"_#howto_1
-6.2 "2d simulations"_#howto_2
-6.3 "CHARMM, AMBER, and DREIDING force fields"_#howto_3
-6.4 "Running multiple simulations from one input script"_#howto_4
-6.5 "Multi-replica simulations"_#howto_5
-6.6 "Granular models"_#howto_6
-6.7 "TIP3P water model"_#howto_7
-6.8 "TIP4P water model"_#howto_8
-6.9 "SPC water model"_#howto_9
-6.10 "Coupling LAMMPS to other codes"_#howto_10
-6.11 "Visualizing LAMMPS snapshots"_#howto_11
-6.12 "Triclinic (non-orthogonal) simulation boxes"_#howto_12
-6.13 "NEMD simulations"_#howto_13
-6.14 "Finite-size spherical and aspherical particles"_#howto_14
-6.15 "Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_#howto_15
-6.16 "Thermostatting, barostatting and computing temperature"_#howto_16
-6.17 "Walls"_#howto_17
-6.18 "Elastic constants"_#howto_18
-6.19 "Library interface to LAMMPS"_#howto_19
-6.20 "Calculating thermal conductivity"_#howto_20
-6.21 "Calculating viscosity"_#howto_21
-6.22 "Calculating a diffusion coefficient"_#howto_22
-6.23 "Using chunks to calculate system properties"_#howto_23
-6.24 "Setting parameters for the kspace_style pppm/disp command"_#howto_24
-6.25 "Polarizable models"_#howto_25
-6.26 "Adiabatic core/shell model"_#howto_26
-6.27 "Drude induced dipoles"_#howto_27
-6.28 "Magnetic spins"_#howto_28 :all(b)
-
-The example input scripts included in the LAMMPS distribution and
-highlighted on the "Examples"_Examples.html doc page also show how to
-setup and run various kinds of simulations.
-
-:line
-:line
-
-6.1 Restarting a simulation :link(howto_1),h4
-
-There are 3 ways to continue a long LAMMPS simulation.  Multiple
-"run"_run.html commands can be used in the same input script.  Each
-run will continue from where the previous run left off.  Or binary
-restart files can be saved to disk using the "restart"_restart.html
-command.  At a later time, these binary files can be read via a
-"read_restart"_read_restart.html command in a new script.  Or they can
-be converted to text data files using the "-r command-line
-switch"_Section_start.html#start_6 and read by a
-"read_data"_read_data.html command in a new script.
-
-Here we give examples of 2 scripts that read either a binary restart
-file or a converted data file and then issue a new run command to
-continue where the previous run left off.  They illustrate what
-settings must be made in the new script.  Details are discussed in the
-documentation for the "read_restart"_read_restart.html and
-"read_data"_read_data.html commands.
-
-Look at the {in.chain} input script provided in the {bench} directory
-of the LAMMPS distribution to see the original script that these 2
-scripts are based on.  If that script had the line
-
-restart         50 tmp.restart :pre
-
-added to it, it would produce 2 binary restart files (tmp.restart.50
-and tmp.restart.100) as it ran.
-
-This script could be used to read the 1st restart file and re-run the
-last 50 timesteps:
-
-read_restart    tmp.restart.50 :pre
-
-neighbor        0.4 bin
-neigh_modify    every 1 delay 1 :pre
-
-fix             1 all nve
-fix             2 all langevin 1.0 1.0 10.0 904297 :pre
-
-timestep        0.012 :pre
-
-run             50 :pre
-
-Note that the following commands do not need to be repeated because
-their settings are included in the restart file: {units, atom_style,
-special_bonds, pair_style, bond_style}.  However these commands do
-need to be used, since their settings are not in the restart file:
-{neighbor, fix, timestep}.
-
-If you actually use this script to perform a restarted run, you will
-notice that the thermodynamic data match at step 50 (if you also put a
-"thermo 50" command in the original script), but do not match at step
-100.  This is because the "fix langevin"_fix_langevin.html command
-uses random numbers in a way that does not allow for perfect restarts.
-
-As an alternate approach, the restart file could be converted to a data
-file as follows:
-
-lmp_g++ -r tmp.restart.50 tmp.restart.data :pre
-
-Then, this script could be used to re-run the last 50 steps:
-
-units           lj
-atom_style      bond
-pair_style      lj/cut 1.12
-pair_modify     shift yes
-bond_style      fene
-special_bonds   0.0 1.0 1.0 :pre
-
-read_data       tmp.restart.data :pre
-
-neighbor        0.4 bin
-neigh_modify    every 1 delay 1 :pre
-
-fix             1 all nve
-fix             2 all langevin 1.0 1.0 10.0 904297 :pre
-
-timestep        0.012 :pre
-
-reset_timestep  50
-run             50 :pre
-
-Note that nearly all the settings specified in the original {in.chain}
-script must be repeated, except the {pair_coeff} and {bond_coeff}
-commands since the new data file lists the force field coefficients.
-Also, the "reset_timestep"_reset_timestep.html command is used to tell
-LAMMPS the current timestep.  This value is stored in restart files,
-but not in data files.
-
-:line
-
-6.2 2d simulations :link(howto_2),h4
-
-Use the "dimension"_dimension.html command to specify a 2d simulation.
-
-Make the simulation box periodic in z via the "boundary"_boundary.html
-command.  This is the default.
-
-If using the "create box"_create_box.html command to define a
-simulation box, set the z dimensions narrow, but finite, so that the
-create_atoms command will tile the 3d simulation box with a single z
-plane of atoms - e.g.
-
-"create box"_create_box.html 1 -10 10 -10 10 -0.25 0.25 :pre
-
-If using the "read data"_read_data.html command to read in a file of
-atom coordinates, set the "zlo zhi" values to be finite but narrow,
-similar to the create_box command settings just described.  For each
-atom in the file, assign a z coordinate so it falls inside the
-z-boundaries of the box - e.g. 0.0.
-
-Use the "fix enforce2d"_fix_enforce2d.html command as the last
-defined fix to insure that the z-components of velocities and forces
-are zeroed out every timestep.  The reason to make it the last fix is
-so that any forces induced by other fixes will be zeroed out.
-
-Many of the example input scripts included in the LAMMPS distribution
-are for 2d models.
-
-NOTE: Some models in LAMMPS treat particles as finite-size spheres, as
-opposed to point particles.  See the "atom_style
-sphere"_atom_style.html and "fix nve/sphere"_fix_nve_sphere.html
-commands for details.  By default, for 2d simulations, such particles
-will still be modeled as 3d spheres, not 2d discs (circles), meaning
-their moment of inertia will be that of a sphere.  If you wish to
-model them as 2d discs, see the "set density/disc"_set.html command
-and the {disc} option for the "fix nve/sphere"_fix_nve_sphere.html,
-"fix nvt/sphere"_fix_nvt_sphere.html, "fix
-nph/sphere"_fix_nph_sphere.html, "fix npt/sphere"_fix_npt_sphere.html
-commands.
-
-:line
-
-6.3 CHARMM, AMBER, and DREIDING force fields :link(howto_3),h4
-
-A force field has 2 parts: the formulas that define it and the
-coefficients used for a particular system.  Here we only discuss
-formulas implemented in LAMMPS that correspond to formulas commonly
-used in the CHARMM, AMBER, and DREIDING force fields.  Setting
-coefficients is done in the input data file via the
-"read_data"_read_data.html command or in the input script with
-commands like "pair_coeff"_pair_coeff.html or
-"bond_coeff"_bond_coeff.html.  See the "Tools"_Tools.html doc page for
-additional tools that can use CHARMM or AMBER to assign force field
-coefficients and convert their output into LAMMPS input.
-
-See "(MacKerell)"_#howto-MacKerell for a description of the CHARMM force
-field.  See "(Cornell)"_#howto-Cornell for a description of the AMBER force
-field.
-
-:link(charmm,http://www.scripps.edu/brooks)
-:link(amber,http://amber.scripps.edu)
-
-These style choices compute force field formulas that are consistent
-with common options in CHARMM or AMBER.  See each command's
-documentation for the formula it computes.
-
-"bond_style"_bond_harmonic.html harmonic
-"angle_style"_angle_charmm.html charmm
-"dihedral_style"_dihedral_charmm.html charmmfsh
-"dihedral_style"_dihedral_charmm.html charmm
-"pair_style"_pair_charmm.html lj/charmmfsw/coul/charmmfsh
-"pair_style"_pair_charmm.html lj/charmmfsw/coul/long
-"pair_style"_pair_charmm.html lj/charmm/coul/charmm
-"pair_style"_pair_charmm.html lj/charmm/coul/charmm/implicit
-"pair_style"_pair_charmm.html lj/charmm/coul/long :ul
-
-"special_bonds"_special_bonds.html charmm
-"special_bonds"_special_bonds.html amber :ul
-
-NOTE: For CHARMM, newer {charmmfsw} or {charmmfsh} styles were
-released in March 2017.  We recommend they be used instead of the
-older {charmm} styles.  See discussion of the differences on the "pair
-charmm"_pair_charmm.html and "dihedral charmm"_dihedral_charmm.html
-doc pages.
-
-DREIDING is a generic force field developed by the "Goddard
-group"_http://www.wag.caltech.edu at Caltech and is useful for
-predicting structures and dynamics of organic, biological and
-main-group inorganic molecules. The philosophy in DREIDING is to use
-general force constants and geometry parameters based on simple
-hybridization considerations, rather than individual force constants
-and geometric parameters that depend on the particular combinations of
-atoms involved in the bond, angle, or torsion terms. DREIDING has an
-"explicit hydrogen bond term"_pair_hbond_dreiding.html to describe
-interactions involving a hydrogen atom on very electronegative atoms
-(N, O, F).
-
-See "(Mayo)"_#howto-Mayo for a description of the DREIDING force field
-
-These style choices compute force field formulas that are consistent
-with the DREIDING force field.  See each command's
-documentation for the formula it computes.
-
-"bond_style"_bond_harmonic.html harmonic
-"bond_style"_bond_morse.html morse :ul
-
-"angle_style"_angle_harmonic.html harmonic
-"angle_style"_angle_cosine.html cosine
-"angle_style"_angle_cosine_periodic.html cosine/periodic :ul
-
-"dihedral_style"_dihedral_charmm.html charmm
-"improper_style"_improper_umbrella.html umbrella :ul
-
-"pair_style"_pair_buck.html buck
-"pair_style"_pair_buck.html buck/coul/cut
-"pair_style"_pair_buck.html buck/coul/long
-"pair_style"_pair_lj.html lj/cut
-"pair_style"_pair_lj.html lj/cut/coul/cut
-"pair_style"_pair_lj.html lj/cut/coul/long :ul
-
-"pair_style"_pair_hbond_dreiding.html hbond/dreiding/lj
-"pair_style"_pair_hbond_dreiding.html hbond/dreiding/morse :ul
-
-"special_bonds"_special_bonds.html dreiding :ul
-
-:line
-
-6.4 Running multiple simulations from one input script :link(howto_4),h4
-
-This can be done in several ways.  See the documentation for
-individual commands for more details on how these examples work.
-
-If "multiple simulations" means continue a previous simulation for
-more timesteps, then you simply use the "run"_run.html command
-multiple times.  For example, this script
-
-units lj
-atom_style atomic
-read_data data.lj
-run 10000
-run 10000
-run 10000
-run 10000
-run 10000 :pre
-
-would run 5 successive simulations of the same system for a total of
-50,000 timesteps.
-
-If you wish to run totally different simulations, one after the other,
-the "clear"_clear.html command can be used in between them to
-re-initialize LAMMPS.  For example, this script
-
-units lj
-atom_style atomic
-read_data data.lj
-run 10000
-clear
-units lj
-atom_style atomic
-read_data data.lj.new
-run 10000 :pre
-
-would run 2 independent simulations, one after the other.
-
-For large numbers of independent simulations, you can use
-"variables"_variable.html and the "next"_next.html and
-"jump"_jump.html commands to loop over the same input script
-multiple times with different settings.  For example, this
-script, named in.polymer
-
-variable d index run1 run2 run3 run4 run5 run6 run7 run8
-shell cd $d
-read_data data.polymer
-run 10000
-shell cd ..
-clear
-next d
-jump in.polymer :pre
-
-would run 8 simulations in different directories, using a data.polymer
-file in each directory.  The same concept could be used to run the
-same system at 8 different temperatures, using a temperature variable
-and storing the output in different log and dump files, for example
-
-variable a loop 8
-variable t index 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15
-log log.$a
-read data.polymer
-velocity all create $t 352839
-fix 1 all nvt $t $t 100.0
-dump 1 all atom 1000 dump.$a
-run 100000
-clear
-next t
-next a
-jump in.polymer :pre
-
-All of the above examples work whether you are running on 1 or
-multiple processors, but assumed you are running LAMMPS on a single
-partition of processors.  LAMMPS can be run on multiple partitions via
-the "-partition" command-line switch as described in "this
-section"_Section_start.html#start_6 of the manual.
-
-In the last 2 examples, if LAMMPS were run on 3 partitions, the same
-scripts could be used if the "index" and "loop" variables were
-replaced with {universe}-style variables, as described in the
-"variable"_variable.html command.  Also, the "next t" and "next a"
-commands would need to be replaced with a single "next a t" command.
-With these modifications, the 8 simulations of each script would run
-on the 3 partitions one after the other until all were finished.
-Initially, 3 simulations would be started simultaneously, one on each
-partition.  When one finished, that partition would then start
-the 4th simulation, and so forth, until all 8 were completed.
-
-:line
-
-6.5 Multi-replica simulations :link(howto_5),h4
-
-Several commands in LAMMPS run mutli-replica simulations, meaning
-that multiple instances (replicas) of your simulation are run
-simultaneously, with small amounts of data exchanged between replicas
-periodically.
-
-These are the relevant commands:
-
-"neb"_neb.html for nudged elastic band calculations
-"prd"_prd.html for parallel replica dynamics
-"tad"_tad.html for temperature accelerated dynamics
-"temper"_temper.html for parallel tempering
-"fix pimd"_fix_pimd.html for path-integral molecular dynamics (PIMD) :ul
-
-NEB is a method for finding transition states and barrier energies.
-PRD and TAD are methods for performing accelerated dynamics to find
-and perform infrequent events.  Parallel tempering or replica exchange
-runs different replicas at a series of temperature to facilitate
-rare-event sampling.
-
-These commands can only be used if LAMMPS was built with the REPLICA
-package.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info on packages.
-
-PIMD runs different replicas whose individual particles are coupled
-together by springs to model a system or ring-polymers.
-
-This commands can only be used if LAMMPS was built with the USER-MISC
-package.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info on packages.
-
-In all these cases, you must run with one or more processors per
-replica.  The processors assigned to each replica are determined at
-run-time by using the "-partition command-line
-switch"_Section_start.html#start_6 to launch LAMMPS on multiple
-partitions, which in this context are the same as replicas.  E.g.
-these commands:
-
-mpirun -np 16 lmp_linux -partition 8x2 -in in.temper
-mpirun -np 8 lmp_linux -partition 8x1 -in in.neb :pre
-
-would each run 8 replicas, on either 16 or 8 processors.  Note the use
-of the "-in command-line switch"_Section_start.html#start_6 to specify
-the input script which is required when running in multi-replica mode.
-
-Also note that with MPI installed on a machine (e.g. your desktop),
-you can run on more (virtual) processors than you have physical
-processors.  Thus the above commands could be run on a
-single-processor (or few-processor) desktop so that you can run
-a multi-replica simulation on more replicas than you have
-physical processors.
-
-:line
-
-6.6 Granular models :link(howto_6),h4
-
-Granular system are composed of spherical particles with a diameter,
-as opposed to point particles.  This means they have an angular
-velocity and torque can be imparted to them to cause them to rotate.
-
-To run a simulation of a granular model, you will want to use
-the following commands:
-
-"atom_style sphere"_atom_style.html
-"fix nve/sphere"_fix_nve_sphere.html
-"fix gravity"_fix_gravity.html :ul
-
-This compute
-
-"compute erotate/sphere"_compute_erotate_sphere.html :ul
-
-calculates rotational kinetic energy which can be "output with
-thermodynamic info"_Section_howto.html#howto_15.
-
-Use one of these 3 pair potentials, which compute forces and torques
-between interacting pairs of particles:
-
-"pair_style"_pair_style.html gran/history
-"pair_style"_pair_style.html gran/no_history
-"pair_style"_pair_style.html gran/hertzian :ul
-
-These commands implement fix options specific to granular systems:
-
-"fix freeze"_fix_freeze.html
-"fix pour"_fix_pour.html
-"fix viscous"_fix_viscous.html
-"fix wall/gran"_fix_wall_gran.html :ul
-
-The fix style {freeze} zeroes both the force and torque of frozen
-atoms, and should be used for granular system instead of the fix style
-{setforce}.
-
-For computational efficiency, you can eliminate needless pairwise
-computations between frozen atoms by using this command:
-
-"neigh_modify"_neigh_modify.html exclude :ul
-
-NOTE: By default, for 2d systems, granular particles are still modeled
-as 3d spheres, not 2d discs (circles), meaning their moment of inertia
-will be the same as in 3d.  If you wish to model granular particles in
-2d as 2d discs, see the note on this topic in "Section
-6.2"_Section_howto.html#howto_2, where 2d simulations are discussed.
-
-:line
-
-6.7 TIP3P water model :link(howto_7),h4
-
-The TIP3P water model as implemented in CHARMM
-"(MacKerell)"_#howto-MacKerell specifies a 3-site rigid water molecule with
-charges and Lennard-Jones parameters assigned to each of the 3 atoms.
-In LAMMPS the "fix shake"_fix_shake.html command can be used to hold
-the two O-H bonds and the H-O-H angle rigid.  A bond style of
-{harmonic} and an angle style of {harmonic} or {charmm} should also be
-used.
-
-These are the additional parameters (in real units) to set for O and H
-atoms and the water molecule to run a rigid TIP3P-CHARMM model with a
-cutoff.  The K values can be used if a flexible TIP3P model (without
-fix shake) is desired.  If the LJ epsilon and sigma for HH and OH are
-set to 0.0, it corresponds to the original 1983 TIP3P model
-"(Jorgensen)"_#Jorgensen1.
-
-O mass = 15.9994
-H mass = 1.008
-O charge = -0.834
-H charge = 0.417
-LJ epsilon of OO = 0.1521
-LJ sigma of OO = 3.1507
-LJ epsilon of HH = 0.0460
-LJ sigma of HH = 0.4000
-LJ epsilon of OH = 0.0836
-LJ sigma of OH = 1.7753
-K of OH bond = 450
-r0 of OH bond = 0.9572
-K of HOH angle = 55
-theta of HOH angle = 104.52 :all(b),p
-
-These are the parameters to use for TIP3P with a long-range Coulombic
-solver (e.g. Ewald or PPPM in LAMMPS), see "(Price)"_#Price1 for
-details:
-
-O mass = 15.9994
-H mass = 1.008
-O charge = -0.830
-H charge = 0.415
-LJ epsilon of OO = 0.102
-LJ sigma of OO = 3.188
-LJ epsilon, sigma of OH, HH = 0.0
-K of OH bond = 450
-r0 of OH bond = 0.9572
-K of HOH angle = 55
-theta of HOH angle = 104.52 :all(b),p
-
-Wikipedia also has a nice article on "water
-models"_http://en.wikipedia.org/wiki/Water_model.
-
-:line
-
-6.8 TIP4P water model :link(howto_8),h4
-
-The four-point TIP4P rigid water model extends the traditional
-three-point TIP3P model by adding an additional site, usually
-massless, where the charge associated with the oxygen atom is placed.
-This site M is located at a fixed distance away from the oxygen along
-the bisector of the HOH bond angle.  A bond style of {harmonic} and an
-angle style of {harmonic} or {charmm} should also be used.
-
-A TIP4P model is run with LAMMPS using either this command
-for a cutoff model:
-
-"pair_style lj/cut/tip4p/cut"_pair_lj.html
-
-or these two commands for a long-range model:
-
-"pair_style lj/cut/tip4p/long"_pair_lj.html
-"kspace_style pppm/tip4p"_kspace_style.html :ul
-
-For both models, the bond lengths and bond angles should be held fixed
-using the "fix shake"_fix_shake.html command.
-
-These are the additional parameters (in real units) to set for O and H
-atoms and the water molecule to run a rigid TIP4P model with a cutoff
-"(Jorgensen)"_#Jorgensen1.  Note that the OM distance is specified in
-the "pair_style"_pair_style.html command, not as part of the pair
-coefficients.
-
-O mass = 15.9994
-H mass = 1.008
-O charge = -1.040
-H charge = 0.520
-r0 of OH bond = 0.9572
-theta of HOH angle = 104.52
-OM distance = 0.15
-LJ epsilon of O-O = 0.1550
-LJ sigma of O-O = 3.1536
-LJ epsilon, sigma of OH, HH = 0.0
-Coulombic cutoff = 8.5 :all(b),p
-
-For the TIP4/Ice model (J Chem Phys, 122, 234511 (2005);
-http://dx.doi.org/10.1063/1.1931662) these values can be used:
-
-O mass = 15.9994
-H mass =  1.008
-O charge = -1.1794
-H charge =  0.5897
-r0 of OH bond = 0.9572
-theta of HOH angle = 104.52
-OM distance = 0.1577
-LJ epsilon of O-O = 0.21084
-LJ sigma of O-O = 3.1668
-LJ epsilon, sigma of OH, HH = 0.0
-Coulombic cutoff = 8.5 :all(b),p
-
-For the TIP4P/2005 model (J Chem Phys, 123, 234505 (2005);
-http://dx.doi.org/10.1063/1.2121687), these values can be used:
-
-O mass = 15.9994
-H mass =  1.008
-O charge = -1.1128
-H charge = 0.5564
-r0 of OH bond = 0.9572
-theta of HOH angle = 104.52
-OM distance = 0.1546
-LJ epsilon of O-O = 0.1852
-LJ sigma of O-O = 3.1589
-LJ epsilon, sigma of OH, HH = 0.0
-Coulombic cutoff = 8.5 :all(b),p
-
-These are the parameters to use for TIP4P with a long-range Coulombic
-solver (e.g. Ewald or PPPM in LAMMPS):
-
-O mass = 15.9994
-H mass = 1.008
-O charge = -1.0484
-H charge = 0.5242
-r0 of OH bond = 0.9572
-theta of HOH angle = 104.52
-OM distance = 0.1250
-LJ epsilon of O-O = 0.16275
-LJ sigma of O-O = 3.16435
-LJ epsilon, sigma of OH, HH = 0.0 :all(b),p
-
-Note that the when using the TIP4P pair style, the neighbor list
-cutoff for Coulomb interactions is effectively extended by a distance
-2 * (OM distance), to account for the offset distance of the
-fictitious charges on O atoms in water molecules.  Thus it is
-typically best in an efficiency sense to use a LJ cutoff >= Coulomb
-cutoff + 2*(OM distance), to shrink the size of the neighbor list.
-This leads to slightly larger cost for the long-range calculation, so
-you can test the trade-off for your model.  The OM distance and the LJ
-and Coulombic cutoffs are set in the "pair_style
-lj/cut/tip4p/long"_pair_lj.html command.
-
-Wikipedia also has a nice article on "water
-models"_http://en.wikipedia.org/wiki/Water_model.
-
-:line
-
-6.9 SPC water model :link(howto_9),h4
-
-The SPC water model specifies a 3-site rigid water molecule with
-charges and Lennard-Jones parameters assigned to each of the 3 atoms.
-In LAMMPS the "fix shake"_fix_shake.html command can be used to hold
-the two O-H bonds and the H-O-H angle rigid.  A bond style of
-{harmonic} and an angle style of {harmonic} or {charmm} should also be
-used.
-
-These are the additional parameters (in real units) to set for O and H
-atoms and the water molecule to run a rigid SPC model.
-
-O mass = 15.9994
-H mass = 1.008
-O charge = -0.820
-H charge = 0.410
-LJ epsilon of OO = 0.1553
-LJ sigma of OO = 3.166
-LJ epsilon, sigma of OH, HH = 0.0
-r0 of OH bond = 1.0
-theta of HOH angle = 109.47 :all(b),p
-
-Note that as originally proposed, the SPC model was run with a 9
-Angstrom cutoff for both LJ and Coulommbic terms.  It can also be used
-with long-range Coulombics (Ewald or PPPM in LAMMPS), without changing
-any of the parameters above, though it becomes a different model in
-that mode of usage.
-
-The SPC/E (extended) water model is the same, except
-the partial charge assignments change:
-
-O charge = -0.8476
-H charge = 0.4238 :all(b),p
-
-See the "(Berendsen)"_#howto-Berendsen reference for more details on both
-the SPC and SPC/E models.
-
-Wikipedia also has a nice article on "water
-models"_http://en.wikipedia.org/wiki/Water_model.
-
-:line
-
-6.10 Coupling LAMMPS to other codes :link(howto_10),h4
-
-LAMMPS is designed to allow it to be coupled to other codes.  For
-example, a quantum mechanics code might compute forces on a subset of
-atoms and pass those forces to LAMMPS.  Or a continuum finite element
-(FE) simulation might use atom positions as boundary conditions on FE
-nodal points, compute a FE solution, and return interpolated forces on
-MD atoms.
-
-LAMMPS can be coupled to other codes in at least 3 ways.  Each has
-advantages and disadvantages, which you'll have to think about in the
-context of your application.
-
-(1) Define a new "fix"_fix.html command that calls the other code.  In
-this scenario, LAMMPS is the driver code.  During its timestepping,
-the fix is invoked, and can make library calls to the other code,
-which has been linked to LAMMPS as a library.  This is the way the
-"POEMS"_poems package that performs constrained rigid-body motion on
-groups of atoms is hooked to LAMMPS.  See the "fix
-poems"_fix_poems.html command for more details.  See the
-"Modify"_Modify.html doc page for info on how to add a new fix to
-LAMMPS.
-
-:link(poems,http://www.rpi.edu/~anderk5/lab)
-
-(2) Define a new LAMMPS command that calls the other code.  This is
-conceptually similar to method (1), but in this case LAMMPS and the
-other code are on a more equal footing.  Note that now the other code
-is not called during the timestepping of a LAMMPS run, but between
-runs.  The LAMMPS input script can be used to alternate LAMMPS runs
-with calls to the other code, invoked via the new command.  The
-"run"_run.html command facilitates this with its {every} option, which
-makes it easy to run a few steps, invoke the command, run a few steps,
-invoke the command, etc.
-
-In this scenario, the other code can be called as a library, as in
-(1), or it could be a stand-alone code, invoked by a system() call
-made by the command (assuming your parallel machine allows one or more
-processors to start up another program).  In the latter case the
-stand-alone code could communicate with LAMMPS thru files that the
-command writes and reads.
-
-See the "Modify"_Modify.html doc page for how to add a new command to
-LAMMPS.
-
-(3) Use LAMMPS as a library called by another code.  In this case the
-other code is the driver and calls LAMMPS as needed.  Or a wrapper
-code could link and call both LAMMPS and another code as libraries.
-Again, the "run"_run.html command has options that allow it to be
-invoked with minimal overhead (no setup or clean-up) if you wish to do
-multiple short runs, driven by another program.
-
-Examples of driver codes that call LAMMPS as a library are included in
-the examples/COUPLE directory of the LAMMPS distribution; see
-examples/COUPLE/README for more details:
-
-simple: simple driver programs in C++ and C which invoke LAMMPS as a
-library :ulb,l
-
-lammps_quest: coupling of LAMMPS and "Quest"_quest, to run classical
-MD with quantum forces calculated by a density functional code :l
-
-lammps_spparks: coupling of LAMMPS and "SPPARKS"_spparks, to couple
-a kinetic Monte Carlo model for grain growth using MD to calculate
-strain induced across grain boundaries :l
-:ule
-
-:link(quest,http://dft.sandia.gov/Quest)
-:link(spparks,http://www.sandia.gov/~sjplimp/spparks.html)
-
-"This section"_Section_start.html#start_5 of the documentation
-describes how to build LAMMPS as a library.  Once this is done, you
-can interface with LAMMPS either via C++, C, Fortran, or Python (or
-any other language that supports a vanilla C-like interface).  For
-example, from C++ you could create one (or more) "instances" of
-LAMMPS, pass it an input script to process, or execute individual
-commands, all by invoking the correct class methods in LAMMPS.  From C
-or Fortran you can make function calls to do the same things.  See the
-"Python"_Python.html doc page for a description of the Python wrapper
-provided with LAMMPS that operates through the LAMMPS library
-interface.
-
-The files src/library.cpp and library.h contain the C-style interface
-to LAMMPS.  See "Section 6.19"_Section_howto.html#howto_19 of the
-manual for a description of the interface and how to extend it for
-your needs.
-
-Note that the lammps_open() function that creates an instance of
-LAMMPS takes an MPI communicator as an argument.  This means that
-instance of LAMMPS will run on the set of processors in the
-communicator.  Thus the calling code can run LAMMPS on all or a subset
-of processors.  For example, a wrapper script might decide to
-alternate between LAMMPS and another code, allowing them both to run
-on all the processors.  Or it might allocate half the processors to
-LAMMPS and half to the other code and run both codes simultaneously
-before syncing them up periodically.  Or it might instantiate multiple
-instances of LAMMPS to perform different calculations.
-
-:line
-
-6.11 Visualizing LAMMPS snapshots :link(howto_11),h4
-
-LAMMPS itself does not do visualization, but snapshots from LAMMPS
-simulations can be visualized (and analyzed) in a variety of ways.
-
-LAMMPS snapshots are created by the "dump"_dump.html command which can
-create files in several formats. The native LAMMPS dump format is a
-text file (see "dump atom" or "dump custom") which can be visualized
-by several popular visualization tools. The "dump
-image"_dump_image.html and "dump movie"_dump_image.html styles can
-output internally rendered images and convert a sequence of them to a
-movie during the MD run.  Several programs included with LAMMPS as
-auxiliary tools can convert between LAMMPS format files and other
-formats.  See the "Tools"_Tools.html doc page for details.
-
-A Python-based toolkit distributed by our group can read native LAMMPS
-dump files, including custom dump files with additional columns of
-user-specified atom information, and convert them to various formats
-or pipe them into visualization software directly.  See the "Pizza.py
-WWW site"_pizza for details.  Specifically, Pizza.py can convert
-LAMMPS dump files into PDB, XYZ, "Ensight"_ensight, and VTK formats.
-Pizza.py can pipe LAMMPS dump files directly into the Raster3d and
-RasMol visualization programs.  Pizza.py has tools that do interactive
-3d OpenGL visualization and one that creates SVG images of dump file
-snapshots.
-
-:link(pizza,http://www.sandia.gov/~sjplimp/pizza.html)
-:link(ensight,http://www.ensight.com)
-:link(atomeye,http://mt.seas.upenn.edu/Archive/Graphics/A)
-
-:line
-
-6.12 Triclinic (non-orthogonal) simulation boxes :link(howto_12),h4
-
-By default, LAMMPS uses an orthogonal simulation box to encompass the
-particles.  The "boundary"_boundary.html command sets the boundary
-conditions of the box (periodic, non-periodic, etc).  The orthogonal
-box has its "origin" at (xlo,ylo,zlo) and is defined by 3 edge vectors
-starting from the origin given by [a] = (xhi-xlo,0,0); [b] =
-(0,yhi-ylo,0); [c] = (0,0,zhi-zlo).  The 6 parameters
-(xlo,xhi,ylo,yhi,zlo,zhi) are defined at the time the simulation box
-is created, e.g. by the "create_box"_create_box.html or
-"read_data"_read_data.html or "read_restart"_read_restart.html
-commands.  Additionally, LAMMPS defines box size parameters lx,ly,lz
-where lx = xhi-xlo, and similarly in the y and z dimensions.  The 6
-parameters, as well as lx,ly,lz, can be output via the "thermo_style
-custom"_thermo_style.html command.
-
-LAMMPS also allows simulations to be performed in triclinic
-(non-orthogonal) simulation boxes shaped as a parallelepiped with
-triclinic symmetry.  The parallelepiped has its "origin" at
-(xlo,ylo,zlo) and is defined by 3 edge vectors starting from the
-origin given by [a] = (xhi-xlo,0,0); [b] = (xy,yhi-ylo,0); [c] =
-(xz,yz,zhi-zlo).  {xy,xz,yz} can be 0.0 or positive or negative values
-and are called "tilt factors" because they are the amount of
-displacement applied to faces of an originally orthogonal box to
-transform it into the parallelepiped.  In LAMMPS the triclinic
-simulation box edge vectors [a], [b], and [c] cannot be arbitrary
-vectors.  As indicated, [a] must lie on the positive x axis.  [b] must
-lie in the xy plane, with strictly positive y component. [c] may have
-any orientation with strictly positive z component.  The requirement
-that [a], [b], and [c] have strictly positive x, y, and z components,
-respectively, ensures that [a], [b], and [c] form a complete
-right-handed basis.  These restrictions impose no loss of generality,
-since it is possible to rotate/invert any set of 3 crystal basis
-vectors so that they conform to the restrictions.
-
-For example, assume that the 3 vectors [A],[B],[C] are the edge
-vectors of a general parallelepiped, where there is no restriction on
-[A],[B],[C] other than they form a complete right-handed basis i.e.
-[A] x [B] . [C] > 0.  The equivalent LAMMPS [a],[b],[c] are a linear
-rotation of [A], [B], and [C] and can be computed as follows:
-
-:c,image(Eqs/transform.jpg)
-
-where A = | [A] | indicates the scalar length of [A]. The hat symbol (^)
-indicates the corresponding unit vector. {beta} and {gamma} are angles
-between the vectors described below. Note that by construction,
-[a], [b], and [c] have strictly positive x, y, and z components, respectively.
-If it should happen that
-[A], [B], and [C] form a left-handed basis, then the above equations
-are not valid for [c]. In this case, it is necessary
-to first apply an inversion. This can be achieved
-by interchanging two basis vectors or by changing the sign of one of them.
-
-For consistency, the same rotation/inversion applied to the basis vectors
-must also be applied to atom positions, velocities,
-and any other vector quantities.
-This can be conveniently achieved by first converting to
-fractional coordinates in the
-old basis and then converting to distance coordinates in the new basis.
-The transformation is given by the following equation:
-
-:c,image(Eqs/rotate.jpg)
-
-where {V} is the volume of the box, [X] is the original vector quantity and
-[x] is the vector in the LAMMPS basis.
-
-There is no requirement that a triclinic box be periodic in any
-dimension, though it typically should be in at least the 2nd dimension
-of the tilt (y in xy) if you want to enforce a shift in periodic
-boundary conditions across that boundary.  Some commands that work
-with triclinic boxes, e.g. the "fix deform"_fix_deform.html and "fix
-npt"_fix_nh.html commands, require periodicity or non-shrink-wrap
-boundary conditions in specific dimensions.  See the command doc pages
-for details.
-
-The 9 parameters (xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz) are defined at the
-time the simulation box is created.  This happens in one of 3 ways.
-If the "create_box"_create_box.html command is used with a region of
-style {prism}, then a triclinic box is setup.  See the
-"region"_region.html command for details.  If the
-"read_data"_read_data.html command is used to define the simulation
-box, and the header of the data file contains a line with the "xy xz
-yz" keyword, then a triclinic box is setup.  See the
-"read_data"_read_data.html command for details.  Finally, if the
-"read_restart"_read_restart.html command reads a restart file which
-was written from a simulation using a triclinic box, then a triclinic
-box will be setup for the restarted simulation.
-
-Note that you can define a triclinic box with all 3 tilt factors =
-0.0, so that it is initially orthogonal.  This is necessary if the box
-will become non-orthogonal, e.g. due to the "fix npt"_fix_nh.html or
-"fix deform"_fix_deform.html commands.  Alternatively, you can use the
-"change_box"_change_box.html command to convert a simulation box from
-orthogonal to triclinic and vice versa.
-
-As with orthogonal boxes, LAMMPS defines triclinic box size parameters
-lx,ly,lz where lx = xhi-xlo, and similarly in the y and z dimensions.
-The 9 parameters, as well as lx,ly,lz, can be output via the
-"thermo_style custom"_thermo_style.html command.
-
-To avoid extremely tilted boxes (which would be computationally
-inefficient), LAMMPS normally requires that no tilt factor can skew
-the box more than half the distance of the parallel box length, which
-is the 1st dimension in the tilt factor (x for xz).  This is required
-both when the simulation box is created, e.g. via the
-"create_box"_create_box.html or "read_data"_read_data.html commands,
-as well as when the box shape changes dynamically during a simulation,
-e.g. via the "fix deform"_fix_deform.html or "fix npt"_fix_nh.html
-commands.
-
-For example, if xlo = 2 and xhi = 12, then the x box length is 10 and
-the xy tilt factor must be between -5 and 5.  Similarly, both xz and
-yz must be between -(xhi-xlo)/2 and +(yhi-ylo)/2.  Note that this is
-not a limitation, since if the maximum tilt factor is 5 (as in this
-example), then configurations with tilt = ..., -15, -5, 5, 15, 25,
-... are geometrically all equivalent.  If the box tilt exceeds this
-limit during a dynamics run (e.g. via the "fix deform"_fix_deform.html
-command), then the box is "flipped" to an equivalent shape with a tilt
-factor within the bounds, so the run can continue.  See the "fix
-deform"_fix_deform.html doc page for further details.
-
-One exception to this rule is if the 1st dimension in the tilt
-factor (x for xy) is non-periodic.  In that case, the limits on the
-tilt factor are not enforced, since flipping the box in that dimension
-does not change the atom positions due to non-periodicity.  In this
-mode, if you tilt the system to extreme angles, the simulation will
-simply become inefficient, due to the highly skewed simulation box.
-
-The limitation on not creating a simulation box with a tilt factor
-skewing the box more than half the distance of the parallel box length
-can be overridden via the "box"_box.html command.  Setting the {tilt}
-keyword to {large} allows any tilt factors to be specified.
-
-Box flips that may occur using the "fix deform"_fix_deform.html or
-"fix npt"_fix_nh.html commands can be turned off using the {flip no}
-option with either of the commands.
-
-Note that if a simulation box has a large tilt factor, LAMMPS will run
-less efficiently, due to the large volume of communication needed to
-acquire ghost atoms around a processor's irregular-shaped sub-domain.
-For extreme values of tilt, LAMMPS may also lose atoms and generate an
-error.
-
-Triclinic crystal structures are often defined using three lattice
-constants {a}, {b}, and {c}, and three angles {alpha}, {beta} and
-{gamma}. Note that in this nomenclature, the a, b, and c lattice
-constants are the scalar lengths of the edge vectors [a], [b], and [c]
-defined above.  The relationship between these 6 quantities
-(a,b,c,alpha,beta,gamma) and the LAMMPS box sizes (lx,ly,lz) =
-(xhi-xlo,yhi-ylo,zhi-zlo) and tilt factors (xy,xz,yz) is as follows:
-
-:c,image(Eqs/box.jpg)
-
-The inverse relationship can be written as follows:
-
-:c,image(Eqs/box_inverse.jpg)
-
-The values of {a}, {b}, {c} , {alpha}, {beta} , and {gamma} can be printed
-out or accessed by computes using the
-"thermo_style custom"_thermo_style.html keywords
-{cella}, {cellb}, {cellc}, {cellalpha}, {cellbeta}, {cellgamma},
-respectively.
-
-As discussed on the "dump"_dump.html command doc page, when the BOX
-BOUNDS for a snapshot is written to a dump file for a triclinic box,
-an orthogonal bounding box which encloses the triclinic simulation box
-is output, along with the 3 tilt factors (xy, xz, yz) of the triclinic
-box, formatted as follows:
-
-ITEM: BOX BOUNDS xy xz yz
-xlo_bound xhi_bound xy
-ylo_bound yhi_bound xz
-zlo_bound zhi_bound yz :pre
-
-This bounding box is convenient for many visualization programs and is
-calculated from the 9 triclinic box parameters
-(xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz) as follows:
-
-xlo_bound = xlo + MIN(0.0,xy,xz,xy+xz)
-xhi_bound = xhi + MAX(0.0,xy,xz,xy+xz)
-ylo_bound = ylo + MIN(0.0,yz)
-yhi_bound = yhi + MAX(0.0,yz)
-zlo_bound = zlo
-zhi_bound = zhi :pre
-
-These formulas can be inverted if you need to convert the bounding box
-back into the triclinic box parameters, e.g. xlo = xlo_bound -
-MIN(0.0,xy,xz,xy+xz).
-
-One use of triclinic simulation boxes is to model solid-state crystals
-with triclinic symmetry.  The "lattice"_lattice.html command can be
-used with non-orthogonal basis vectors to define a lattice that will
-tile a triclinic simulation box via the
-"create_atoms"_create_atoms.html command.
-
-A second use is to run Parinello-Rahman dynamics via the "fix
-npt"_fix_nh.html command, which will adjust the xy, xz, yz tilt
-factors to compensate for off-diagonal components of the pressure
-tensor.  The analog for an "energy minimization"_minimize.html is
-the "fix box/relax"_fix_box_relax.html command.
-
-A third use is to shear a bulk solid to study the response of the
-material.  The "fix deform"_fix_deform.html command can be used for
-this purpose.  It allows dynamic control of the xy, xz, yz tilt
-factors as a simulation runs.  This is discussed in the next section
-on non-equilibrium MD (NEMD) simulations.
-
-:line
-
-6.13 NEMD simulations :link(howto_13),h4
-
-Non-equilibrium molecular dynamics or NEMD simulations are typically
-used to measure a fluid's rheological properties such as viscosity.
-In LAMMPS, such simulations can be performed by first setting up a
-non-orthogonal simulation box (see the preceding Howto section).
-
-A shear strain can be applied to the simulation box at a desired
-strain rate by using the "fix deform"_fix_deform.html command.  The
-"fix nvt/sllod"_fix_nvt_sllod.html command can be used to thermostat
-the sheared fluid and integrate the SLLOD equations of motion for the
-system.  Fix nvt/sllod uses "compute
-temp/deform"_compute_temp_deform.html to compute a thermal temperature
-by subtracting out the streaming velocity of the shearing atoms.  The
-velocity profile or other properties of the fluid can be monitored via
-the "fix ave/chunk"_fix_ave_chunk.html command.
-
-As discussed in the previous section on non-orthogonal simulation
-boxes, the amount of tilt or skew that can be applied is limited by
-LAMMPS for computational efficiency to be 1/2 of the parallel box
-length.  However, "fix deform"_fix_deform.html can continuously strain
-a box by an arbitrary amount.  As discussed in the "fix
-deform"_fix_deform.html command, when the tilt value reaches a limit,
-the box is flipped to the opposite limit which is an equivalent tiling
-of periodic space.  The strain rate can then continue to change as
-before.  In a long NEMD simulation these box re-shaping events may
-occur many times.
-
-In a NEMD simulation, the "remap" option of "fix
-deform"_fix_deform.html should be set to "remap v", since that is what
-"fix nvt/sllod"_fix_nvt_sllod.html assumes to generate a velocity
-profile consistent with the applied shear strain rate.
-
-An alternative method for calculating viscosities is provided via the
-"fix viscosity"_fix_viscosity.html command.
-
-NEMD simulations can also be used to measure transport properties of a fluid
-through a pore or channel. Simulations of steady-state flow can be performed
-using the "fix flow/gauss"_fix_flow_gauss.html command.
-
-:line
-
-6.14 Finite-size spherical and aspherical particles :link(howto_14),h4
-
-Typical MD models treat atoms or particles as point masses.  Sometimes
-it is desirable to have a model with finite-size particles such as
-spheroids or ellipsoids or generalized aspherical bodies.  The
-difference is that such particles have a moment of inertia, rotational
-energy, and angular momentum.  Rotation is induced by torque coming
-from interactions with other particles.
-
-LAMMPS has several options for running simulations with these kinds of
-particles.  The following aspects are discussed in turn:
-
-atom styles
-pair potentials
-time integration
-computes, thermodynamics, and dump output
-rigid bodies composed of finite-size particles :ul
-
-Example input scripts for these kinds of models are in the body,
-colloid, dipole, ellipse, line, peri, pour, and tri directories of the
-"examples directory"_Examples.html in the LAMMPS distribution.
-
-Atom styles :h4
-
-There are several "atom styles"_atom_style.html that allow for
-definition of finite-size particles: sphere, dipole, ellipsoid, line,
-tri, peri, and body.
-
-The sphere style defines particles that are spheriods and each
-particle can have a unique diameter and mass (or density).  These
-particles store an angular velocity (omega) and can be acted upon by
-torque.  The "set" command can be used to modify the diameter and mass
-of individual particles, after then are created.
-
-The dipole style does not actually define finite-size particles, but
-is often used in conjunction with spherical particles, via a command
-like
-
-atom_style hybrid sphere dipole :pre
-
-This is because when dipoles interact with each other, they induce
-torques, and a particle must be finite-size (i.e. have a moment of
-inertia) in order to respond and rotate.  See the "atom_style
-dipole"_atom_style.html command for details.  The "set" command can be
-used to modify the orientation and length of the dipole moment of
-individual particles, after then are created.
-
-The ellipsoid style defines particles that are ellipsoids and thus can
-be aspherical.  Each particle has a shape, specified by 3 diameters,
-and mass (or density).  These particles store an angular momentum and
-their orientation (quaternion), and can be acted upon by torque.  They
-do not store an angular velocity (omega), which can be in a different
-direction than angular momentum, rather they compute it as needed.
-The "set" command can be used to modify the diameter, orientation, and
-mass of individual particles, after then are created.  It also has a
-brief explanation of what quaternions are.
-
-The line style defines line segment particles with two end points and
-a mass (or density).  They can be used in 2d simulations, and they can
-be joined together to form rigid bodies which represent arbitrary
-polygons.
-
-The tri style defines triangular particles with three corner points
-and a mass (or density).  They can be used in 3d simulations, and they
-can be joined together to form rigid bodies which represent arbitrary
-particles with a triangulated surface.
-
-The peri style is used with "Peridynamic models"_pair_peri.html and
-defines particles as having a volume, that is used internally in the
-"pair_style peri"_pair_peri.html potentials.
-
-The body style allows for definition of particles which can represent
-complex entities, such as surface meshes of discrete points,
-collections of sub-particles, deformable objects, etc.  The body style
-is discussed in more detail on the "body"_body.html doc page.
-
-Note that if one of these atom styles is used (or multiple styles via
-the "atom_style hybrid"_atom_style.html command), not all particles in
-the system are required to be finite-size or aspherical.
-
-For example, in the ellipsoid style, if the 3 shape parameters are set
-to the same value, the particle will be a sphere rather than an
-ellipsoid.  If the 3 shape parameters are all set to 0.0 or if the
-diameter is set to 0.0, it will be a point particle.  In the line or
-tri style, if the lineflag or triflag is specified as 0, then it
-will be a point particle.
-
-Some of the pair styles used to compute pairwise interactions between
-finite-size particles also compute the correct interaction with point
-particles as well, e.g. the interaction between a point particle and a
-finite-size particle or between two point particles.  If necessary,
-"pair_style hybrid"_pair_hybrid.html can be used to insure the correct
-interactions are computed for the appropriate style of interactions.
-Likewise, using groups to partition particles (ellipsoids versus
-spheres versus point particles) will allow you to use the appropriate
-time integrators and temperature computations for each class of
-particles.  See the doc pages for various commands for details.
-
-Also note that for "2d simulations"_dimension.html, atom styles sphere
-and ellipsoid still use 3d particles, rather than as circular disks or
-ellipses.  This means they have the same moment of inertia as the 3d
-object.  When temperature is computed, the correct degrees of freedom
-are used for rotation in a 2d versus 3d system.
-
-Pair potentials :h4
-
-When a system with finite-size particles is defined, the particles
-will only rotate and experience torque if the force field computes
-such interactions.  These are the various "pair
-styles"_pair_style.html that generate torque:
-
-"pair_style gran/history"_pair_gran.html
-"pair_style gran/hertzian"_pair_gran.html
-"pair_style gran/no_history"_pair_gran.html
-"pair_style dipole/cut"_pair_dipole.html
-"pair_style gayberne"_pair_gayberne.html
-"pair_style resquared"_pair_resquared.html
-"pair_style brownian"_pair_brownian.html
-"pair_style lubricate"_pair_lubricate.html
-"pair_style line/lj"_pair_line_lj.html
-"pair_style tri/lj"_pair_tri_lj.html
-"pair_style body"_pair_body.html :ul
-
-The granular pair styles are used with spherical particles.  The
-dipole pair style is used with the dipole atom style, which could be
-applied to spherical or ellipsoidal particles.  The GayBerne and
-REsquared potentials require ellipsoidal particles, though they will
-also work if the 3 shape parameters are the same (a sphere).  The
-Brownian and lubrication potentials are used with spherical particles.
-The line, tri, and body potentials are used with line segment,
-triangular, and body particles respectively.
-
-Time integration :h4
-
-There are several fixes that perform time integration on finite-size
-spherical particles, meaning the integrators update the rotational
-orientation and angular velocity or angular momentum of the particles:
-
-"fix nve/sphere"_fix_nve_sphere.html
-"fix nvt/sphere"_fix_nvt_sphere.html
-"fix npt/sphere"_fix_npt_sphere.html :ul
-
-Likewise, there are 3 fixes that perform time integration on
-ellipsoidal particles:
-
-"fix nve/asphere"_fix_nve_asphere.html
-"fix nvt/asphere"_fix_nvt_asphere.html
-"fix npt/asphere"_fix_npt_asphere.html :ul
-
-The advantage of these fixes is that those which thermostat the
-particles include the rotational degrees of freedom in the temperature
-calculation and thermostatting.  The "fix langevin"_fix_langevin
-command can also be used with its {omgea} or {angmom} options to
-thermostat the rotational degrees of freedom for spherical or
-ellipsoidal particles.  Other thermostatting fixes only operate on the
-translational kinetic energy of finite-size particles.
-
-These fixes perform constant NVE time integration on line segment,
-triangular, and body particles:
-
-"fix nve/line"_fix_nve_line.html
-"fix nve/tri"_fix_nve_tri.html
-"fix nve/body"_fix_nve_body.html :ul
-
-Note that for mixtures of point and finite-size particles, these
-integration fixes can only be used with "groups"_group.html which
-contain finite-size particles.
-
-Computes, thermodynamics, and dump output :h4
-
-There are several computes that calculate the temperature or
-rotational energy of spherical or ellipsoidal particles:
-
-"compute temp/sphere"_compute_temp_sphere.html
-"compute temp/asphere"_compute_temp_asphere.html
-"compute erotate/sphere"_compute_erotate_sphere.html
-"compute erotate/asphere"_compute_erotate_asphere.html :ul
-
-These include rotational degrees of freedom in their computation.  If
-you wish the thermodynamic output of temperature or pressure to use
-one of these computes (e.g. for a system entirely composed of
-finite-size particles), then the compute can be defined and the
-"thermo_modify"_thermo_modify.html command used.  Note that by default
-thermodynamic quantities will be calculated with a temperature that
-only includes translational degrees of freedom.  See the
-"thermo_style"_thermo_style.html command for details.
-
-These commands can be used to output various attributes of finite-size
-particles:
-
-"dump custom"_dump.html
-"compute property/atom"_compute_property_atom.html
-"dump local"_dump.html
-"compute body/local"_compute_body_local.html :ul
-
-Attributes include the dipole moment, the angular velocity, the
-angular momentum, the quaternion, the torque, the end-point and
-corner-point coordinates (for line and tri particles), and
-sub-particle attributes of body particles.
-
-Rigid bodies composed of finite-size particles :h4
-
-The "fix rigid"_fix_rigid.html command treats a collection of
-particles as a rigid body, computes its inertia tensor, sums the total
-force and torque on the rigid body each timestep due to forces on its
-constituent particles, and integrates the motion of the rigid body.
-
-If any of the constituent particles of a rigid body are finite-size
-particles (spheres or ellipsoids or line segments or triangles), then
-their contribution to the inertia tensor of the body is different than
-if they were point particles.  This means the rotational dynamics of
-the rigid body will be different.  Thus a model of a dimer is
-different if the dimer consists of two point masses versus two
-spheroids, even if the two particles have the same mass.  Finite-size
-particles that experience torque due to their interaction with other
-particles will also impart that torque to a rigid body they are part
-of.
-
-See the "fix rigid" command for example of complex rigid-body models
-it is possible to define in LAMMPS.
-
-Note that the "fix shake"_fix_shake.html command can also be used to
-treat 2, 3, or 4 particles as a rigid body, but it always assumes the
-particles are point masses.
-
-Also note that body particles cannot be modeled with the "fix
-rigid"_fix_rigid.html command.  Body particles are treated by LAMMPS
-as single particles, though they can store internal state, such as a
-list of sub-particles.  Individual body partices are typically treated
-as rigid bodies, and their motion integrated with a command like "fix
-nve/body"_fix_nve_body.html.  Interactions between pairs of body
-particles are computed via a command like "pair_style
-body"_pair_body.html.
-
-:line
-
-6.15 Output from LAMMPS (thermo, dumps, computes, fixes, variables) :link(howto_15),h4
-
-There are four basic kinds of LAMMPS output:
-
-"Thermodynamic output"_thermo_style.html, which is a list
-of quantities printed every few timesteps to the screen and logfile. :ulb,l
-
-"Dump files"_dump.html, which contain snapshots of atoms and various
-per-atom values and are written at a specified frequency. :l
-
-Certain fixes can output user-specified quantities to files: "fix
-ave/time"_fix_ave_time.html for time averaging, "fix
-ave/chunk"_fix_ave_chunk.html for spatial or other averaging, and "fix
-print"_fix_print.html for single-line output of
-"variables"_variable.html.  Fix print can also output to the
-screen. :l
-
-"Restart files"_restart.html. :l
-:ule
-
-A simulation prints one set of thermodynamic output and (optionally)
-restart files.  It can generate any number of dump files and fix
-output files, depending on what "dump"_dump.html and "fix"_fix.html
-commands you specify.
-
-As discussed below, LAMMPS gives you a variety of ways to determine
-what quantities are computed and printed when the thermodynamics,
-dump, or fix commands listed above perform output.  Throughout this
-discussion, note that users can also "add their own computes and fixes
-to LAMMPS"_Modify.html which can then generate values that can then be
-output with these commands.
-
-The following sub-sections discuss different LAMMPS command related
-to output and the kind of data they operate on and produce:
-
-"Global/per-atom/local data"_#global
-"Scalar/vector/array data"_#scalar
-"Thermodynamic output"_#thermo
-"Dump file output"_#dump
-"Fixes that write output files"_#fixoutput
-"Computes that process output quantities"_#computeoutput
-"Fixes that process output quantities"_#fixprocoutput
-"Computes that generate values to output"_#compute
-"Fixes that generate values to output"_#fix
-"Variables that generate values to output"_#variable
-"Summary table of output options and data flow between commands"_#table :ul
-
-Global/per-atom/local data :h4,link(global)
-
-Various output-related commands work with three different styles of
-data: global, per-atom, or local.  A global datum is one or more
-system-wide values, e.g. the temperature of the system.  A per-atom
-datum is one or more values per atom, e.g. the kinetic energy of each
-atom.  Local datums are calculated by each processor based on the
-atoms it owns, but there may be zero or more per atom, e.g. a list of
-bond distances.
-
-Scalar/vector/array data :h4,link(scalar)
-
-Global, per-atom, and local datums can each come in three kinds: a
-single scalar value, a vector of values, or a 2d array of values.  The
-doc page for a "compute" or "fix" or "variable" that generates data
-will specify both the style and kind of data it produces, e.g. a
-per-atom vector.
-
-When a quantity is accessed, as in many of the output commands
-discussed below, it can be referenced via the following bracket
-notation, where ID in this case is the ID of a compute.  The leading
-"c_" would be replaced by "f_" for a fix, or "v_" for a variable:
-
-c_ID | entire scalar, vector, or array
-c_ID\[I\] | one element of vector, one column of array
-c_ID\[I\]\[J\] | one element of array :tb(s=|)
-
-In other words, using one bracket reduces the dimension of the data
-once (vector -> scalar, array -> vector).  Using two brackets reduces
-the dimension twice (array -> scalar).  Thus a command that uses
-scalar values as input can typically also process elements of a vector
-or array.
-
-Thermodynamic output :h4,link(thermo)
-
-The frequency and format of thermodynamic output is set by the
-"thermo"_thermo.html, "thermo_style"_thermo_style.html, and
-"thermo_modify"_thermo_modify.html commands.  The
-"thermo_style"_thermo_style.html command also specifies what values
-are calculated and written out.  Pre-defined keywords can be specified
-(e.g. press, etotal, etc).  Three additional kinds of keywords can
-also be specified (c_ID, f_ID, v_name), where a "compute"_compute.html
-or "fix"_fix.html or "variable"_variable.html provides the value to be
-output.  In each case, the compute, fix, or variable must generate
-global values for input to the "thermo_style custom"_dump.html
-command.
-
-Note that thermodynamic output values can be "extensive" or
-"intensive".  The former scale with the number of atoms in the system
-(e.g. total energy), the latter do not (e.g. temperature).  The
-setting for "thermo_modify norm"_thermo_modify.html determines whether
-extensive quantities are normalized or not.  Computes and fixes
-produce either extensive or intensive values; see their individual doc
-pages for details.  "Equal-style variables"_variable.html produce only
-intensive values; you can include a division by "natoms" in the
-formula if desired, to make an extensive calculation produce an
-intensive result.
-
-Dump file output :h4,link(dump)
-
-Dump file output is specified by the "dump"_dump.html and
-"dump_modify"_dump_modify.html commands.  There are several
-pre-defined formats (dump atom, dump xtc, etc).
-
-There is also a "dump custom"_dump.html format where the user
-specifies what values are output with each atom.  Pre-defined atom
-attributes can be specified (id, x, fx, etc).  Three additional kinds
-of keywords can also be specified (c_ID, f_ID, v_name), where a
-"compute"_compute.html or "fix"_fix.html or "variable"_variable.html
-provides the values to be output.  In each case, the compute, fix, or
-variable must generate per-atom values for input to the "dump
-custom"_dump.html command.
-
-There is also a "dump local"_dump.html format where the user specifies
-what local values to output.  A pre-defined index keyword can be
-specified to enumerate the local values.  Two additional kinds of
-keywords can also be specified (c_ID, f_ID), where a
-"compute"_compute.html or "fix"_fix.html or "variable"_variable.html
-provides the values to be output.  In each case, the compute or fix
-must generate local values for input to the "dump local"_dump.html
-command.
-
-Fixes that write output files :h4,link(fixoutput)
-
-Several fixes take various quantities as input and can write output
-files: "fix ave/time"_fix_ave_time.html, "fix
-ave/chunk"_fix_ave_chunk.html, "fix ave/histo"_fix_ave_histo.html,
-"fix ave/correlate"_fix_ave_correlate.html, and "fix
-print"_fix_print.html.
-
-The "fix ave/time"_fix_ave_time.html command enables direct output to
-a file and/or time-averaging of global scalars or vectors.  The user
-specifies one or more quantities as input.  These can be global
-"compute"_compute.html values, global "fix"_fix.html values, or
-"variables"_variable.html of any style except the atom style which
-produces per-atom values.  Since a variable can refer to keywords used
-by the "thermo_style custom"_thermo_style.html command (like temp or
-press) and individual per-atom values, a wide variety of quantities
-can be time averaged and/or output in this way.  If the inputs are one
-or more scalar values, then the fix generate a global scalar or vector
-of output.  If the inputs are one or more vector values, then the fix
-generates a global vector or array of output.  The time-averaged
-output of this fix can also be used as input to other output commands.
-
-The "fix ave/chunk"_fix_ave_chunk.html command enables direct output
-to a file of chunk-averaged per-atom quantities like those output in
-dump files.  Chunks can represent spatial bins or other collections of
-atoms, e.g. individual molecules.  The per-atom quantities can be atom
-density (mass or number) or atom attributes such as position,
-velocity, force.  They can also be per-atom quantities calculated by a
-"compute"_compute.html, by a "fix"_fix.html, or by an atom-style
-"variable"_variable.html.  The chunk-averaged output of this fix can
-also be used as input to other output commands.
-
-The "fix ave/histo"_fix_ave_histo.html command enables direct output
-to a file of histogrammed quantities, which can be global or per-atom
-or local quantities.  The histogram output of this fix can also be
-used as input to other output commands.
-
-The "fix ave/correlate"_fix_ave_correlate.html command enables direct
-output to a file of time-correlated quantities, which can be global
-values.  The correlation matrix output of this fix can also be used as
-input to other output commands.
-
-The "fix print"_fix_print.html command can generate a line of output
-written to the screen and log file or to a separate file, periodically
-during a running simulation.  The line can contain one or more
-"variable"_variable.html values for any style variable except the
-vector or atom styles).  As explained above, variables themselves can
-contain references to global values generated by "thermodynamic
-keywords"_thermo_style.html, "computes"_compute.html,
-"fixes"_fix.html, or other "variables"_variable.html, or to per-atom
-values for a specific atom.  Thus the "fix print"_fix_print.html
-command is a means to output a wide variety of quantities separate
-from normal thermodynamic or dump file output.
-
-Computes that process output quantities :h4,link(computeoutput)
-
-The "compute reduce"_compute_reduce.html and "compute
-reduce/region"_compute_reduce.html commands take one or more per-atom
-or local vector quantities as inputs and "reduce" them (sum, min, max,
-ave) to scalar quantities.  These are produced as output values which
-can be used as input to other output commands.
-
-The "compute slice"_compute_slice.html command take one or more global
-vector or array quantities as inputs and extracts a subset of their
-values to create a new vector or array.  These are produced as output
-values which can be used as input to other output commands.
-
-The "compute property/atom"_compute_property_atom.html command takes a
-list of one or more pre-defined atom attributes (id, x, fx, etc) and
-stores the values in a per-atom vector or array.  These are produced
-as output values which can be used as input to other output commands.
-The list of atom attributes is the same as for the "dump
-custom"_dump.html command.
-
-The "compute property/local"_compute_property_local.html command takes
-a list of one or more pre-defined local attributes (bond info, angle
-info, etc) and stores the values in a local vector or array.  These
-are produced as output values which can be used as input to other
-output commands.
-
-Fixes that process output quantities :h4,link(fixprocoutput)
-
-The "fix vector"_fix_vector.html command can create global vectors as
-output from global scalars as input, accumulating them one element at
-a time.
-
-The "fix ave/atom"_fix_ave_atom.html command performs time-averaging
-of per-atom vectors.  The per-atom quantities can be atom attributes
-such as position, velocity, force.  They can also be per-atom
-quantities calculated by a "compute"_compute.html, by a
-"fix"_fix.html, or by an atom-style "variable"_variable.html.  The
-time-averaged per-atom output of this fix can be used as input to
-other output commands.
-
-The "fix store/state"_fix_store_state.html command can archive one or
-more per-atom attributes at a particular time, so that the old values
-can be used in a future calculation or output.  The list of atom
-attributes is the same as for the "dump custom"_dump.html command,
-including per-atom quantities calculated by a "compute"_compute.html,
-by a "fix"_fix.html, or by an atom-style "variable"_variable.html.
-The output of this fix can be used as input to other output commands.
-
-Computes that generate values to output :h4,link(compute)
-
-Every "compute"_compute.html in LAMMPS produces either global or
-per-atom or local values.  The values can be scalars or vectors or
-arrays of data.  These values can be output using the other commands
-described in this section.  The doc page for each compute command
-describes what it produces.  Computes that produce per-atom or local
-values have the word "atom" or "local" in their style name.  Computes
-without the word "atom" or "local" produce global values.
-
-Fixes that generate values to output :h4,link(fix)
-
-Some "fixes"_fix.html in LAMMPS produces either global or per-atom or
-local values which can be accessed by other commands.  The values can
-be scalars or vectors or arrays of data.  These values can be output
-using the other commands described in this section.  The doc page for
-each fix command tells whether it produces any output quantities and
-describes them.
-
-Variables that generate values to output :h4,link(variable)
-
-"Variables"_variable.html defined in an input script can store one or
-more strings.  But equal-style, vector-style, and atom-style or
-atomfile-style variables generate a global scalar value, global vector
-or values, or a per-atom vector, respectively, when accessed.  The
-formulas used to define these variables can contain references to the
-thermodynamic keywords and to global and per-atom data generated by
-computes, fixes, and other variables.  The values generated by
-variables can be used as input to and thus output by the other
-commands described in this section.
-
-Summary table of output options and data flow between commands :h4,link(table)
-
-This table summarizes the various commands that can be used for
-generating output from LAMMPS.  Each command produces output data of
-some kind and/or writes data to a file.  Most of the commands can take
-data from other commands as input.  Thus you can link many of these
-commands together in pipeline form, where data produced by one command
-is used as input to another command and eventually written to the
-screen or to a file.  Note that to hook two commands together the
-output and input data types must match, e.g. global/per-atom/local
-data and scalar/vector/array data.
-
-Also note that, as described above, when a command takes a scalar as
-input, that could be an element of a vector or array.  Likewise a
-vector input could be a column of an array.
-
-Command: Input: Output:
-"thermo_style custom"_thermo_style.html: global scalars: screen, log file:
-"dump custom"_dump.html: per-atom vectors: dump file:
-"dump local"_dump.html: local vectors: dump file:
-"fix print"_fix_print.html: global scalar from variable: screen, file:
-"print"_print.html: global scalar from variable: screen:
-"computes"_compute.html: N/A: global/per-atom/local scalar/vector/array:
-"fixes"_fix.html: N/A: global/per-atom/local scalar/vector/array:
-"variables"_variable.html: global scalars and vectors, per-atom vectors: global scalar and vector, per-atom vector:
-"compute reduce"_compute_reduce.html: per-atom/local vectors: global scalar/vector:
-"compute slice"_compute_slice.html: global vectors/arrays: global vector/array:
-"compute property/atom"_compute_property_atom.html: per-atom vectors: per-atom vector/array:
-"compute property/local"_compute_property_local.html: local vectors: local vector/array:
-"fix vector"_fix_vector.html: global scalars: global vector:
-"fix ave/atom"_fix_ave_atom.html: per-atom vectors: per-atom vector/array:
-"fix ave/time"_fix_ave_time.html: global scalars/vectors: global scalar/vector/array, file:
-"fix ave/chunk"_fix_ave_chunk.html: per-atom vectors: global array, file:
-"fix ave/histo"_fix_ave_histo.html: global/per-atom/local scalars and vectors: global array, file:
-"fix ave/correlate"_fix_ave_correlate.html: global scalars: global array, file:
-"fix store/state"_fix_store_state.html: per-atom vectors: per-atom vector/array :tb(c=3,s=:)
-
-:line
-
-6.16 Thermostatting, barostatting, and computing temperature :link(howto_16),h4
-
-Thermostatting means controlling the temperature of particles in an MD
-simulation.  Barostatting means controlling the pressure.  Since the
-pressure includes a kinetic component due to particle velocities, both
-these operations require calculation of the temperature.  Typically a
-target temperature (T) and/or pressure (P) is specified by the user,
-and the thermostat or barostat attempts to equilibrate the system to
-the requested T and/or P.
-
-Temperature is computed as kinetic energy divided by some number of
-degrees of freedom (and the Boltzmann constant).  Since kinetic energy
-is a function of particle velocity, there is often a need to
-distinguish between a particle's advection velocity (due to some
-aggregate motion of particles) and its thermal velocity.  The sum of
-the two is the particle's total velocity, but the latter is often what
-is wanted to compute a temperature.
-
-LAMMPS has several options for computing temperatures, any of which
-can be used in thermostatting and barostatting.  These "compute
-commands"_compute.html calculate temperature, and the "compute
-pressure"_compute_pressure.html command calculates pressure.
-
-"compute temp"_compute_temp.html
-"compute temp/sphere"_compute_temp_sphere.html
-"compute temp/asphere"_compute_temp_asphere.html
-"compute temp/com"_compute_temp_com.html
-"compute temp/deform"_compute_temp_deform.html
-"compute temp/partial"_compute_temp_partial.html
-"compute temp/profile"_compute_temp_profile.html
-"compute temp/ramp"_compute_temp_ramp.html
-"compute temp/region"_compute_temp_region.html :ul
-
-All but the first 3 calculate velocity biases directly (e.g. advection
-velocities) that are removed when computing the thermal temperature.
-"Compute temp/sphere"_compute_temp_sphere.html and "compute
-temp/asphere"_compute_temp_asphere.html compute kinetic energy for
-finite-size particles that includes rotational degrees of freedom.
-They both allow for velocity biases indirectly, via an optional extra
-argument, another temperature compute that subtracts a velocity bias.
-This allows the translational velocity of spherical or aspherical
-particles to be adjusted in prescribed ways.
-
-Thermostatting in LAMMPS is performed by "fixes"_fix.html, or in one
-case by a pair style.  Several thermostatting fixes are available:
-Nose-Hoover (nvt), Berendsen, CSVR, Langevin, and direct rescaling
-(temp/rescale).  Dissipative particle dynamics (DPD) thermostatting
-can be invoked via the {dpd/tstat} pair style:
-
-"fix nvt"_fix_nh.html
-"fix nvt/sphere"_fix_nvt_sphere.html
-"fix nvt/asphere"_fix_nvt_asphere.html
-"fix nvt/sllod"_fix_nvt_sllod.html
-"fix temp/berendsen"_fix_temp_berendsen.html
-"fix temp/csvr"_fix_temp_csvr.html
-"fix langevin"_fix_langevin.html
-"fix temp/rescale"_fix_temp_rescale.html
-"pair_style dpd/tstat"_pair_dpd.html :ul
-
-"Fix nvt"_fix_nh.html only thermostats the translational velocity of
-particles.  "Fix nvt/sllod"_fix_nvt_sllod.html also does this, except
-that it subtracts out a velocity bias due to a deforming box and
-integrates the SLLOD equations of motion.  See the "NEMD
-simulations"_#howto_13 section of this page for further details.  "Fix
-nvt/sphere"_fix_nvt_sphere.html and "fix
-nvt/asphere"_fix_nvt_asphere.html thermostat not only translation
-velocities but also rotational velocities for spherical and aspherical
-particles.
-
-DPD thermostatting alters pairwise interactions in a manner analogous
-to the per-particle thermostatting of "fix
-langevin"_fix_langevin.html.
-
-Any of the thermostatting fixes can use temperature computes that
-remove bias which has two effects.  First, the current calculated
-temperature, which is compared to the requested target temperature, is
-calculated with the velocity bias removed.  Second, the thermostat
-adjusts only the thermal temperature component of the particle's
-velocities, which are the velocities with the bias removed.  The
-removed bias is then added back to the adjusted velocities.  See the
-doc pages for the individual fixes and for the
-"fix_modify"_fix_modify.html command for instructions on how to assign
-a temperature compute to a thermostatting fix.  For example, you can
-apply a thermostat to only the x and z components of velocity by using
-it in conjunction with "compute
-temp/partial"_compute_temp_partial.html.  Of you could thermostat only
-the thermal temperature of a streaming flow of particles without
-affecting the streaming velocity, by using "compute
-temp/profile"_compute_temp_profile.html.
-
-NOTE: Only the nvt fixes perform time integration, meaning they update
-the velocities and positions of particles due to forces and velocities
-respectively.  The other thermostat fixes only adjust velocities; they
-do NOT perform time integration updates.  Thus they should be used in
-conjunction with a constant NVE integration fix such as these:
-
-"fix nve"_fix_nve.html
-"fix nve/sphere"_fix_nve_sphere.html
-"fix nve/asphere"_fix_nve_asphere.html :ul
-
-Barostatting in LAMMPS is also performed by "fixes"_fix.html.  Two
-barosttating methods are currently available: Nose-Hoover (npt and
-nph) and Berendsen:
-
-"fix npt"_fix_nh.html
-"fix npt/sphere"_fix_npt_sphere.html
-"fix npt/asphere"_fix_npt_asphere.html
-"fix nph"_fix_nh.html
-"fix press/berendsen"_fix_press_berendsen.html :ul
-
-The "fix npt"_fix_nh.html commands include a Nose-Hoover thermostat
-and barostat.  "Fix nph"_fix_nh.html is just a Nose/Hoover barostat;
-it does no thermostatting.  Both "fix nph"_fix_nh.html and "fix
-press/berendsen"_fix_press_berendsen.html can be used in conjunction
-with any of the thermostatting fixes.
-
-As with the thermostats, "fix npt"_fix_nh.html and "fix
-nph"_fix_nh.html only use translational motion of the particles in
-computing T and P and performing thermo/barostatting.  "Fix
-npt/sphere"_fix_npt_sphere.html and "fix
-npt/asphere"_fix_npt_asphere.html thermo/barostat using not only
-translation velocities but also rotational velocities for spherical
-and aspherical particles.
-
-All of the barostatting fixes use the "compute
-pressure"_compute_pressure.html compute to calculate a current
-pressure.  By default, this compute is created with a simple "compute
-temp"_compute_temp.html (see the last argument of the "compute
-pressure"_compute_pressure.html command), which is used to calculated
-the kinetic component of the pressure.  The barostatting fixes can
-also use temperature computes that remove bias for the purpose of
-computing the kinetic component which contributes to the current
-pressure.  See the doc pages for the individual fixes and for the
-"fix_modify"_fix_modify.html command for instructions on how to assign
-a temperature or pressure compute to a barostatting fix.
-
-NOTE: As with the thermostats, the Nose/Hoover methods ("fix
-npt"_fix_nh.html and "fix nph"_fix_nh.html) perform time integration.
-"Fix press/berendsen"_fix_press_berendsen.html does NOT, so it should
-be used with one of the constant NVE fixes or with one of the NVT
-fixes.
-
-Finally, thermodynamic output, which can be setup via the
-"thermo_style"_thermo_style.html command, often includes temperature
-and pressure values.  As explained on the doc page for the
-"thermo_style"_thermo_style.html command, the default T and P are
-setup by the thermo command itself.  They are NOT the ones associated
-with any thermostatting or barostatting fix you have defined or with
-any compute that calculates a temperature or pressure.  Thus if you
-want to view these values of T and P, you need to specify them
-explicitly via a "thermo_style custom"_thermo_style.html command.  Or
-you can use the "thermo_modify"_thermo_modify.html command to
-re-define what temperature or pressure compute is used for default
-thermodynamic output.
-
-:line
-
-6.17 Walls :link(howto_17),h4
-
-Walls in an MD simulation are typically used to bound particle motion,
-i.e. to serve as a boundary condition.
-
-Walls in LAMMPS can be of rough (made of particles) or idealized
-surfaces.  Ideal walls can be smooth, generating forces only in the
-normal direction, or frictional, generating forces also in the
-tangential direction.
-
-Rough walls, built of particles, can be created in various ways.  The
-particles themselves can be generated like any other particle, via the
-"lattice"_lattice.html and "create_atoms"_create_atoms.html commands,
-or read in via the "read_data"_read_data.html command.
-
-Their motion can be constrained by many different commands, so that
-they do not move at all, move together as a group at constant velocity
-or in response to a net force acting on them, move in a prescribed
-fashion (e.g. rotate around a point), etc.  Note that if a time
-integration fix like "fix nve"_fix_nve.html or "fix nvt"_fix_nh.html
-is not used with the group that contains wall particles, their
-positions and velocities will not be updated.
-
-"fix aveforce"_fix_aveforce.html - set force on particles to average value, so they move together
-"fix setforce"_fix_setforce.html - set force on particles to a value, e.g. 0.0
-"fix freeze"_fix_freeze.html - freeze particles for use as granular walls
-"fix nve/noforce"_fix_nve_noforce.html - advect particles by their velocity, but without force
-"fix move"_fix_move.html - prescribe motion of particles by a linear velocity, oscillation, rotation, variable :ul
-
-The "fix move"_fix_move.html command offers the most generality, since
-the motion of individual particles can be specified with
-"variable"_variable.html formula which depends on time and/or the
-particle position.
-
-For rough walls, it may be useful to turn off pairwise interactions
-between wall particles via the "neigh_modify
-exclude"_neigh_modify.html command.
-
-Rough walls can also be created by specifying frozen particles that do
-not move and do not interact with mobile particles, and then tethering
-other particles to the fixed particles, via a "bond"_bond_style.html.
-The bonded particles do interact with other mobile particles.
-
-Idealized walls can be specified via several fix commands.  "Fix
-wall/gran"_fix_wall_gran.html creates frictional walls for use with
-granular particles; all the other commands create smooth walls.
-
-"fix wall/reflect"_fix_wall_reflect.html - reflective flat walls
-"fix wall/lj93"_fix_wall.html - flat walls, with Lennard-Jones 9/3 potential
-"fix wall/lj126"_fix_wall.html - flat walls, with Lennard-Jones 12/6 potential
-"fix wall/colloid"_fix_wall.html - flat walls, with "pair_style colloid"_pair_colloid.html potential
-"fix wall/harmonic"_fix_wall.html - flat walls, with repulsive harmonic spring potential
-"fix wall/region"_fix_wall_region.html - use region surface as wall
-"fix wall/gran"_fix_wall_gran.html - flat or curved walls with "pair_style granular"_pair_gran.html potential :ul
-
-The {lj93}, {lj126}, {colloid}, and {harmonic} styles all allow the
-flat walls to move with a constant velocity, or oscillate in time.
-The "fix wall/region"_fix_wall_region.html command offers the most
-generality, since the region surface is treated as a wall, and the
-geometry of the region can be a simple primitive volume (e.g. a
-sphere, or cube, or plane), or a complex volume made from the union
-and intersection of primitive volumes.  "Regions"_region.html can also
-specify a volume "interior" or "exterior" to the specified primitive
-shape or {union} or {intersection}.  "Regions"_region.html can also be
-"dynamic" meaning they move with constant velocity, oscillate, or
-rotate.
-
-The only frictional idealized walls currently in LAMMPS are flat or
-curved surfaces specified by the "fix wall/gran"_fix_wall_gran.html
-command.  At some point we plan to allow regoin surfaces to be used as
-frictional walls, as well as triangulated surfaces.
-
-:line
-
-6.18 Elastic constants :link(howto_18),h4
-
-Elastic constants characterize the stiffness of a material. The formal
-definition is provided by the linear relation that holds between the
-stress and strain tensors in the limit of infinitesimal deformation.
-In tensor notation, this is expressed as s_ij = C_ijkl * e_kl, where
-the repeated indices imply summation. s_ij are the elements of the
-symmetric stress tensor. e_kl are the elements of the symmetric strain
-tensor. C_ijkl are the elements of the fourth rank tensor of elastic
-constants. In three dimensions, this tensor has 3^4=81 elements. Using
-Voigt notation, the tensor can be written as a 6x6 matrix, where C_ij
-is now the derivative of s_i w.r.t. e_j. Because s_i is itself a
-derivative w.r.t. e_i, it follows that C_ij is also symmetric, with at
-most 7*6/2 = 21 distinct elements.
-
-At zero temperature, it is easy to estimate these derivatives by
-deforming the simulation box in one of the six directions using the
-"change_box"_change_box.html command and measuring the change in the
-stress tensor. A general-purpose script that does this is given in the
-examples/elastic directory described on the "Examples"_Examples.html
-doc page.
-
-Calculating elastic constants at finite temperature is more
-challenging, because it is necessary to run a simulation that perfoms
-time averages of differential properties. One way to do this is to
-measure the change in average stress tensor in an NVT simulations when
-the cell volume undergoes a finite deformation. In order to balance
-the systematic and statistical errors in this method, the magnitude of
-the deformation must be chosen judiciously, and care must be taken to
-fully equilibrate the deformed cell before sampling the stress
-tensor. Another approach is to sample the triclinic cell fluctuations
-that occur in an NPT simulation. This method can also be slow to
-converge and requires careful post-processing "(Shinoda)"_#Shinoda1
-
-:line
-
-6.19 Library interface to LAMMPS :link(howto_19),h4
-
-As described in "Section 2.5"_Section_start.html#start_5, LAMMPS can
-be built as a library, so that it can be called by another code, used
-in a "coupled manner"_Section_howto.html#howto_10 with other codes, or
-driven through a "Python interface"_Python.html.
-
-All of these methodologies use a C-style interface to LAMMPS that is
-provided in the files src/library.cpp and src/library.h.  The
-functions therein have a C-style argument list, but contain C++ code
-you could write yourself in a C++ application that was invoking LAMMPS
-directly.  The C++ code in the functions illustrates how to invoke
-internal LAMMPS operations.  Note that LAMMPS classes are defined
-within a LAMMPS namespace (LAMMPS_NS) if you use them from another C++
-application.
-
-The examples/COUPLE and python/examples directories have example C++
-and C and Python codes which show how a driver code can link to LAMMPS
-as a library, run LAMMPS on a subset of processors, grab data from
-LAMMPS, change it, and put it back into LAMMPS.
-
-The file src/library.cpp contains the following functions for creating
-and destroying an instance of LAMMPS and sending it commands to
-execute.  See the documentation in the src/library.cpp file for
-details.
-
-NOTE: You can write code for additional functions as needed to define
-how your code talks to LAMMPS and add them to src/library.cpp and
-src/library.h, as well as to the "Python interface"_Python.html.  The
-added functions can access or change any internal LAMMPS data you
-wish.
-
-void lammps_open(int, char **, MPI_Comm, void **)
-void lammps_open_no_mpi(int, char **, void **)
-void lammps_close(void *)
-int lammps_version(void *)
-void lammps_file(void *, char *)
-char *lammps_command(void *, char *)
-void lammps_commands_list(void *, int, char **)
-void lammps_commands_string(void *, char *)
-void lammps_free(void *) :pre
-
-The lammps_open() function is used to initialize LAMMPS, passing in a
-list of strings as if they were "command-line
-arguments"_Section_start.html#start_6 when LAMMPS is run in
-stand-alone mode from the command line, and a MPI communicator for
-LAMMPS to run under.  It returns a ptr to the LAMMPS object that is
-created, and which is used in subsequent library calls.  The
-lammps_open() function can be called multiple times, to create
-multiple instances of LAMMPS.
-
-LAMMPS will run on the set of processors in the communicator.  This
-means the calling code can run LAMMPS on all or a subset of
-processors.  For example, a wrapper script might decide to alternate
-between LAMMPS and another code, allowing them both to run on all the
-processors.  Or it might allocate half the processors to LAMMPS and
-half to the other code and run both codes simultaneously before
-syncing them up periodically.  Or it might instantiate multiple
-instances of LAMMPS to perform different calculations.
-
-The lammps_open_no_mpi() function is similar except that no MPI
-communicator is passed from the caller.  Instead, MPI_COMM_WORLD is
-used to instantiate LAMMPS, and MPI is initialized if necessary.
-
-The lammps_close() function is used to shut down an instance of LAMMPS
-and free all its memory.
-
-The lammps_version() function can be used to determined the specific
-version of the underlying LAMMPS code. This is particularly useful
-when loading LAMMPS as a shared library via dlopen(). The code using
-the library interface can than use this information to adapt to
-changes to the LAMMPS command syntax between versions. The returned
-LAMMPS version code is an integer (e.g. 2 Sep 2015 results in
-20150902) that grows with every new LAMMPS version.
-
-The lammps_file(), lammps_command(), lammps_commands_list(), and
-lammps_commands_string() functions are used to pass one or more
-commands to LAMMPS to execute, the same as if they were coming from an
-input script.
-
-Via these functions, the calling code can read or generate a series of
-LAMMPS commands one or multiple at a time and pass it thru the library
-interface to setup a problem and then run it in stages.  The caller
-can interleave the command function calls with operations it performs,
-calls to extract information from or set information within LAMMPS, or
-calls to another code's library.
-
-The lammps_file() function passes the filename of an input script.
-The lammps_command() function passes a single command as a string.
-The lammps_commands_list() function passes multiple commands in a
-char** list.  In both lammps_command() and lammps_commands_list(),
-individual commands may or may not have a trailing newline.  The
-lammps_commands_string() function passes multiple commands
-concatenated into one long string, separated by newline characters.
-In both lammps_commands_list() and lammps_commands_string(), a single
-command can be spread across multiple lines, if the last printable
-character of all but the last line is "&", the same as if the lines
-appeared in an input script.
-
-The lammps_free() function is a clean-up function to free memory that
-the library allocated previously via other function calls.  See
-comments in src/library.cpp file for which other functions need this
-clean-up.
-
-The file src/library.cpp also contains these functions for extracting
-information from LAMMPS and setting value within LAMMPS.  Again, see
-the documentation in the src/library.cpp file for details, including
-which quantities can be queried by name:
-
-int lammps_extract_setting(void *, char *)
-void *lammps_extract_global(void *, char *)
-void lammps_extract_box(void *, double *, double *,
-                        double *, double *, double *, int *, int *)
-void *lammps_extract_atom(void *, char *)
-void *lammps_extract_compute(void *, char *, int, int)
-void *lammps_extract_fix(void *, char *, int, int, int, int)
-void *lammps_extract_variable(void *, char *, char *) :pre
-
-The extract_setting() function returns info on the size
-of data types (e.g. 32-bit or 64-bit atom IDs) used
-by the LAMMPS executable (a compile-time choice).
-
-The other extract functions return a pointer to various global or
-per-atom quantities stored in LAMMPS or to values calculated by a
-compute, fix, or variable.  The pointer returned by the
-extract_global() function can be used as a permanent reference to a
-value which may change.  For the extract_atom() method, see the
-extract() method in the src/atom.cpp file for a list of valid per-atom
-properties.  New names could easily be added if the property you want
-is not listed.  For the other extract functions, the underlying
-storage may be reallocated as LAMMPS runs, so you need to re-call the
-function to assure a current pointer or returned value(s).
-
-double lammps_get_thermo(void *, char *)
-int lammps_get_natoms(void *) :pre
-
-int lammps_set_variable(void *, char *, char *)
-void lammps_reset_box(void *, double *, double *, double, double, double) :pre
-
-The lammps_get_thermo() function returns the current value of a thermo
-keyword as a double precision value.
-
-The lammps_get_natoms() function returns the total number of atoms in
-the system and can be used by the caller to allocate memory for the
-lammps_gather_atoms() and lammps_scatter_atoms() functions.
-
-The lammps_set_variable() function can set an existing string-style
-variable to a new string value, so that subsequent LAMMPS commands can
-access the variable.
-
-The lammps_reset_box() function resets the size and shape of the
-simulation box, e.g. as part of restoring a previously extracted and
-saved state of a simulation.
-
-void lammps_gather_atoms(void *, char *, int, int, void *)
-void lammps_gather_atoms_concat(void *, char *, int, int, void *)
-void lammps_gather_atoms_subset(void *, char *, int, int, int, int *, void *)
-void lammps_scatter_atoms(void *, char *, int, int, void *)
-void lammps_scatter_atoms_subset(void *, char *, int, int, int, int *, void *) :pre
-
-void lammps_create_atoms(void *, int, tagint *, int *, double *, double *,
-                         imageint *, int) :pre
-
-The gather functions collect peratom info of the requested type (atom
-coords, atom types, forces, etc) from all processors, and returns the
-same vector of values to each callling processor.  The scatter
-functions do the inverse.  They distribute a vector of peratom values,
-passed by all calling processors, to invididual atoms, which may be
-owned by different processos.
-
-The lammps_gather_atoms() function does this for all N atoms in the
-system, ordered by atom ID, from 1 to N.  The
-lammps_gather_atoms_concat() function does it for all N atoms, but
-simply concatenates the subset of atoms owned by each processor.  The
-resulting vector is not ordered by atom ID.  Atom IDs can be requetsed
-by the same function if the caller needs to know the ordering.  The
-lammps_gather_subset() function allows the caller to request values
-for only a subset of atoms (identified by ID).
-For all 3 gather function, per-atom image flags can be retrieved in 2 ways.
-If the count is specified as 1, they are returned 
-in a packed format with all three image flags stored in a single integer.
-If the count is specified as 3, the values are unpacked into xyz flags
-by the library before returning them.
-
-The lammps_scatter_atoms() function takes a list of values for all N
-atoms in the system, ordered by atom ID, from 1 to N, and assigns
-those values to each atom in the system.  The
-lammps_scatter_atoms_subset() function takes a subset of IDs as an
-argument and only scatters those values to the owning atoms.
-
-The lammps_create_atoms() function takes a list of N atoms as input
-with atom types and coords (required), an optionally atom IDs and
-velocities and image flags.  It uses the coords of each atom to assign
-it as a new atom to the processor that owns it.  This function is
-useful to add atoms to a simulation or (in tandem with
-lammps_reset_box()) to restore a previously extracted and saved state
-of a simulation.  Additional properties for the new atoms can then be
-assigned via the lammps_scatter_atoms() or lammps_extract_atom()
-functions.
-
-:line
-
-6.20 Calculating thermal conductivity :link(howto_20),h4
-
-The thermal conductivity kappa of a material can be measured in at
-least 4 ways using various options in LAMMPS.  See the examples/KAPPA
-directory for scripts that implement the 4 methods discussed here for
-a simple Lennard-Jones fluid model.  Also, see "this
-section"_Section_howto.html#howto_21 of the manual for an analogous
-discussion for viscosity.
-
-The thermal conductivity tensor kappa is a measure of the propensity
-of a material to transmit heat energy in a diffusive manner as given
-by Fourier's law
-
-J = -kappa grad(T)
-
-where J is the heat flux in units of energy per area per time and
-grad(T) is the spatial gradient of temperature.  The thermal
-conductivity thus has units of energy per distance per time per degree
-K and is often approximated as an isotropic quantity, i.e. as a
-scalar.
-
-The first method is to setup two thermostatted regions at opposite
-ends of a simulation box, or one in the middle and one at the end of a
-periodic box.  By holding the two regions at different temperatures
-with a "thermostatting fix"_Section_howto.html#howto_13, the energy
-added to the hot region should equal the energy subtracted from the
-cold region and be proportional to the heat flux moving between the
-regions.  See the papers by "Ikeshoji and Hafskjold"_#howto-Ikeshoji
-and "Wirnsberger et al"_#howto-Wirnsberger for details of this idea.
-Note that thermostatting fixes such as "fix nvt"_fix_nh.html, "fix
-langevin"_fix_langevin.html, and "fix
-temp/rescale"_fix_temp_rescale.html store the cumulative energy they
-add/subtract.
-
-Alternatively, as a second method, the "fix heat"_fix_heat.html or
-"fix ehex"_fix_ehex.html commands can be used in place of thermostats
-on each of two regions to add/subtract specified amounts of energy to
-both regions.  In both cases, the resulting temperatures of the two
-regions can be monitored with the "compute temp/region" command and
-the temperature profile of the intermediate region can be monitored
-with the "fix ave/chunk"_fix_ave_chunk.html and "compute
-ke/atom"_compute_ke_atom.html commands.
-
-The third method is to perform a reverse non-equilibrium MD simulation
-using the "fix thermal/conductivity"_fix_thermal_conductivity.html
-command which implements the rNEMD algorithm of Muller-Plathe.
-Kinetic energy is swapped between atoms in two different layers of the
-simulation box.  This induces a temperature gradient between the two
-layers which can be monitored with the "fix
-ave/chunk"_fix_ave_chunk.html and "compute
-ke/atom"_compute_ke_atom.html commands.  The fix tallies the
-cumulative energy transfer that it performs.  See the "fix
-thermal/conductivity"_fix_thermal_conductivity.html command for
-details.
-
-The fourth method is based on the Green-Kubo (GK) formula which
-relates the ensemble average of the auto-correlation of the heat flux
-to kappa.  The heat flux can be calculated from the fluctuations of
-per-atom potential and kinetic energies and per-atom stress tensor in
-a steady-state equilibrated simulation.  This is in contrast to the
-two preceding non-equilibrium methods, where energy flows continuously
-between hot and cold regions of the simulation box.
-
-The "compute heat/flux"_compute_heat_flux.html command can calculate
-the needed heat flux and describes how to implement the Green_Kubo
-formalism using additional LAMMPS commands, such as the "fix
-ave/correlate"_fix_ave_correlate.html command to calculate the needed
-auto-correlation.  See the doc page for the "compute
-heat/flux"_compute_heat_flux.html command for an example input script
-that calculates the thermal conductivity of solid Ar via the GK
-formalism.
-
-:line
-
-6.21 Calculating viscosity :link(howto_21),h4
-
-The shear viscosity eta of a fluid can be measured in at least 5 ways
-using various options in LAMMPS.  See the examples/VISCOSITY directory
-for scripts that implement the 5 methods discussed here for a simple
-Lennard-Jones fluid model.  Also, see "this
-section"_Section_howto.html#howto_20 of the manual for an analogous
-discussion for thermal conductivity.
-
-Eta is a measure of the propensity of a fluid to transmit momentum in
-a direction perpendicular to the direction of velocity or momentum
-flow.  Alternatively it is the resistance the fluid has to being
-sheared.  It is given by
-
-J = -eta grad(Vstream)
-
-where J is the momentum flux in units of momentum per area per time.
-and grad(Vstream) is the spatial gradient of the velocity of the fluid
-moving in another direction, normal to the area through which the
-momentum flows.  Viscosity thus has units of pressure-time.
-
-The first method is to perform a non-equilibrium MD (NEMD) simulation
-by shearing the simulation box via the "fix deform"_fix_deform.html
-command, and using the "fix nvt/sllod"_fix_nvt_sllod.html command to
-thermostat the fluid via the SLLOD equations of motion.
-Alternatively, as a second method, one or more moving walls can be
-used to shear the fluid in between them, again with some kind of
-thermostat that modifies only the thermal (non-shearing) components of
-velocity to prevent the fluid from heating up.
-
-In both cases, the velocity profile setup in the fluid by this
-procedure can be monitored by the "fix
-ave/chunk"_fix_ave_chunk.html command, which determines
-grad(Vstream) in the equation above.  E.g. the derivative in the
-y-direction of the Vx component of fluid motion or grad(Vstream) =
-dVx/dy.  The Pxy off-diagonal component of the pressure or stress
-tensor, as calculated by the "compute pressure"_compute_pressure.html
-command, can also be monitored, which is the J term in the equation
-above.  See "this section"_Section_howto.html#howto_13 of the manual
-for details on NEMD simulations.
-
-The third method is to perform a reverse non-equilibrium MD simulation
-using the "fix viscosity"_fix_viscosity.html command which implements
-the rNEMD algorithm of Muller-Plathe.  Momentum in one dimension is
-swapped between atoms in two different layers of the simulation box in
-a different dimension.  This induces a velocity gradient which can be
-monitored with the "fix ave/chunk"_fix_ave_chunk.html command.
-The fix tallies the cumulative momentum transfer that it performs.
-See the "fix viscosity"_fix_viscosity.html command for details.
-
-The fourth method is based on the Green-Kubo (GK) formula which
-relates the ensemble average of the auto-correlation of the
-stress/pressure tensor to eta.  This can be done in a fully
-equilibrated simulation which is in contrast to the two preceding
-non-equilibrium methods, where momentum flows continuously through the
-simulation box.
-
-Here is an example input script that calculates the viscosity of
-liquid Ar via the GK formalism:
-
-# Sample LAMMPS input script for viscosity of liquid Ar :pre
-
-units       real
-variable    T equal 86.4956
-variable    V equal vol
-variable    dt equal 4.0
-variable    p equal 400     # correlation length
-variable    s equal 5       # sample interval
-variable    d equal $p*$s   # dump interval :pre
-
-# convert from LAMMPS real units to SI :pre
-
-variable    kB equal 1.3806504e-23    # \[J/K/] Boltzmann
-variable    atm2Pa equal 101325.0
-variable    A2m equal 1.0e-10
-variable    fs2s equal 1.0e-15
-variable    convert equal $\{atm2Pa\}*$\{atm2Pa\}*$\{fs2s\}*$\{A2m\}*$\{A2m\}*$\{A2m\} :pre
-
-# setup problem :pre
-
-dimension    3
-boundary     p p p
-lattice      fcc 5.376 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1
-region       box block 0 4 0 4 0 4
-create_box   1 box
-create_atoms 1 box
-mass         1 39.948
-pair_style   lj/cut 13.0
-pair_coeff   * * 0.2381 3.405
-timestep     $\{dt\}
-thermo       $d :pre
-
-# equilibration and thermalization :pre
-
-velocity     all create $T 102486 mom yes rot yes dist gaussian
-fix          NVT all nvt temp $T $T 10 drag 0.2
-run          8000 :pre
-
-# viscosity calculation, switch to NVE if desired :pre
-
-#unfix       NVT
-#fix         NVE all nve :pre
-
-reset_timestep 0
-variable     pxy equal pxy
-variable     pxz equal pxz
-variable     pyz equal pyz
-fix          SS all ave/correlate $s $p $d &
-             v_pxy v_pxz v_pyz type auto file S0St.dat ave running
-variable     scale equal $\{convert\}/($\{kB\}*$T)*$V*$s*$\{dt\}
-variable     v11 equal trap(f_SS\[3\])*$\{scale\}
-variable     v22 equal trap(f_SS\[4\])*$\{scale\}
-variable     v33 equal trap(f_SS\[5\])*$\{scale\}
-thermo_style custom step temp press v_pxy v_pxz v_pyz v_v11 v_v22 v_v33
-run          100000
-variable     v equal (v_v11+v_v22+v_v33)/3.0
-variable     ndens equal count(all)/vol
-print        "average viscosity: $v \[Pa.s\] @ $T K, $\{ndens\} /A^3" :pre
-
-The fifth method is related to the above Green-Kubo method,
-but uses the Einstein formulation, analogous to the Einstein
-mean-square-displacement formulation for self-diffusivity. The
-time-integrated momentum fluxes play the role of Cartesian
-coordinates, whose mean-square displacement increases linearly
-with time at sufficiently long times.
-
-:line
-
-6.22 Calculating a diffusion coefficient :link(howto_22),h4
-
-The diffusion coefficient D of a material can be measured in at least
-2 ways using various options in LAMMPS.  See the examples/DIFFUSE
-directory for scripts that implement the 2 methods discussed here for
-a simple Lennard-Jones fluid model.
-
-The first method is to measure the mean-squared displacement (MSD) of
-the system, via the "compute msd"_compute_msd.html command.  The slope
-of the MSD versus time is proportional to the diffusion coefficient.
-The instantaneous MSD values can be accumulated in a vector via the
-"fix vector"_fix_vector.html command, and a line fit to the vector to
-compute its slope via the "variable slope"_variable.html function, and
-thus extract D.
-
-The second method is to measure the velocity auto-correlation function
-(VACF) of the system, via the "compute vacf"_compute_vacf.html
-command.  The time-integral of the VACF is proportional to the
-diffusion coefficient.  The instantaneous VACF values can be
-accumulated in a vector via the "fix vector"_fix_vector.html command,
-and time integrated via the "variable trap"_variable.html function,
-and thus extract D.
-
-:line
-
-6.23 Using chunks to calculate system properties :link(howto_23),h4
-
-In LAMMS, "chunks" are collections of atoms, as defined by the
-"compute chunk/atom"_compute_chunk_atom.html command, which assigns
-each atom to a chunk ID (or to no chunk at all).  The number of chunks
-and the assignment of chunk IDs to atoms can be static or change over
-time.  Examples of "chunks" are molecules or spatial bins or atoms
-with similar values (e.g. coordination number or potential energy).
-
-The per-atom chunk IDs can be used as input to two other kinds of
-commands, to calculate various properties of a system:
-
-"fix ave/chunk"_fix_ave_chunk.html
-any of the "compute */chunk"_compute.html commands :ul
-
-Here, each of the 3 kinds of chunk-related commands is briefly
-overviewed.  Then some examples are given of how to compute different
-properties with chunk commands.
-
-Compute chunk/atom command: :h4
-
-This compute can assign atoms to chunks of various styles.  Only atoms
-in the specified group and optional specified region are assigned to a
-chunk.  Here are some possible chunk definitions:
-
-atoms in same molecule | chunk ID = molecule ID |
-atoms of same atom type | chunk ID = atom type |
-all atoms with same atom property (charge, radius, etc) | chunk ID = output of compute property/atom |
-atoms in same cluster | chunk ID = output of "compute cluster/atom"_compute_cluster_atom.html command |
-atoms in same spatial bin | chunk ID = bin ID |
-atoms in same rigid body | chunk ID = molecule ID used to define rigid bodies |
-atoms with similar potential energy | chunk ID = output of "compute pe/atom"_compute_pe_atom.html |
-atoms with same local defect structure | chunk ID = output of "compute centro/atom"_compute_centro_atom.html or "compute coord/atom"_compute_coord_atom.html command :tb(s=|,c=2)
-
-Note that chunk IDs are integer values, so for atom properties or
-computes that produce a floating point value, they will be truncated
-to an integer.  You could also use the compute in a variable that
-scales the floating point value to spread it across multiple integers.
-
-Spatial bins can be of various kinds, e.g. 1d bins = slabs, 2d bins =
-pencils, 3d bins = boxes, spherical bins, cylindrical bins.
-
-This compute also calculates the number of chunks {Nchunk}, which is
-used by other commands to tally per-chunk data.  {Nchunk} can be a
-static value or change over time (e.g. the number of clusters).  The
-chunk ID for an individual atom can also be static (e.g. a molecule
-ID), or dynamic (e.g. what spatial bin an atom is in as it moves).
-
-Note that this compute allows the per-atom output of other
-"computes"_compute.html, "fixes"_fix.html, and
-"variables"_variable.html to be used to define chunk IDs for each
-atom.  This means you can write your own compute or fix to output a
-per-atom quantity to use as chunk ID.  See the "Modify"_Modify.html
-doc page for how to do this.  You can also define a "per-atom
-variable"_variable.html in the input script that uses a formula to
-generate a chunk ID for each atom.
-
-Fix ave/chunk command: :h4
-
-This fix takes the ID of a "compute
-chunk/atom"_compute_chunk_atom.html command as input.  For each chunk,
-it then sums one or more specified per-atom values over the atoms in
-each chunk.  The per-atom values can be any atom property, such as
-velocity, force, charge, potential energy, kinetic energy, stress,
-etc.  Additional keywords are defined for per-chunk properties like
-density and temperature.  More generally any per-atom value generated
-by other "computes"_compute.html, "fixes"_fix.html, and "per-atom
-variables"_variable.html, can be summed over atoms in each chunk.
-
-Similar to other averaging fixes, this fix allows the summed per-chunk
-values to be time-averaged in various ways, and output to a file.  The
-fix produces a global array as output with one row of values per
-chunk.
-
-Compute */chunk commands: :h4
-
-Currently the following computes operate on chunks of atoms to produce
-per-chunk values.
-
-"compute com/chunk"_compute_com_chunk.html
-"compute gyration/chunk"_compute_gyration_chunk.html
-"compute inertia/chunk"_compute_inertia_chunk.html
-"compute msd/chunk"_compute_msd_chunk.html
-"compute property/chunk"_compute_property_chunk.html
-"compute temp/chunk"_compute_temp_chunk.html
-"compute torque/chunk"_compute_vcm_chunk.html
-"compute vcm/chunk"_compute_vcm_chunk.html :ul
-
-They each take the ID of a "compute
-chunk/atom"_compute_chunk_atom.html command as input.  As their names
-indicate, they calculate the center-of-mass, radius of gyration,
-moments of inertia, mean-squared displacement, temperature, torque,
-and velocity of center-of-mass for each chunk of atoms.  The "compute
-property/chunk"_compute_property_chunk.html command can tally the
-count of atoms in each chunk and extract other per-chunk properties.
-
-The reason these various calculations are not part of the "fix
-ave/chunk command"_fix_ave_chunk.html, is that each requires a more
-complicated operation than simply summing and averaging over per-atom
-values in each chunk.  For example, many of them require calculation
-of a center of mass, which requires summing mass*position over the
-atoms and then dividing by summed mass.
-
-All of these computes produce a global vector or global array as
-output, wih one or more values per chunk.  They can be used
-in various ways:
-
-As input to the "fix ave/time"_fix_ave_time.html command, which can
-write the values to a file and optionally time average them. :ulb,l
-
-As input to the "fix ave/histo"_fix_ave_histo.html command to
-histogram values across chunks.  E.g. a histogram of cluster sizes or
-molecule diffusion rates. :l
-
-As input to special functions of "equal-style
-variables"_variable.html, like sum() and max().  E.g. to find the
-largest cluster or fastest diffusing molecule. :l
-:ule
-
-Example calculations with chunks :h4
-
-Here are examples using chunk commands to calculate various
-properties:
-
-(1) Average velocity in each of 1000 2d spatial bins:
-
-compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.01 units reduced
-fix 1 all ave/chunk 100 10 1000 cc1 vx vy file tmp.out :pre
-
-(2) Temperature in each spatial bin, after subtracting a flow
-velocity:
-
-compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.1 units reduced
-compute vbias all temp/profile 1 0 0 y 10
-fix 1 all ave/chunk 100 10 1000 cc1 temp bias vbias file tmp.out :pre
-
-(3) Center of mass of each molecule:
-
-compute cc1 all chunk/atom molecule
-compute myChunk all com/chunk cc1
-fix 1 all ave/time 100 1 100 c_myChunk\[*\] file tmp.out mode vector :pre
-
-(4) Total force on each molecule and ave/max across all molecules:
-
-compute cc1 all chunk/atom molecule
-fix 1 all ave/chunk 1000 1 1000 cc1 fx fy fz file tmp.out
-variable xave equal ave(f_1\[2\])
-variable xmax equal max(f_1\[2\])
-thermo 1000
-thermo_style custom step temp v_xave v_xmax :pre
-
-(5) Histogram of cluster sizes:
-
-compute cluster all cluster/atom 1.0
-compute cc1 all chunk/atom c_cluster compress yes
-compute size all property/chunk cc1 count
-fix 1 all ave/histo 100 1 100 0 20 20 c_size mode vector ave running beyond ignore file tmp.histo :pre
-
-:line
-
-6.24 Setting parameters for the "kspace_style pppm/disp"_kspace_style.html command :link(howto_24),h4
-
-The PPPM method computes interactions by splitting the pair potential
-into two parts, one of which is computed in a normal pairwise fashion,
-the so-called real-space part, and one of which is computed using the
-Fourier transform, the so called reciprocal-space or kspace part.  For
-both parts, the potential is not computed exactly but is approximated.
-Thus, there is an error in both parts of the computation, the
-real-space and the kspace error. The just mentioned facts are true
-both for the PPPM for Coulomb as well as dispersion interactions. The
-deciding difference - and also the reason why the parameters for
-pppm/disp have to be selected with more care - is the impact of the
-errors on the results: The kspace error of the PPPM for Coulomb and
-dispersion interaction and the real-space error of the PPPM for
-Coulomb interaction have the character of noise. In contrast, the
-real-space error of the PPPM for dispersion has a clear physical
-interpretation: the underprediction of cohesion. As a consequence, the
-real-space error has a much stronger effect than the kspace error on
-simulation results for pppm/disp.  Parameters must thus be chosen in a
-way that this error is much smaller than the kspace error.
-
-When using pppm/disp and not making any specifications on the PPPM
-parameters via the kspace modify command, parameters will be tuned
-such that the real-space error and the kspace error are equal.  This
-will result in simulations that are either inaccurate or slow, both of
-which is not desirable. For selecting parameters for the pppm/disp
-that provide fast and accurate simulations, there are two approaches,
-which both have their up- and downsides.
-
-The first approach is to set desired real-space an kspace accuracies
-via the {kspace_modify force/disp/real} and {kspace_modify
-force/disp/kspace} commands. Note that the accuracies have to be
-specified in force units and are thus dependent on the chosen unit
-settings. For real units, 0.0001 and 0.002 seem to provide reasonable
-accurate and efficient computations for the real-space and kspace
-accuracies.  0.002 and 0.05 work well for most systems using lj
-units. PPPM parameters will be generated based on the desired
-accuracies. The upside of this approach is that it usually provides a
-good set of parameters and will work for both the {kspace_modify diff
-ad} and {kspace_modify diff ik} options.  The downside of the method
-is that setting the PPPM parameters will take some time during the
-initialization of the simulation.
-
-The second approach is to set the parameters for the pppm/disp
-explicitly using the {kspace_modify mesh/disp}, {kspace_modify
-order/disp}, and {kspace_modify gewald/disp} commands. This approach
-requires a more experienced user who understands well the impact of
-the choice of parameters on the simulation accuracy and
-performance. This approach provides a fast initialization of the
-simulation. However, it is sensitive to errors: A combination of
-parameters that will perform well for one system might result in
-far-from-optimal conditions for other simulations. For example,
-parameters that provide accurate and fast computations for
-all-atomistic force fields can provide insufficient accuracy or
-united-atomistic force fields (which is related to that the latter
-typically have larger dispersion coefficients).
-
-To avoid inaccurate or inefficient simulations, the pppm/disp stops
-simulations with an error message if no action is taken to control the
-PPPM parameters. If the automatic parameter generation is desired and
-real-space and kspace accuracies are desired to be equal, this error
-message can be suppressed using the {kspace_modify disp/auto yes}
-command.
-
-A reasonable approach that combines the upsides of both methods is to
-make the first run using the {kspace_modify force/disp/real} and
-{kspace_modify force/disp/kspace} commands, write down the PPPM
-parameters from the outut, and specify these parameters using the
-second approach in subsequent runs (which have the same composition,
-force field, and approximately the same volume).
-
-Concerning the performance of the pppm/disp there are two more things
-to consider. The first is that when using the pppm/disp, the cutoff
-parameter does no longer affect the accuracy of the simulation
-(subject to that gewald/disp is adjusted when changing the cutoff).
-The performance can thus be increased by examining different values
-for the cutoff parameter. A lower bound for the cutoff is only set by
-the truncation error of the repulsive term of pair potentials.
-
-The second is that the mixing rule of the pair style has an impact on
-the computation time when using the pppm/disp. Fastest computations
-are achieved when using the geometric mixing rule. Using the
-arithmetic mixing rule substantially increases the computational cost.
-The computational overhead can be reduced using the {kspace_modify
-mix/disp geom} and {kspace_modify splittol} commands. The first
-command simply enforces geometric mixing of the dispersion
-coefficients in kspace computations.  This introduces some error in
-the computations but will also significantly speed-up the
-simulations. The second keyword sets the accuracy with which the
-dispersion coefficients are approximated using a matrix factorization
-approach.  This may result in better accuracy then using the first
-command, but will usually also not provide an equally good increase of
-efficiency.
-
-Finally, pppm/disp can also be used when no mixing rules apply.
-This can be achieved using the {kspace_modify mix/disp none} command.
-Note that the code does not check automatically whether any mixing
-rule is fulfilled. If mixing rules do not apply, the user will have
-to specify this command explicitly.
-
-:line
-
-6.25 Polarizable models :link(howto_25),h4
-
-In polarizable force fields the charge distributions in molecules and
-materials respond to their electrostatic environments. Polarizable
-systems can be simulated in LAMMPS using three methods:
-
-the fluctuating charge method, implemented in the "QEQ"_fix_qeq.html
-package, :ulb,l
-the adiabatic core-shell method, implemented in the
-"CORESHELL"_#howto_26 package, :l
-the thermalized Drude dipole method, implemented in the
-"USER-DRUDE"_#howto_27 package. :l
-:ule
-
-The fluctuating charge method calculates instantaneous charges on
-interacting atoms based on the electronegativity equalization
-principle. It is implemented in the "fix qeq"_fix_qeq.html which is
-available in several variants. It is a relatively efficient technique
-since no additional particles are introduced. This method allows for
-charge transfer between molecules or atom groups. However, because the
-charges are located at the interaction sites, off-plane components of
-polarization cannot be represented in planar molecules or atom groups.
-
-The two other methods share the same basic idea: polarizable atoms are
-split into one core atom and one satellite particle (called shell or
-Drude particle) attached to it by a harmonic spring.  Both atoms bear
-a charge and they represent collectively an induced electric dipole.
-These techniques are computationally more expensive than the QEq
-method because of additional particles and bonds. These two
-charge-on-spring methods differ in certain features, with the
-core-shell model being normally used for ionic/crystalline materials,
-whereas the so-called Drude model is normally used for molecular
-systems and fluid states.
-
-The core-shell model is applicable to crystalline materials where the
-high symmetry around each site leads to stable trajectories of the
-core-shell pairs. However, bonded atoms in molecules can be so close
-that a core would interact too strongly or even capture the Drude
-particle of a neighbor. The Drude dipole model is relatively more
-complex in order to remediate this and other issues. Specifically, the
-Drude model includes specific thermostating of the core-Drude pairs
-and short-range damping of the induced dipoles.
-
-The three polarization methods can be implemented through a
-self-consistent calculation of charges or induced dipoles at each
-timestep. In the fluctuating charge scheme this is done by the matrix
-inversion method in "fix qeq/point"_fix_qeq.html, but for core-shell
-or Drude-dipoles the relaxed-dipoles technique would require an slow
-iterative procedure. These self-consistent solutions yield accurate
-trajectories since the additional degrees of freedom representing
-polarization are massless.  An alternative is to attribute a mass to
-the additional degrees of freedom and perform time integration using
-an extended Lagrangian technique. For the fluctuating charge scheme
-this is done by "fix qeq/dynamic"_fix_qeq.html, and for the
-charge-on-spring models by the methods outlined in the next two
-sections. The assignment of masses to the additional degrees of
-freedom can lead to unphysical trajectories if care is not exerted in
-choosing the parameters of the polarizable models and the simulation
-conditions.
-
-In the core-shell model the vibration of the shells is kept faster
-than the ionic vibrations to mimic the fast response of the
-polarizable electrons.  But in molecular systems thermalizing the
-core-Drude pairs at temperatures comparable to the rest of the
-simulation leads to several problems (kinetic energy transfer, too
-short a timestep, etc.) In order to avoid these problems the relative
-motion of the Drude particles with respect to their cores is kept
-"cold" so the vibration of the core-Drude pairs is very slow,
-approaching the self-consistent regime.  In both models the
-temperature is regulated using the velocities of the center of mass of
-core+shell (or Drude) pairs, but in the Drude model the actual
-relative core-Drude particle motion is thermostated separately as
-well.
-
-:line
-
-6.26 Adiabatic core/shell model :link(howto_26),h4
-
-The adiabatic core-shell model by "Mitchell and
-Fincham"_#MitchellFincham is a simple method for adding
-polarizability to a system.  In order to mimic the electron shell of
-an ion, a satellite particle is attached to it. This way the ions are
-split into a core and a shell where the latter is meant to react to
-the electrostatic environment inducing polarizability.
-
-Technically, shells are attached to the cores by a spring force f =
-k*r where k is a parametrized spring constant and r is the distance
-between the core and the shell. The charges of the core and the shell
-add up to the ion charge, thus q(ion) = q(core) + q(shell). This
-setup introduces the ion polarizability (alpha) given by
-alpha = q(shell)^2 / k. In a
-similar fashion the mass of the ion is distributed on the core and the
-shell with the core having the larger mass.
-
-To run this model in LAMMPS, "atom_style"_atom_style.html {full} can
-be used since atom charge and bonds are needed.  Each kind of
-core/shell pair requires two atom types and a bond type.  The core and
-shell of a core/shell pair should be bonded to each other with a
-harmonic bond that provides the spring force. For example, a data file
-for NaCl, as found in examples/coreshell, has this format:
-
-432   atoms  # core and shell atoms
-216   bonds  # number of core/shell springs :pre
-
-4     atom types  # 2 cores and 2 shells for Na and Cl
-2     bond types :pre
-
-0.0 24.09597 xlo xhi
-0.0 24.09597 ylo yhi
-0.0 24.09597 zlo zhi :pre
-
-Masses       # core/shell mass ratio = 0.1 :pre
-
-1 20.690784  # Na core
-2 31.90500   # Cl core
-3 2.298976   # Na shell
-4 3.54500    # Cl shell :pre
-
-Atoms :pre
-
-1    1    2   1.5005    0.00000000   0.00000000   0.00000000 # core of core/shell pair 1
-2    1    4  -2.5005    0.00000000   0.00000000   0.00000000 # shell of core/shell pair 1
-3    2    1   1.5056    4.01599500   4.01599500   4.01599500 # core of core/shell pair 2
-4    2    3  -0.5056    4.01599500   4.01599500   4.01599500 # shell of core/shell pair 2
-(...) :pre
-
-Bonds   # Bond topology for spring forces :pre
-
-1     2     1     2   # spring for core/shell pair 1
-2     2     3     4   # spring for core/shell pair 2
-(...) :pre
-
-Non-Coulombic (e.g. Lennard-Jones) pairwise interactions are only
-defined between the shells.  Coulombic interactions are defined
-between all cores and shells.  If desired, additional bonds can be
-specified between cores.
-
-The "special_bonds"_special_bonds.html command should be used to
-turn-off the Coulombic interaction within core/shell pairs, since that
-interaction is set by the bond spring.  This is done using the
-"special_bonds"_special_bonds.html command with a 1-2 weight = 0.0,
-which is the default value.  It needs to be considered whether one has
-to adjust the "special_bonds"_special_bonds.html weighting according
-to the molecular topology since the interactions of the shells are
-bypassed over an extra bond.
-
-Note that this core/shell implementation does not require all ions to
-be polarized.  One can mix core/shell pairs and ions without a
-satellite particle if desired.
-
-Since the core/shell model permits distances of r = 0.0 between the
-core and shell, a pair style with a "cs" suffix needs to be used to
-implement a valid long-range Coulombic correction.  Several such pair
-styles are provided in the CORESHELL package.  See "this doc
-page"_pair_cs.html for details.  All of the core/shell enabled pair
-styles require the use of a long-range Coulombic solver, as specified
-by the "kspace_style"_kspace_style.html command.  Either the PPPM or
-Ewald solvers can be used.
-
-For the NaCL example problem, these pair style and bond style settings
-are used:
-
-pair_style      born/coul/long/cs 20.0 20.0
-pair_coeff      * *      0.0 1.000   0.00  0.00   0.00
-pair_coeff      3 3    487.0 0.23768 0.00  1.05   0.50 #Na-Na
-pair_coeff      3 4 145134.0 0.23768 0.00  6.99   8.70 #Na-Cl
-pair_coeff      4 4 405774.0 0.23768 0.00 72.40 145.40 #Cl-Cl :pre
-
-bond_style      harmonic
-bond_coeff      1 63.014 0.0
-bond_coeff      2 25.724 0.0 :pre
-
-When running dynamics with the adiabatic core/shell model, the
-following issues should be considered.  The relative motion of
-the core and shell particles corresponds to the polarization,
-hereby an instantaneous relaxation of the shells is approximated
-and a fast core/shell spring frequency ensures a nearly constant
-internal kinetic energy during the simulation.
-Thermostats can alter this polarization behaviour, by scaling the
-internal kinetic energy, meaning the shell will not react freely to
-its electrostatic environment.
-Therefore it is typically desirable to decouple the relative motion of
-the core/shell pair, which is an imaginary degree of freedom, from the
-real physical system.  To do that, the "compute
-temp/cs"_compute_temp_cs.html command can be used, in conjunction with
-any of the thermostat fixes, such as "fix nvt"_fix_nh.html or "fix
-langevin"_fix_langevin.  This compute uses the center-of-mass velocity
-of the core/shell pairs to calculate a temperature, and insures that
-velocity is what is rescaled for thermostatting purposes.  This
-compute also works for a system with both core/shell pairs and
-non-polarized ions (ions without an attached satellite particle).  The
-"compute temp/cs"_compute_temp_cs.html command requires input of two
-groups, one for the core atoms, another for the shell atoms.
-Non-polarized ions which might also be included in the treated system
-should not be included into either of these groups, they are taken
-into account by the {group-ID} (2nd argument) of the compute.  The
-groups can be defined using the "group {type}"_group.html command.
-Note that to perform thermostatting using this definition of
-temperature, the "fix modify temp"_fix_modify.html command should be
-used to assign the compute to the thermostat fix.  Likewise the
-"thermo_modify temp"_thermo_modify.html command can be used to make
-this temperature be output for the overall system.
-
-For the NaCl example, this can be done as follows:
-
-group cores type 1 2
-group shells type 3 4
-compute CSequ all temp/cs cores shells
-fix thermoberendsen all temp/berendsen 1427 1427 0.4    # thermostat for the true physical system
-fix thermostatequ all nve                               # integrator as needed for the berendsen thermostat
-fix_modify thermoberendsen temp CSequ
-thermo_modify temp CSequ                                # output of center-of-mass derived temperature :pre
-
-The pressure for the core/shell system is computed via the regular
-LAMMPS convention by "treating the cores and shells as individual
-particles"_#MitchellFincham2. For the thermo output of the pressure
-as well as for the application of a barostat, it is necessary to
-use an additional "pressure"_compute_pressure compute based on the
-default "temperature"_compute_temp and specifying it as a second
-argument in "fix modify"_fix_modify.html and
-"thermo_modify"_thermo_modify.html resulting in:
-
-(...)
-compute CSequ all temp/cs cores shells
-compute thermo_press_lmp all pressure thermo_temp       # pressure for individual particles
-thermo_modify temp CSequ press thermo_press_lmp         # modify thermo to regular pressure
-fix press_bar all npt temp 300 300 0.04 iso 0 0 0.4
-fix_modify press_bar temp CSequ press thermo_press_lmp  # pressure modification for correct kinetic scalar :pre
-
-If "compute temp/cs"_compute_temp_cs.html is used, the decoupled
-relative motion of the core and the shell should in theory be
-stable.  However numerical fluctuation can introduce a small
-momentum to the system, which is noticable over long trajectories.
-Therefore it is recommendable to use the "fix
-momentum"_fix_momentum.html command in combination with "compute
-temp/cs"_compute_temp_cs.html when equilibrating the system to
-prevent any drift.
-
-When initializing the velocities of a system with core/shell pairs, it
-is also desirable to not introduce energy into the relative motion of
-the core/shell particles, but only assign a center-of-mass velocity to
-the pairs.  This can be done by using the {bias} keyword of the
-"velocity create"_velocity.html command and assigning the "compute
-temp/cs"_compute_temp_cs.html command to the {temp} keyword of the
-"velocity"_velocity.html command, e.g.
-
-velocity all create 1427 134 bias yes temp CSequ
-velocity all scale 1427 temp CSequ :pre
-
-To maintain the correct polarizability of the core/shell pairs, the
-kinetic energy of the internal motion shall remain nearly constant.
-Therefore the choice of spring force and mass ratio need to ensure
-much faster relative motion of the 2 atoms within the core/shell pair
-than their center-of-mass velocity. This allows the shells to
-effectively react instantaneously to the electrostatic environment and
-limits energy transfer to or from the core/shell oscillators.
-This fast movement also dictates the timestep that can be used.
-
-The primary literature of the adiabatic core/shell model suggests that
-the fast relative motion of the core/shell pairs only allows negligible
-energy transfer to the environment.
-The mentioned energy transfer will typically lead to a small drift
-in total energy over time.  This internal energy can be monitored
-using the "compute chunk/atom"_compute_chunk_atom.html and "compute
-temp/chunk"_compute_temp_chunk.html commands.  The internal kinetic
-energies of each core/shell pair can then be summed using the sum()
-special function of the "variable"_variable.html command.  Or they can
-be time/averaged and output using the "fix ave/time"_fix_ave_time.html
-command.  To use these commands, each core/shell pair must be defined
-as a "chunk".  If each core/shell pair is defined as its own molecule,
-the molecule ID can be used to define the chunks.  If cores are bonded
-to each other to form larger molecules, the chunks can be identified
-by the "fix property/atom"_fix_property_atom.html via assigning a
-core/shell ID to each atom using a special field in the data file read
-by the "read_data"_read_data.html command.  This field can then be
-accessed by the "compute property/atom"_compute_property_atom.html
-command, to use as input to the "compute
-chunk/atom"_compute_chunk_atom.html command to define the core/shell
-pairs as chunks.
-
-For example if core/shell pairs are the only molecules:
-
-read_data NaCl_CS_x0.1_prop.data
-compute prop all property/atom molecule
-compute cs_chunk all chunk/atom c_prop
-compute cstherm all temp/chunk cs_chunk temp internal com yes cdof 3.0     # note the chosen degrees of freedom for the core/shell pairs
-fix ave_chunk all ave/time 10 1 10 c_cstherm file chunk.dump mode vector :pre
-
-For example if core/shell pairs and other molecules are present:
-
-fix csinfo all property/atom i_CSID                       # property/atom command
-read_data NaCl_CS_x0.1_prop.data fix csinfo NULL CS-Info  # atom property added in the data-file
-compute prop all property/atom i_CSID
-(...) :pre
-
-The additional section in the date file would be formatted like this:
-
-CS-Info         # header of additional section :pre
-
-1   1           # column 1 = atom ID, column 2 = core/shell ID
-2   1
-3   2
-4   2
-5   3
-6   3
-7   4
-8   4
-(...) :pre
-
-:line
-
-6.27 Drude induced dipoles :link(howto_27),h4
-
-The thermalized Drude model, similarly to the "core-shell"_#howto_26
-model, represents induced dipoles by a pair of charges (the core atom
-and the Drude particle) connected by a harmonic spring. The Drude
-model has a number of features aimed at its use in molecular systems
-("Lamoureux and Roux"_#howto-Lamoureux):
-
-Thermostating of the additional degrees of freedom associated with the
-induced dipoles at very low temperature, in terms of the reduced
-coordinates of the Drude particles with respect to their cores. This
-makes the trajectory close to that of relaxed induced dipoles. :ulb,l
-
-Consistent definition of 1-2 to 1-4 neighbors. A core-Drude particle
-pair represents a single (polarizable) atom, so the special screening
-factors in a covalent structure should be the same for the core and
-the Drude particle.  Drude particles have to inherit the 1-2, 1-3, 1-4
-special neighbor relations from their respective cores. :l
-
-Stabilization of the interactions between induced dipoles. Drude
-dipoles on covalently bonded atoms interact too strongly due to the
-short distances, so an atom may capture the Drude particle of a
-neighbor, or the induced dipoles within the same molecule may align
-too much. To avoid this, damping at short range can be done by Thole
-functions (for which there are physical grounds). This Thole damping
-is applied to the point charges composing the induced dipole (the
-charge of the Drude particle and the opposite charge on the core, not
-to the total charge of the core atom). :l
-:ule
-
-A detailed tutorial covering the usage of Drude induced dipoles in
-LAMMPS is "available here"_tutorial_drude.html.
-
-As with the core-shell model, the cores and Drude particles should
-appear in the data file as standard atoms. The same holds for the
-springs between them, which are described by standard harmonic bonds.
-The nature of the atoms (core, Drude particle or non-polarizable) is
-specified via the "fix drude"_fix_drude.html command.  The special
-list of neighbors is automatically refactored to account for the
-equivalence of core and Drude particles as regards special 1-2 to 1-4
-screening. It may be necessary to use the {extra/special/per/atom}
-keyword of the "read_data"_read_data.html command. If using "fix
-shake"_fix_shake.html, make sure no Drude particle is in this fix
-group.
-
-There are two ways to thermostat the Drude particles at a low
-temperature: use either "fix langevin/drude"_fix_langevin_drude.html
-for a Langevin thermostat, or "fix
-drude/transform/*"_fix_drude_transform.html for a Nose-Hoover
-thermostat. The former requires use of the command "comm_modify vel
-yes"_comm_modify.html. The latter requires two separate integration
-fixes like {nvt} or {npt}. The correct temperatures of the reduced
-degrees of freedom can be calculated using the "compute
-temp/drude"_compute_temp_drude.html. This requires also to use the
-command {comm_modify vel yes}.
-
-Short-range damping of the induced dipole interactions can be achieved
-using Thole functions through the "pair style
-thole"_pair_thole.html in "pair_style hybrid/overlay"_pair_hybrid.html
-with a Coulomb pair style. It may be useful to use {coul/long/cs} or
-similar from the CORESHELL package if the core and Drude particle come
-too close, which can cause numerical issues.
-
-:line
-
-6.28 Magnetic spins :link(howto_28),h4
-
-Classical magnetic spin simualtions can be performed via the SPIN
-package.  The algrorithmic and implementation details are described in
-"Tranchida"_#Tranchida7.
-
-The model representents the simulation of atomic magnetic spins
-coupled to lattice vibrations. The dynamics of those magnetic spins
-can be used to simulate a broad range a phenomena related to
-magneto-elasticity, or or to study the influence of defects on the
-magnetic properties of materials.
-
-The magnetic spins are interacting with each others and with the 
-lattice via pair interactions. Typically, the magnetic exchange 
-interaction can be defined using the 
-"pair/spin/exchange"_pair_spin_exchange.html command. This exchange
-applies a magnetic torque to a given spin, considering the orientation
-of its neighboring spins and their relative distances. 
-It also applies a force on the atoms as a function of the spin 
-orientations and their associated inter-atomic distances. 
- 
-The command "fix precession/spin"_fix_precession_spin.html allows to
-apply a constant magnetic torque on all the spins in the system. This
-torque can be an external magnetic field (Zeeman interaction), or an
-uniaxial magnetic anisotropy. 
-
-A Langevin thermostat can be applied to those magnetic spins using 
-"fix langevin/spin"_fix_langevin_spin.html. Typically, this thermostat 
-can be coupled to another Langevin thermostat applied to the atoms 
-using "fix langevin"_fix_langevin.html in order to simulate 
-thermostated spin-lattice system. 
-
-The magnetic Gilbert damping can also be applied using "fix 
-langevin/spin"_fix_langevin_spin.html. It allows to either dissipate 
-the thermal energy of the Langevin thermostat, or to perform a 
-relaxation of the magnetic configuration toward an equilibrium state.
-
-All the computed magnetic properties can be outputed by two main 
-commands. The first one is "compute spin"_compute_spin.html, that 
-enables to evaluate magnetic averaged quantities, such as the total 
-magnetization of the system along x, y, or z, the spin temperature, or
-the magnetic energy. The second command is "compute 
-property/atom"_compute_property_atom.html. It enables to output all the
-per atom magnetic quantities. Typically, the orientation of a given 
-magnetic spin, or the magnetic force acting on this spin.
-
-:line
-:line
-
-:link(howto-Berendsen)
-[(Berendsen)] Berendsen, Grigera, Straatsma, J Phys Chem, 91,
-6269-6271 (1987).
-
-:link(howto-Cornell)
-[(Cornell)] Cornell, Cieplak, Bayly, Gould, Merz, Ferguson,
-Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995).
-
-:link(Horn)
-[(Horn)] Horn, Swope, Pitera, Madura, Dick, Hura, and Head-Gordon,
-J Chem Phys, 120, 9665 (2004).
-
-:link(howto-Ikeshoji)
-[(Ikeshoji)] Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261
-(1994).
-
-:link(howto-Wirnsberger)
-[(Wirnsberger)] Wirnsberger, Frenkel, and Dellago, J Chem Phys, 143, 124104
-(2015).
-
-:link(howto-MacKerell)
-[(MacKerell)] MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field,
-Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).
-
-:link(howto-Mayo)
-[(Mayo)] Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
-(1990).
-
-:link(Jorgensen1)
-[(Jorgensen)] Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem
-Phys, 79, 926 (1983).
-
-:link(Price1)
-[(Price)] Price and Brooks, J Chem Phys, 121, 10096 (2004).
-
-:link(Shinoda1)
-[(Shinoda)] Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).
-
-:link(MitchellFincham)
-[(Mitchell and Fincham)] Mitchell, Fincham, J Phys Condensed Matter,
-5, 1031-1038 (1993).
-
-:link(MitchellFincham2)
-[(Fincham)] Fincham, Mackrodt and Mitchell, J Phys Condensed Matter,
-6, 393-404 (1994).
-
-:link(howto-Lamoureux)
-[(Lamoureux and Roux)] G. Lamoureux, B. Roux, J. Chem. Phys 119, 3025 (2003)
-
-:link(Tranchida7)
-[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson, 
-arXiv preprint arXiv:1801.10233, (2018).
diff --git a/doc/src/Section_intro.txt b/doc/src/Section_intro.txt
deleted file mode 100644
index 36a1181ca7..0000000000
--- a/doc/src/Section_intro.txt
+++ /dev/null
@@ -1,550 +0,0 @@
-"Previous Section"_Manual.html - "LAMMPS WWW Site"_lws - "LAMMPS
-Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Section_start.html :c
-
-:link(lws,http://lammps.sandia.gov)
-:link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
-
-:line
-
-1. Introduction :h2
-
-This section provides an overview of what LAMMPS can and can't do,
-describes what it means for LAMMPS to be an open-source code, and
-acknowledges the funding and people who have contributed to LAMMPS
-over the years.
-
-1.1 "What is LAMMPS"_#intro_1
-1.2 "LAMMPS features"_#intro_2
-1.3 "LAMMPS non-features"_#intro_3
-1.4 "Open source distribution"_#intro_4
-1.5 "Acknowledgments and citations"_#intro_5 :all(b)
-
-:line
-:line
-
-1.1 What is LAMMPS :link(intro_1),h4
-
-LAMMPS is a classical molecular dynamics code that models an ensemble
-of particles in a liquid, solid, or gaseous state.  It can model
-atomic, polymeric, biological, metallic, granular, and coarse-grained
-systems using a variety of force fields and boundary conditions.
-
-For examples of LAMMPS simulations, see the Publications page of the
-"LAMMPS WWW Site"_lws.
-
-LAMMPS runs efficiently on single-processor desktop or laptop
-machines, but is designed for parallel computers.  It will run on any
-parallel machine that compiles C++ and supports the "MPI"_mpi
-message-passing library.  This includes distributed- or shared-memory
-parallel machines and Beowulf-style clusters.
-
-:link(mpi,http://www-unix.mcs.anl.gov/mpi)
-
-LAMMPS can model systems with only a few particles up to millions or
-billions.  See "Section 8"_Section_perf.html for information on
-LAMMPS performance and scalability, or the Benchmarks section of the
-"LAMMPS WWW Site"_lws.
-
-LAMMPS is a freely-available open-source code, distributed under the
-terms of the "GNU Public License"_gnu, which means you can use or
-modify the code however you wish.  See "this section"_#intro_4 for a
-brief discussion of the open-source philosophy.
-
-:link(gnu,http://www.gnu.org/copyleft/gpl.html)
-
-LAMMPS is designed to be easy to modify or extend with new
-capabilities, such as new force fields, atom types, boundary
-conditions, or diagnostics.  See the "Modify"_Modify.html doc page for
-more details.
-
-The current version of LAMMPS is written in C++.  Earlier versions
-were written in F77 and F90.  See
-"Section 13"_Section_history.html for more information on
-different versions.  All versions can be downloaded from the "LAMMPS
-WWW Site"_lws.
-
-LAMMPS was originally developed under a US Department of Energy CRADA
-(Cooperative Research and Development Agreement) between two DOE labs
-and 3 companies.  It is distributed by "Sandia National Labs"_snl.
-See "this section"_#intro_5 for more information on LAMMPS funding and
-individuals who have contributed to LAMMPS.
-
-:link(snl,http://www.sandia.gov)
-
-In the most general sense, LAMMPS integrates Newton's equations of
-motion for collections of atoms, molecules, or macroscopic particles
-that interact via short- or long-range forces with a variety of
-initial and/or boundary conditions.  For computational efficiency
-LAMMPS uses neighbor lists to keep track of nearby particles.  The
-lists are optimized for systems with particles that are repulsive at
-short distances, so that the local density of particles never becomes
-too large.  On parallel machines, LAMMPS uses spatial-decomposition
-techniques to partition the simulation domain into small 3d
-sub-domains, one of which is assigned to each processor.  Processors
-communicate and store "ghost" atom information for atoms that border
-their sub-domain.  LAMMPS is most efficient (in a parallel sense) for
-systems whose particles fill a 3d rectangular box with roughly uniform
-density.  Papers with technical details of the algorithms used in
-LAMMPS are listed in "this section"_#intro_5.
-
-:line
-
-1.2 LAMMPS features :link(intro_2),h4
-
-This section highlights LAMMPS features, with pointers to specific
-commands which give more details.  If LAMMPS doesn't have your
-favorite interatomic potential, boundary condition, or atom type, see
-the "Modify"_Modify.html doc page, which describes how you can add it
-to LAMMPS.
-
-General features :h4
-
-  runs on a single processor or in parallel
-  distributed-memory message-passing parallelism (MPI)
-  spatial-decomposition of simulation domain for parallelism
-  open-source distribution
-  highly portable C++
-  optional libraries used: MPI and single-processor FFT
-  GPU (CUDA and OpenCL), Intel(R) Xeon Phi(TM) coprocessors, and OpenMP support for many code features
-  easy to extend with new features and functionality
-  runs from an input script
-  syntax for defining and using variables and formulas
-  syntax for looping over runs and breaking out of loops
-  run one or multiple simulations simultaneously (in parallel) from one script
-  build as library, invoke LAMMPS thru library interface or provided Python wrapper
-  couple with other codes: LAMMPS calls other code, other code calls LAMMPS, umbrella code calls both :ul
-
-Particle and model types :h4
-("atom style"_atom_style.html command)
-
-  atoms
-  coarse-grained particles (e.g. bead-spring polymers)
-  united-atom polymers or organic molecules
-  all-atom polymers, organic molecules, proteins, DNA
-  metals
-  granular materials
-  coarse-grained mesoscale models
-  finite-size spherical and ellipsoidal particles
-  finite-size  line segment (2d) and triangle (3d) particles
-  point dipole particles
-  rigid collections of particles
-  hybrid combinations of these :ul
-
-Force fields :h4
-("pair style"_pair_style.html, "bond style"_bond_style.html,
-"angle style"_angle_style.html, "dihedral style"_dihedral_style.html,
-"improper style"_improper_style.html, "kspace style"_kspace_style.html
-commands)
-
-  pairwise potentials: Lennard-Jones, Buckingham, Morse, Born-Mayer-Huggins, \
-    Yukawa, soft, class 2 (COMPASS), hydrogen bond, tabulated
-  charged pairwise potentials: Coulombic, point-dipole
-  manybody potentials: EAM, Finnis/Sinclair EAM, modified EAM (MEAM), \
-    embedded ion method (EIM), EDIP, ADP, Stillinger-Weber, Tersoff, \
-    REBO, AIREBO, ReaxFF, COMB, SNAP, Streitz-Mintmire, 3-body polymorphic
-  long-range interactions for charge, point-dipoles, and LJ dispersion: \
-    Ewald, Wolf, PPPM (similar to particle-mesh Ewald)
-  polarization models: "QEq"_fix_qeq.html, \
-    "core/shell model"_Section_howto.html#howto_26, \
-    "Drude dipole model"_Section_howto.html#howto_27
-  charge equilibration (QEq via dynamic, point, shielded, Slater methods)
-  coarse-grained potentials: DPD, GayBerne, REsquared, colloidal, DLVO
-  mesoscopic potentials: granular, Peridynamics, SPH
-  electron force field (eFF, AWPMD)
-  bond potentials: harmonic, FENE, Morse, nonlinear, class 2, \
-    quartic (breakable)
-  angle potentials: harmonic, CHARMM, cosine, cosine/squared, cosine/periodic, \
-    class 2 (COMPASS)
-  dihedral potentials: harmonic, CHARMM, multi-harmonic, helix, \
-    class 2 (COMPASS), OPLS
-  improper potentials: harmonic, cvff, umbrella, class 2 (COMPASS)
-  polymer potentials: all-atom, united-atom, bead-spring, breakable
-  water potentials: TIP3P, TIP4P, SPC
-  implicit solvent potentials: hydrodynamic lubrication, Debye
-  force-field compatibility with common CHARMM, AMBER, DREIDING, \
-    OPLS, GROMACS, COMPASS options
-  access to "KIM archive"_http://openkim.org of potentials via \
-    "pair kim"_pair_kim.html
-  hybrid potentials: multiple pair, bond, angle, dihedral, improper \
-    potentials can be used in one simulation
-  overlaid potentials: superposition of multiple pair potentials :ul
-
-Atom creation :h4
-("read_data"_read_data.html, "lattice"_lattice.html,
-"create_atoms"_create_atoms.html, "delete_atoms"_delete_atoms.html,
-"displace_atoms"_displace_atoms.html, "replicate"_replicate.html commands)
-
-  read in atom coords from files
-  create atoms on one or more lattices (e.g. grain boundaries)
-  delete geometric or logical groups of atoms (e.g. voids)
-  replicate existing atoms multiple times
-  displace atoms :ul
-
-Ensembles, constraints, and boundary conditions :h4
-("fix"_fix.html command)
-
-  2d or 3d systems
-  orthogonal or non-orthogonal (triclinic symmetry) simulation domains
-  constant NVE, NVT, NPT, NPH, Parinello/Rahman integrators
-  thermostatting options for groups and geometric regions of atoms
-  pressure control via Nose/Hoover or Berendsen barostatting in 1 to 3 dimensions
-  simulation box deformation (tensile and shear)
-  harmonic (umbrella) constraint forces
-  rigid body constraints
-  SHAKE bond and angle constraints
-  Monte Carlo bond breaking, formation, swapping
-  atom/molecule insertion and deletion
-  walls of various kinds
-  non-equilibrium molecular dynamics (NEMD)
-  variety of additional boundary conditions and constraints :ul
-
-Integrators :h4
-("run"_run.html, "run_style"_run_style.html, "minimize"_minimize.html commands)
-
-  velocity-Verlet integrator
-  Brownian dynamics
-  rigid body integration
-  energy minimization via conjugate gradient or steepest descent relaxation
-  rRESPA hierarchical timestepping
-  rerun command for post-processing of dump files :ul
-
-Diagnostics :h4
-
-  see the various flavors of the "fix"_fix.html and "compute"_compute.html commands :ul
-
-Output :h4
-("dump"_dump.html, "restart"_restart.html commands)
-
-  log file of thermodynamic info
-  text dump files of atom coords, velocities, other per-atom quantities
-  binary restart files
-  parallel I/O of dump and restart files
-  per-atom quantities (energy, stress, centro-symmetry parameter, CNA, etc)
-  user-defined system-wide (log file) or per-atom (dump file) calculations
-  spatial and time averaging of per-atom quantities
-  time averaging of system-wide quantities
-  atom snapshots in native, XYZ, XTC, DCD, CFG formats :ul
-
-Multi-replica models :h4
-
-"nudged elastic band"_neb.html
-"parallel replica dynamics"_prd.html
-"temperature accelerated dynamics"_tad.html
-"parallel tempering"_temper.html
-
-Pre- and post-processing :h4
-
-Various pre- and post-processing serial tools are packaged with
-LAMMPS; see the "Tools"_Tools.html doc page for details. :ulb,l
-
-Our group has also written and released a separate toolkit called
-"Pizza.py"_pizza which provides tools for doing setup, analysis,
-plotting, and visualization for LAMMPS simulations.  Pizza.py is
-written in "Python"_python and is available for download from "the
-Pizza.py WWW site"_pizza. :l
-:ule
-
-:link(pizza,http://www.sandia.gov/~sjplimp/pizza.html)
-:link(python,http://www.python.org)
-
-Specialized features :h4
-
-LAMMPS can be built with optional packages which implement a variety
-of additional capabilities.  An overview of all the packages is "given
-here"_Packages.html.
-
-These are some LAMMPS capabilities which you may not think of as
-typical classical molecular dynamics options:
-
-"static"_balance.html and "dynamic load-balancing"_fix_balance.html
-"generalized aspherical particles"_body.html
-"stochastic rotation dynamics (SRD)"_fix_srd.html
-"real-time visualization and interactive MD"_fix_imd.html
-calculate "virtual diffraction patterns"_compute_xrd.html
-"atom-to-continuum coupling"_fix_atc.html with finite elements
-coupled rigid body integration via the "POEMS"_fix_poems.html library
-"QM/MM coupling"_fix_qmmm.html
-"path-integral molecular dynamics (PIMD)"_fix_ipi.html and "this as well"_fix_pimd.html
-Monte Carlo via "GCMC"_fix_gcmc.html and "tfMC"_fix_tfmc.html "atom swapping"_fix_atom_swap.html and "bond swapping"_fix_bond_swap.html
-"Direct Simulation Monte Carlo"_pair_dsmc.html for low-density fluids
-"Peridynamics mesoscale modeling"_pair_peri.html
-"Lattice Boltzmann fluid"_fix_lb_fluid.html
-"targeted"_fix_tmd.html and "steered"_fix_smd.html molecular dynamics
-"two-temperature electron model"_fix_ttm.html :ul
-
-:line
-
-1.3 LAMMPS non-features :link(intro_3),h4
-
-LAMMPS is designed to efficiently compute Newton's equations of motion
-for a system of interacting particles.  Many of the tools needed to
-pre- and post-process the data for such simulations are not included
-in the LAMMPS kernel for several reasons:
-
-the desire to keep LAMMPS simple
-they are not parallel operations
-other codes already do them
-limited development resources :ul
-
-Specifically, LAMMPS itself does not:
-
-run thru a GUI
-build molecular systems
-assign force-field coefficients automagically
-perform sophisticated analyses of your MD simulation
-visualize your MD simulation
-plot your output data :ul
-
-A few tools for pre- and post-processing tasks are provided as part of
-the LAMMPS package; they are described on the "Tools"_Tools.html doc
-page.  However, many people use other codes or write their own tools
-for these tasks.
-
-As noted above, our group has also written and released a separate
-toolkit called "Pizza.py"_pizza which addresses some of the listed
-bullets.  It provides tools for doing setup, analysis, plotting, and
-visualization for LAMMPS simulations.  Pizza.py is written in
-"Python"_python and is available for download from "the Pizza.py WWW
-site"_pizza.
-
-LAMMPS requires as input a list of initial atom coordinates and types,
-molecular topology information, and force-field coefficients assigned
-to all atoms and bonds.  LAMMPS will not build molecular systems and
-assign force-field parameters for you.
-
-For atomic systems LAMMPS provides a "create_atoms"_create_atoms.html
-command which places atoms on solid-state lattices (fcc, bcc,
-user-defined, etc).  Assigning small numbers of force field
-coefficients can be done via the "pair coeff"_pair_coeff.html, "bond
-coeff"_bond_coeff.html, "angle coeff"_angle_coeff.html, etc commands.
-For molecular systems or more complicated simulation geometries, users
-typically use another code as a builder and convert its output to
-LAMMPS input format, or write their own code to generate atom
-coordinate and molecular topology for LAMMPS to read in.
-
-For complicated molecular systems (e.g. a protein), a multitude of
-topology information and hundreds of force-field coefficients must
-typically be specified.  We suggest you use a program like
-"CHARMM"_charmm or "AMBER"_amber or other molecular builders to setup
-such problems and dump its information to a file.  You can then
-reformat the file as LAMMPS input.  Some of the tools described on the
-"Tools"_Tools.html doc page can assist in this process.
-
-Similarly, LAMMPS creates output files in a simple format.  Most users
-post-process these files with their own analysis tools or re-format
-them for input into other programs, including visualization packages.
-If you are convinced you need to compute something on-the-fly as
-LAMMPS runs, see the "Modify"_Modify.html doc page for a discussion of
-how you can use the "dump"_dump.html and "compute"_compute.html and
-"fix"_fix.html commands to print out data of your choosing.  Keep in
-mind that complicated computations can slow down the molecular
-dynamics timestepping, particularly if the computations are not
-parallel, so it is often better to leave such analysis to
-post-processing codes.
-
-For high-quality visualization we recommend the
-following packages:
-
-"VMD"_http://www.ks.uiuc.edu/Research/vmd
-"AtomEye"_http://mt.seas.upenn.edu/Archive/Graphics/A
-"OVITO"_http://www.ovito.org/
-"ParaView"_http://www.paraview.org/
-"PyMol"_http://www.pymol.org
-"Raster3d"_http://www.bmsc.washington.edu/raster3d/raster3d.html
-"RasMol"_http://www.openrasmol.org :ul
-
-Other features that LAMMPS does not yet (and may never) support are
-discussed in "Section 13"_Section_history.html.
-
-Finally, these are freely-available molecular dynamics codes, most of
-them parallel, which may be well-suited to the problems you want to
-model.  They can also be used in conjunction with LAMMPS to perform
-complementary modeling tasks.
-
-"CHARMM"_charmm
-"AMBER"_amber
-"NAMD"_namd
-"NWCHEM"_nwchem
-"DL_POLY"_dlpoly
-"Tinker"_tinker :ul
-
-:link(charmm,http://www.charmm.org)
-:link(amber,http://ambermd.org)
-:link(namd,http://www.ks.uiuc.edu/Research/namd/)
-:link(nwchem,http://www.emsl.pnl.gov/docs/nwchem/nwchem.html)
-:link(dlpoly,http://www.ccp5.ac.uk/DL_POLY_CLASSIC)
-:link(tinker,http://dasher.wustl.edu/tinker)
-
-CHARMM, AMBER, NAMD, NWCHEM, and Tinker are designed primarily for
-modeling biological molecules.  CHARMM and AMBER use
-atom-decomposition (replicated-data) strategies for parallelism; NAMD
-and NWCHEM use spatial-decomposition approaches, similar to LAMMPS.
-Tinker is a serial code.  DL_POLY includes potentials for a variety of
-biological and non-biological materials; both a replicated-data and
-spatial-decomposition version exist.
-
-:line
-
-1.4 Open source distribution :link(intro_4),h4
-
-LAMMPS comes with no warranty of any kind.  As each source file states
-in its header, it is a copyrighted code that is distributed free-of-
-charge, under the terms of the "GNU Public License"_gnu (GPL).  This
-is often referred to as open-source distribution - see
-"www.gnu.org"_gnuorg or "www.opensource.org"_opensource for more
-details.  The legal text of the GPL is in the LICENSE file that is
-included in the LAMMPS distribution.
-
-:link(gnuorg,http://www.gnu.org)
-:link(opensource,http://www.opensource.org)
-
-Here is a summary of what the GPL means for LAMMPS users:
-
-(1) Anyone is free to use, modify, or extend LAMMPS in any way they
-choose, including for commercial purposes.
-
-(2) If you distribute a modified version of LAMMPS, it must remain
-open-source, meaning you distribute it under the terms of the GPL.
-You should clearly annotate such a code as a derivative version of
-LAMMPS.
-
-(3) If you release any code that includes LAMMPS source code, then it
-must also be open-sourced, meaning you distribute it under the terms
-of the GPL.
-
-(4) If you give LAMMPS files to someone else, the GPL LICENSE file and
-source file headers (including the copyright and GPL notices) should
-remain part of the code.
-
-In the spirit of an open-source code, these are various ways you can
-contribute to making LAMMPS better.  You can send email to the
-"developers"_http://lammps.sandia.gov/authors.html on any of these
-items.
-
-Point prospective users to the "LAMMPS WWW Site"_lws.  Mention it in
-talks or link to it from your WWW site. :ulb,l
-
-If you find an error or omission in this manual or on the "LAMMPS WWW
-Site"_lws, or have a suggestion for something to clarify or include,
-send an email to the
-"developers"_http://lammps.sandia.gov/authors.html. :l
-
-If you find a bug, the "Errors bugs"_Errors_bugs.html doc page
-describes how to report it. :l
-
-If you publish a paper using LAMMPS results, send the citation (and
-any cool pictures or movies if you like) to add to the Publications,
-Pictures, and Movies pages of the "LAMMPS WWW Site"_lws, with links
-and attributions back to you. :l
-
-Create a new Makefile.machine that can be added to the src/MAKE
-directory. :l
-
-The tools sub-directory of the LAMMPS distribution has various
-stand-alone codes for pre- and post-processing of LAMMPS data.  More
-details are given on the "Tools"_Tools.html doc page.  If you write a
-new tool that users will find useful, it can be added to the LAMMPS
-distribution. :l
-
-LAMMPS is designed to be easy to extend with new code for features
-like potentials, boundary conditions, diagnostic computations, etc.
-The "Modify"_Modify.html doc page gives details.  If you add a feature
-of general interest, it can be added to the LAMMPS distribution. :l
-
-The Benchmark page of the "LAMMPS WWW Site"_lws lists LAMMPS
-performance on various platforms.  The files needed to run the
-benchmarks are part of the LAMMPS distribution.  If your machine is
-sufficiently different from those listed, your timing data can be
-added to the page. :l
-
-You can send feedback for the User Comments page of the "LAMMPS WWW
-Site"_lws.  It might be added to the page.  No promises. :l
-
-Cash.  Small denominations, unmarked bills preferred.  Paper sack OK.
-Leave on desk.  VISA also accepted.  Chocolate chip cookies
-encouraged. :l
-:ule
-
-:line
-
-1.5 Acknowledgments and citations :h3,link(intro_5)
-
-LAMMPS development has been funded by the "US Department of
-Energy"_doe (DOE), through its CRADA, LDRD, ASCI, and Genomes-to-Life
-programs and its "OASCR"_oascr and "OBER"_ober offices.
-
-Specifically, work on the latest version was funded in part by the US
-Department of Energy's Genomics:GTL program
-("www.doegenomestolife.org"_gtl) under the "project"_ourgtl, "Carbon
-Sequestration in Synechococcus Sp.: From Molecular Machines to
-Hierarchical Modeling".
-
-:link(doe,http://www.doe.gov)
-:link(gtl,http://www.doegenomestolife.org)
-:link(ourgtl,http://www.genomes2life.org)
-:link(oascr,http://www.sc.doe.gov/ascr/home.html)
-:link(ober,http://www.er.doe.gov/production/ober/ober_top.html)
-
-The following paper describe the basic parallel algorithms used in
-LAMMPS.  If you use LAMMPS results in your published work, please cite
-this paper and include a pointer to the "LAMMPS WWW Site"_lws
-(http://lammps.sandia.gov):
-
-S. Plimpton, [Fast Parallel Algorithms for Short-Range Molecular
-Dynamics], J Comp Phys, 117, 1-19 (1995).
-
-Other papers describing specific algorithms used in LAMMPS are listed
-under the "Citing LAMMPS link"_http://lammps.sandia.gov/cite.html of
-the LAMMPS WWW page.
-
-The "Publications link"_http://lammps.sandia.gov/papers.html on the
-LAMMPS WWW page lists papers that have cited LAMMPS.  If your paper is
-not listed there for some reason, feel free to send us the info.  If
-the simulations in your paper produced cool pictures or animations,
-we'll be pleased to add them to the
-"Pictures"_http://lammps.sandia.gov/pictures.html or
-"Movies"_http://lammps.sandia.gov/movies.html pages of the LAMMPS WWW
-site.
-
-The primary LAMMPS developers are at Sandia National Labs and Temple University:
-
-Steve Plimpton, sjplimp at sandia.gov
-Aidan Thompson, athomps at sandia.gov
-Stan Moore, stamoor at sandia.gov
-Axel Kohlmeyer, akohlmey at gmail.com :ul
-
-Past primary developers include Paul Crozier and Mark Stevens,
-both at Sandia, and Ray Shan, now at Materials Design.
-
-The following folks are responsible for significant contributions to
-the code, or other aspects of the LAMMPS development effort.  Many of
-the packages they have written are somewhat unique to LAMMPS and the
-code would not be as general-purpose as it is without their expertise
-and efforts.
-
-Axel Kohlmeyer (Temple U), akohlmey at gmail.com, SVN and Git repositories, indefatigable mail list responder, USER-CGSDK, USER-OMP, USER-COLVARS, USER-MOLFILE, USER-QMMM, USER-TALLY, and COMPRESS packages
-Roy Pollock (LLNL), Ewald and PPPM solvers
-Mike Brown (ORNL), brownw at ornl.gov, GPU and USER-INTEL package
-Greg Wagner (Sandia), gjwagne at sandia.gov, MEAM package for MEAM potential (superseded by USER-MEAMC)
-Mike Parks (Sandia), mlparks at sandia.gov, PERI package for Peridynamics
-Rudra Mukherjee (JPL), Rudranarayan.M.Mukherjee at jpl.nasa.gov, POEMS package for articulated rigid body motion
-Reese Jones (Sandia) and collaborators, rjones at sandia.gov, USER-ATC package for atom/continuum coupling
-Ilya Valuev (JIHT), valuev at physik.hu-berlin.de, USER-AWPMD package for wave-packet MD
-Christian Trott (U Tech Ilmenau), christian.trott at tu-ilmenau.de, USER-CUDA (obsoleted by KOKKOS) and KOKKOS packages
-Andres Jaramillo-Botero (Caltech), ajaramil at wag.caltech.edu, USER-EFF package for electron force field
-Christoph Kloss (JKU), Christoph.Kloss at jku.at, LIGGGHTS fork for granular models and granular/fluid coupling
-Metin Aktulga (LBL), hmaktulga at lbl.gov, USER-REAXC package for C version of ReaxFF
-Georg Gunzenmuller (EMI), georg.ganzenmueller at emi.fhg.de, USER-SMD and USER-SPH packages
-Colin Denniston (U Western Ontario), cdennist at uwo.ca, USER-LB package :ul
-
-As discussed in "Section 13"_Section_history.html, LAMMPS
-originated as a cooperative project between DOE labs and industrial
-partners. Folks involved in the design and testing of the original
-version of LAMMPS were the following:
-
-John Carpenter (Mayo Clinic, formerly at Cray Research)
-Terry Stouch (Lexicon Pharmaceuticals, formerly at Bristol Myers Squibb)
-Steve Lustig (Dupont)
-Jim Belak (LLNL) :ul
diff --git a/doc/src/Section_start.txt b/doc/src/Section_start.txt
index cd445b3e14..4176432328 100644
--- a/doc/src/Section_start.txt
+++ b/doc/src/Section_start.txt
@@ -1,4 +1,4 @@
-"Previous Section"_Section_intro.html - "LAMMPS WWW Site"_lws -
+"Previous Section"_Intro.html - "LAMMPS WWW Site"_lws -
 "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
 Section"_Section_commands.html :c
 
@@ -934,9 +934,9 @@ Makefile.opt :ul
 
 LAMMPS can be built as either a static or shared library, which can
 then be called from another application or a scripting language.  See
-"this section"_Section_howto.html#howto_10 for more info on coupling
-LAMMPS to other codes.  See the "Python"_Python.html doc page for more
-info on wrapping and running LAMMPS from Python.
+the "Howto couple"_Howto_couple.html doc page for more info on
+coupling LAMMPS to other codes.  See the "Python"_Python.html doc page
+for more info on wrapping and running LAMMPS from Python.
 
 Static library :h4
 
@@ -1039,16 +1039,16 @@ src/library.cpp and src/library.h.
 
 See the sample codes in examples/COUPLE/simple for examples of C++ and
 C and Fortran codes that invoke LAMMPS thru its library interface.
-There are other examples as well in the COUPLE directory which are
-discussed in "Section 6.10"_Section_howto.html#howto_10 of the manual.
-See the "Python"_Python.html doc page for a description of the Python
-wrapper provided with LAMMPS that operates through the LAMMPS library
-interface.
+There are other examples as well in the COUPLE directory which use
+coupling ideas discussed on the "Howto couple"_Howto_couple.html doc
+page.  See the "Python"_Python.html doc page for a description of the
+Python wrapper provided with LAMMPS that operates through the LAMMPS
+library interface.
 
 The files src/library.cpp and library.h define the C-style API for
-using LAMMPS as a library.  See "Section
-6.19"_Section_howto.html#howto_19 of the manual for a description of the
-interface and how to extend it for your needs.
+using LAMMPS as a library.  See the "Howto library"_Howto_library.html
+doc page for a description of the interface and how to extend it for
+your needs.
 
 :line
 
@@ -1391,16 +1391,16 @@ processors in all partitions must equal P.  Thus the command
 "-partition 8x2 4 5" has 10 partitions and runs on a total of 25
 processors.
 
-Running with multiple partitions can e useful for running
-"multi-replica simulations"_Section_howto.html#howto_5, where each
-replica runs on on one or a few processors.  Note that with MPI
-installed on a machine (e.g. your desktop), you can run on more
-(virtual) processors than you have physical processors.
+Running with multiple partitions can be useful for running
+"multi-replica simulations"_Howto_replica.html, where each replica
+runs on on one or a few processors.  Note that with MPI installed on a
+machine (e.g. your desktop), you can run on more (virtual) processors
+than you have physical processors.
 
 To run multiple independent simulations from one input script, using
-multiple partitions, see "Section 6.4"_Section_howto.html#howto_4
-of the manual.  World- and universe-style "variables"_variable.html
-are useful in this context.
+multiple partitions, see the "Howto multiple"_Howto_multiple.html doc
+page.  World- and universe-style "variables"_variable.html are useful
+in this context.
 
 -plog file :pre
 
@@ -1787,11 +1787,13 @@ communication, roughly 75% in the example above.
 
 The current C++ began with a complete rewrite of LAMMPS 2001, which
 was written in F90.  Features of earlier versions of LAMMPS are listed
-in "Section 13"_Section_history.html.  The F90 and F77 versions
-(2001 and 99) are also freely distributed as open-source codes; check
-the "LAMMPS WWW Site"_lws for distribution information if you prefer
-those versions.  The 99 and 2001 versions are no longer under active
-development; they do not have all the features of C++ LAMMPS.
+on the "History page"_http://lammps.sandia.gov/history.html of the
+LAMMPS website.  The F90 and F77 versions (2001 and 99) are also
+freely distributed as open-source codes; check the "History
+page"_http://lammps.sandia.gov/history.html of the LAMMPS website for
+info about those versions.  The 99 and 2001 versions are no longer
+under active development; they do not have all the features of C++
+LAMMPS.
 
 If you are a previous user of LAMMPS 2001, these are the most
 significant changes you will notice in C++ LAMMPS:
diff --git a/doc/src/Speed.txt b/doc/src/Speed.txt
index 1e2097ab1d..6c53d6bcf0 100644
--- a/doc/src/Speed.txt
+++ b/doc/src/Speed.txt
@@ -1,6 +1,6 @@
 "Previous Section"_Package.html - "LAMMPS WWW Site"_lws -
 "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Section_howto.html :c
+Section"_Howto.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Tools.txt b/doc/src/Tools.txt
index 4c5fbbd453..10e7f74a3d 100644
--- a/doc/src/Tools.txt
+++ b/doc/src/Tools.txt
@@ -1,4 +1,4 @@
-"Previous Section"_Section_perf.html - "LAMMPS WWW Site"_lws - "LAMMPS
+"Previous Section"_Examples.html - "LAMMPS WWW Site"_lws - "LAMMPS
 Documentation"_ld - "LAMMPS Commands"_lc - "Next
 Section"_Modify.html :c
 
@@ -142,8 +142,8 @@ The syntax for running the tool is
 chain < def.chain > data.file :pre
 
 See the def.chain or def.chain.ab files in the tools directory for
-examples of definition files.  This tool was used to create the
-system for the "chain benchmark"_Section_perf.html.
+examples of definition files.  This tool was used to create the system
+for the "chain benchmark"_Speed_bench.html.
 
 :line
 
diff --git a/doc/src/angle_cosine_periodic.txt b/doc/src/angle_cosine_periodic.txt
index 4bedae3246..108b081533 100644
--- a/doc/src/angle_cosine_periodic.txt
+++ b/doc/src/angle_cosine_periodic.txt
@@ -21,10 +21,10 @@ angle_coeff * 75.0 1 6 :pre
 [Description:]
 
 The {cosine/periodic} angle style uses the following potential, which
-is commonly used in the "DREIDING"_Section_howto.html#howto_4 force
-field, particularly for organometallic systems where {n} = 4 might be
-used for an octahedral complex and {n} = 3 might be used for a
-trigonal center:
+is commonly used in the "DREIDING"_Howto_bioFF.html force field,
+particularly for organometallic systems where {n} = 4 might be used
+for an octahedral complex and {n} = 3 might be used for a trigonal
+center:
 
 :c,image(Eqs/angle_cosine_periodic.jpg)
 
diff --git a/doc/src/atom_style.txt b/doc/src/atom_style.txt
index 0e6aa8a033..063f9e446c 100644
--- a/doc/src/atom_style.txt
+++ b/doc/src/atom_style.txt
@@ -20,7 +20,7 @@ style = {angle} or {atomic} or {body} or {bond} or {charge} or {dipole} or \
     {body} args = bstyle bstyle-args
       bstyle = style of body particles
       bstyle-args = additional arguments specific to the bstyle
-                    see the "body"_body.html doc page for details
+                    see the "Howto body"_Howto_body.html doc page for details
     {tdpd} arg = Nspecies
       Nspecies = # of chemical species
     {template} arg = template-ID
@@ -106,9 +106,9 @@ output the custom values.
 
 All of the above styles define point particles, except the {sphere},
 {ellipsoid}, {electron}, {peri}, {wavepacket}, {line}, {tri}, and
-{body} styles, which define finite-size particles.  See "Section
-6.14"_Section_howto.html#howto_14 for an overview of using finite-size
-particle models with LAMMPS.
+{body} styles, which define finite-size particles.  See the "Howto
+spherical"_Howto_spherical.html doc page for an overview of using
+finite-size particle models with LAMMPS.
 
 All of the point-particle styles assign mass to particles on a
 per-type basis, using the "mass"_mass.html command, The finite-size
@@ -224,15 +224,16 @@ the {bstyle} argument.  Body particles can represent complex entities,
 such as surface meshes of discrete points, collections of
 sub-particles, deformable objects, etc.
 
-The "body"_body.html doc page describes the body styles LAMMPS
-currently supports, and provides more details as to the kind of body
-particles they represent.  For all styles, each body particle stores
-moments of inertia and a quaternion 4-vector, so that its orientation
-and position can be time integrated due to forces and torques.
+The "Howto body"_Howto_body.html doc page describes the body styles
+LAMMPS currently supports, and provides more details as to the kind of
+body particles they represent.  For all styles, each body particle
+stores moments of inertia and a quaternion 4-vector, so that its
+orientation and position can be time integrated due to forces and
+torques.
 
 Note that there may be additional arguments required along with the
 {bstyle} specification, in the atom_style body command.  These
-arguments are described in the "body"_body.html doc page.
+arguments are described on the "Howto body"_Howto_body.html doc page.
 
 :line
 
diff --git a/doc/src/body.txt b/doc/src/body.txt
index 4a39ac25d8..83b725d8cc 100644
--- a/doc/src/body.txt
+++ b/doc/src/body.txt
@@ -17,8 +17,8 @@ surface meshes of discrete points, collections of sub-particles,
 deformable objects, etc.  Note that other kinds of finite-size
 spherical and aspherical particles are also supported by LAMMPS, such
 as spheres, ellipsoids, line segments, and triangles, but they are
-simpler entities that body particles.  See "Section
-6.14"_Section_howto.html#howto_14 for a general overview of all
+simpler entities that body particles.  See the "Howto
+body"_Howto_.html doc page for a general overview of all
 these particle types.
 
 Body particles are used via the "atom_style body"_atom_style.html
diff --git a/doc/src/boundary.txt b/doc/src/boundary.txt
index ce638f11b3..7ee897ffa4 100644
--- a/doc/src/boundary.txt
+++ b/doc/src/boundary.txt
@@ -82,9 +82,9 @@ and xhi faces of the box are planes tilting in the +y direction as y
 increases.  These tilted planes are shrink-wrapped around the atoms to
 determine the x extent of the box.
 
-See "Section 6.12"_Section_howto.html#howto_12 of the doc pages
-for a geometric description of triclinic boxes, as defined by LAMMPS,
-and how to transform these parameters to and from other commonly used
+See the "Howto triclinic"_Howto_triclinic.html doc page for a
+geometric description of triclinic boxes, as defined by LAMMPS, and
+how to transform these parameters to and from other commonly used
 triclinic representations.
 
 [Restrictions:]
diff --git a/doc/src/box.txt b/doc/src/box.txt
index a6207ae993..6dc093ad81 100644
--- a/doc/src/box.txt
+++ b/doc/src/box.txt
@@ -30,9 +30,9 @@ For triclinic (non-orthogonal) simulation boxes, the {tilt} keyword
 allows simulation domains to be created with arbitrary tilt factors,
 e.g. via the "create_box"_create_box.html or
 "read_data"_read_data.html commands.  Tilt factors determine how
-skewed the triclinic box is; see "this
-section"_Section_howto.html#howto_12 of the manual for a discussion of
-triclinic boxes in LAMMPS.
+skewed the triclinic box is; see the "Howto
+triclinic"_Howto_triclinic.html doc page for a discussion of triclinic
+boxes in LAMMPS.
 
 LAMMPS normally requires that no tilt factor can skew the box more
 than half the distance of the parallel box length, which is the 1st
diff --git a/doc/src/change_box.txt b/doc/src/change_box.txt
index 2c7a890d4c..8f3fda263f 100644
--- a/doc/src/change_box.txt
+++ b/doc/src/change_box.txt
@@ -75,9 +75,9 @@ The "create_box"_create_box.html, "read data"_read_data.html, and
 simulation box is orthogonal or triclinic and their doc pages explain
 the meaning of the xy,xz,yz tilt factors.
 
-See "Section 6.12"_Section_howto.html#howto_12 of the doc pages
-for a geometric description of triclinic boxes, as defined by LAMMPS,
-and how to transform these parameters to and from other commonly used
+See the "Howto triclinic"_Howto_triclinic.html doc page for a
+geometric description of triclinic boxes, as defined by LAMMPS, and
+how to transform these parameters to and from other commonly used
 triclinic representations.
 
 The keywords used in this command are applied sequentially to the
@@ -140,8 +140,8 @@ transformation in the sequence.  If skew is exceeded before the final
 transformation this can be avoided by changing the order of the
 sequence, or breaking the transformation into two or more smaller
 transformations.  For more information on the allowed limits for box
-skew see the discussion on triclinic boxes on "this
-page"_Section_howto.html#howto_12.
+skew see the discussion on triclinic boxes on "Howto
+triclinic"_Howto_triclinic.html doc page.
 
 :line
 
@@ -258,9 +258,7 @@ command.
 :line
 
 The {ortho} and {triclinic} keywords convert the simulation box to be
-orthogonal or triclinic (non-orthogonal).  See "this
-section"_Section_howto#howto_13 for a discussion of how non-orthogonal
-boxes are represented in LAMMPS.
+orthogonal or triclinic (non-orthogonal).
 
 The simulation box is defined as either orthogonal or triclinic when
 it is created via the "create_box"_create_box.html,
@@ -271,8 +269,8 @@ These keywords allow you to toggle the existing simulation box from
 orthogonal to triclinic and vice versa.  For example, an initial
 equilibration simulation can be run in an orthogonal box, the box can
 be toggled to triclinic, and then a "non-equilibrium MD (NEMD)
-simulation"_Section_howto.html#howto_13 can be run with deformation
-via the "fix deform"_fix_deform.html command.
+simulation"_Howto_nemd.html can be run with deformation via the "fix
+deform"_fix_deform.html command.
 
 If the simulation box is currently triclinic and has non-zero tilt in
 xy, yz, or xz, then it cannot be converted to an orthogonal box.
diff --git a/doc/src/compute.txt b/doc/src/compute.txt
index 532a5414e3..105571b82a 100644
--- a/doc/src/compute.txt
+++ b/doc/src/compute.txt
@@ -33,7 +33,7 @@ information about a previous state of the system.  Defining a compute
 does not perform a computation.  Instead computes are invoked by other
 LAMMPS commands as needed, e.g. to calculate a temperature needed for
 a thermostat fix or to generate thermodynamic or dump file output.
-See this "howto section"_Section_howto.html#howto_15 for a summary of
+See the "Howto output"_Howto_output.html doc page for a summary of
 various LAMMPS output options, many of which involve computes.
 
 The ID of a compute can only contain alphanumeric characters and
diff --git a/doc/src/compute_ackland_atom.txt b/doc/src/compute_ackland_atom.txt
index 3fd838d957..e75ad534eb 100644
--- a/doc/src/compute_ackland_atom.txt
+++ b/doc/src/compute_ackland_atom.txt
@@ -60,7 +60,7 @@ which computes this quantity.-
 
 This compute calculates a per-atom vector, which can be accessed by
 any command that uses per-atom values from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
+the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 [Restrictions:]
diff --git a/doc/src/compute_angle.txt b/doc/src/compute_angle.txt
index 2c363ce8f6..1deb3a4b1b 100644
--- a/doc/src/compute_angle.txt
+++ b/doc/src/compute_angle.txt
@@ -37,8 +37,8 @@ This compute calculates a global vector of length N where N is the
 number of sub_styles defined by the "angle_style
 hybrid"_angle_style.html command, which can be accessed by indices
 1-N.  These values can be used by any command that uses global scalar
-or vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+or vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The vector values are "extensive" and will be in energy
diff --git a/doc/src/compute_angle_local.txt b/doc/src/compute_angle_local.txt
index 0ee1d32d7d..487b41eaf3 100644
--- a/doc/src/compute_angle_local.txt
+++ b/doc/src/compute_angle_local.txt
@@ -70,8 +70,8 @@ array is the number of angles.  If a single keyword is specified, a
 local vector is produced.  If two or more keywords are specified, a
 local array is produced where the number of columns = the number of
 keywords.  The vector or array can be accessed by any command that
-uses local values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+uses local values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The output for {theta} will be in degrees.  The output for {eng} will
diff --git a/doc/src/compute_angmom_chunk.txt b/doc/src/compute_angmom_chunk.txt
index 813da15eea..c97af96f49 100644
--- a/doc/src/compute_angmom_chunk.txt
+++ b/doc/src/compute_angmom_chunk.txt
@@ -30,10 +30,9 @@ chunk/atom"_compute_chunk_atom.html command, which assigns each atom
 to a single chunk (or no chunk).  The ID for this command is specified
 as chunkID.  For example, a single chunk could be the atoms in a
 molecule or atoms in a spatial bin.  See the "compute
-chunk/atom"_compute_chunk_atom.html doc page and "Section
-6.23"_Section_howto.html#howto_23 for details of how chunks can be
-defined and examples of how they can be used to measure properties of
-a system.
+chunk/atom"_compute_chunk_atom.html and "Howto chunk"_Howto_chunk.html
+doc pages for details of how chunks can be defined and examples of how
+they can be used to measure properties of a system.
 
 This compute calculates the 3 components of the angular momentum
 vector for each chunk, due to the velocity/momentum of the individual
@@ -73,8 +72,8 @@ number of chunks {Nchunk} as calculated by the specified "compute
 chunk/atom"_compute_chunk_atom.html command.  The number of columns =
 3 for the 3 xyz components of the angular momentum for each chunk.
 These values can be accessed by any command that uses global array
-values from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
+values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The array values are "intensive".  The array values will be in
diff --git a/doc/src/compute_basal_atom.txt b/doc/src/compute_basal_atom.txt
index b59a3fd4c8..e0ac6b0a60 100644
--- a/doc/src/compute_basal_atom.txt
+++ b/doc/src/compute_basal_atom.txt
@@ -46,9 +46,8 @@ in examples/USER/misc/basal.
 
 This compute calculates a per-atom array with 3 columns, which can be
 accessed by indices 1-3 by any command that uses per-atom values from
-a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+a compute as input.  See the "Howto output"_Howto_output.html doc page
+for an overview of LAMMPS output options.
 
 The per-atom vector values are unitless since the 3 columns represent
 components of a unit vector.
diff --git a/doc/src/compute_body_local.txt b/doc/src/compute_body_local.txt
index 12ce218853..f387e61c78 100644
--- a/doc/src/compute_body_local.txt
+++ b/doc/src/compute_body_local.txt
@@ -32,9 +32,8 @@ Define a computation that calculates properties of individual body
 sub-particles.  The number of datums generated, aggregated across all
 processors, equals the number of body sub-particles plus the number of
 non-body particles in the system, modified by the group parameter as
-explained below.  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.
+explained below.  See the "Howto body"_Howto_body.html doc page for
+more details on using body particles.
 
 The local data stored by this command is generated by looping over all
 the atoms.  An atom will only be included if it is in the group.  If
@@ -58,8 +57,8 @@ group.
 For a body particle, the {integer} keywords refer to fields calculated
 by the body style for each sub-particle.  The body style, as specified
 by the "atom_style body"_atom_style.html, determines how many fields
-exist and what they are.  See the "body"_body.html doc page for
-details of the different styles.
+exist and what they are.  See the "Howto_body"_Howto_body.html doc
+page for details of the different styles.
 
 Here is an example of how to output body information using the "dump
 local"_dump.html command with this compute.  If fields 1,2,3 for the
@@ -78,9 +77,9 @@ array is the number of datums as described above.  If a single keyword
 is specified, a local vector is produced.  If two or more keywords are
 specified, a local array is produced where the number of columns = the
 number of keywords.  The vector or array can be accessed by any
-command that uses local values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+command that uses local values from a compute as input.  See the
+"Howto output"_Howto_output.html doc page for an overview of LAMMPS
+output options.
 
 The "units"_units.html for output values depend on the body style.
 
diff --git a/doc/src/compute_bond.txt b/doc/src/compute_bond.txt
index 6c4384b080..ac0e50872b 100644
--- a/doc/src/compute_bond.txt
+++ b/doc/src/compute_bond.txt
@@ -37,8 +37,8 @@ This compute calculates a global vector of length N where N is the
 number of sub_styles defined by the "bond_style
 hybrid"_bond_style.html command, which can be accessed by indices 1-N.
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The vector values are "extensive" and will be in energy
diff --git a/doc/src/compute_bond_local.txt b/doc/src/compute_bond_local.txt
index 58d96f9ee4..868b43caa9 100644
--- a/doc/src/compute_bond_local.txt
+++ b/doc/src/compute_bond_local.txt
@@ -116,8 +116,8 @@ array is the number of bonds.  If a single keyword is specified, a
 local vector is produced.  If two or more keywords are specified, a
 local array is produced where the number of columns = the number of
 keywords.  The vector or array can be accessed by any command that
-uses local values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+uses local values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The output for {dist} will be in distance "units"_units.html. The
diff --git a/doc/src/compute_centro_atom.txt b/doc/src/compute_centro_atom.txt
index 4e4b03d167..bace0d8739 100644
--- a/doc/src/compute_centro_atom.txt
+++ b/doc/src/compute_centro_atom.txt
@@ -97,8 +97,8 @@ too frequently or to have multiple compute/dump commands, each with a
 
 By default, this compute calculates the centrosymmetry value for each
 atom as a per-atom vector, which can be accessed by any command that
-uses per-atom values from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
+uses per-atom values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 If the {axes} keyword setting is {yes}, then a per-atom array is
diff --git a/doc/src/compute_chunk_atom.txt b/doc/src/compute_chunk_atom.txt
index 00a75f50c4..fc0de28b6a 100644
--- a/doc/src/compute_chunk_atom.txt
+++ b/doc/src/compute_chunk_atom.txt
@@ -101,14 +101,13 @@ msd/chunk"_compute_msd_chunk.html.  Or they can be used by the "fix
 ave/chunk"_fix_ave_chunk.html command to sum and time average a
 variety of per-atom properties over the atoms in each chunk.  Or they
 can simply be accessed by any command that uses per-atom values from a
-compute as input, as discussed in "Section
-6.15"_Section_howto.html#howto_15.
+compute as input, as discussed on the "Howto output"_Howto_output.html
+doc page.
 
-See "Section 6.23"_Section_howto.html#howto_23 for an overview of
-how this compute can be used with a variety of other commands to
-tabulate properties of a simulation.  The howto section gives several
-examples of input script commands that can be used to calculate
-interesting properties.
+See the "Howto chunk"_Howto_chunk.html doc page for an overview of how
+this compute can be used with a variety of other commands to tabulate
+properties of a simulation.  The page gives several examples of input
+script commands that can be used to calculate interesting properties.
 
 Conceptually it is important to realize that this compute does two
 simple things.  First, it sets the value of {Nchunk} = the number of
@@ -167,11 +166,11 @@ or the bounds specified by the optional {bounds} keyword.
 For orthogonal simulation boxes, the bins are layers, pencils, or
 boxes aligned with the xyz coordinate axes.  For triclinic
 (non-orthogonal) simulation boxes, the bin faces are parallel to the
-tilted faces of the simulation box.  See "this
-section"_Section_howto.html#howto_12 of the manual for a discussion of
-the geometry of triclinic boxes in LAMMPS.  As described there, a
-tilted simulation box has edge vectors a,b,c.  In that nomenclature,
-bins in the x dimension have faces with normals in the "b" cross "c"
+tilted faces of the simulation box.  See the "Howto
+triclinic"_Howto_triclinic.html doc page for a discussion of the
+geometry of triclinic boxes in LAMMPS.  As described there, a tilted
+simulation box has edge vectors a,b,c.  In that nomenclature, bins in
+the x dimension have faces with normals in the "b" cross "c"
 direction.  Bins in y have faces normal to the "a" cross "c"
 direction.  And bins in z have faces normal to the "a" cross "b"
 direction.  Note that in order to define the size and position of
@@ -626,7 +625,7 @@ cylinder, x for a y-axis cylinder, and x for a z-axis cylinder.
 
 This compute calculates a per-atom vector, which can be accessed by
 any command that uses per-atom values from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
+the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-atom vector values are unitless chunk IDs, ranging from 1 to
diff --git a/doc/src/compute_cluster_atom.txt b/doc/src/compute_cluster_atom.txt
index 94113de5f2..12ecb8f173 100644
--- a/doc/src/compute_cluster_atom.txt
+++ b/doc/src/compute_cluster_atom.txt
@@ -84,7 +84,7 @@ the neighbor list.
 
 This compute calculates a per-atom vector, which can be accessed by
 any command that uses per-atom values from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
+the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-atom vector values will be an ID > 0, as explained above.
diff --git a/doc/src/compute_cna_atom.txt b/doc/src/compute_cna_atom.txt
index 23289b0132..9c4814560d 100644
--- a/doc/src/compute_cna_atom.txt
+++ b/doc/src/compute_cna_atom.txt
@@ -74,7 +74,7 @@ too frequently or to have multiple compute/dump commands, each with a
 
 This compute calculates a per-atom vector, which can be accessed by
 any command that uses per-atom values from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
+the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-atom vector values will be a number from 0 to 5, as explained
diff --git a/doc/src/compute_cnp_atom.txt b/doc/src/compute_cnp_atom.txt
index 16a51f5241..aca7e351ec 100644
--- a/doc/src/compute_cnp_atom.txt
+++ b/doc/src/compute_cnp_atom.txt
@@ -78,7 +78,7 @@ too frequently or to have multiple compute/dump commands, each with a
 
 This compute calculates a per-atom vector, which can be accessed by
 any command that uses per-atom values from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
+the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-atom vector values will be real positive numbers. Some typical CNP
diff --git a/doc/src/compute_com.txt b/doc/src/compute_com.txt
index b0e0c14e42..08bb08b142 100644
--- a/doc/src/compute_com.txt
+++ b/doc/src/compute_com.txt
@@ -41,9 +41,8 @@ image"_set.html command.
 
 This compute calculates a global vector of length 3, which can be
 accessed by indices 1-3 by any command that uses global vector values
-from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+from a compute as input.  See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 The vector values are "intensive".  The vector values will be in
 distance "units"_units.html.
diff --git a/doc/src/compute_com_chunk.txt b/doc/src/compute_com_chunk.txt
index d497585cb0..f28355d6c5 100644
--- a/doc/src/compute_com_chunk.txt
+++ b/doc/src/compute_com_chunk.txt
@@ -30,10 +30,9 @@ chunk/atom"_compute_chunk_atom.html command, which assigns each atom
 to a single chunk (or no chunk).  The ID for this command is specified
 as chunkID.  For example, a single chunk could be the atoms in a
 molecule or atoms in a spatial bin.  See the "compute
-chunk/atom"_compute_chunk_atom.html doc page and "Section
-6.23"_Section_howto.html#howto_23 for details of how chunks can be
-defined and examples of how they can be used to measure properties of
-a system.
+chunk/atom"_compute_chunk_atom.html and "Howto chunk"_Howto_chunk.html
+doc pages for details of how chunks can be defined and examples of how
+they can be used to measure properties of a system.
 
 This compute calculates the x,y,z coordinates of the center-of-mass
 for each chunk, which includes all effects due to atoms passing thru
@@ -71,9 +70,8 @@ number of chunks {Nchunk} as calculated by the specified "compute
 chunk/atom"_compute_chunk_atom.html command.  The number of columns =
 3 for the x,y,z center-of-mass coordinates of each chunk.  These
 values can be accessed by any command that uses global array values
-from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+from a compute as input.  See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 The array values are "intensive".  The array values will be in
 distance "units"_units.html.
diff --git a/doc/src/compute_contact_atom.txt b/doc/src/compute_contact_atom.txt
index f0bd62f4e8..ea4158e3b1 100644
--- a/doc/src/compute_contact_atom.txt
+++ b/doc/src/compute_contact_atom.txt
@@ -36,7 +36,7 @@ specified compute group.
 
 This compute calculates a per-atom vector, whose values can be
 accessed by any command that uses per-atom values from a compute as
-input.  See "Section 6.15"_Section_howto.html#howto_15 for an
+input.  See the "Howto output"_Howto_output.html doc page for an
 overview of LAMMPS output options.
 
 The per-atom vector values will be a number >= 0.0, as explained
diff --git a/doc/src/compute_coord_atom.txt b/doc/src/compute_coord_atom.txt
index a88f7ec729..06b565aedc 100644
--- a/doc/src/compute_coord_atom.txt
+++ b/doc/src/compute_coord_atom.txt
@@ -109,9 +109,8 @@ array, with N columns.
 For {cstyle} orientorder, this compute calculates a per-atom vector.
 
 These values can be accessed by any command that uses per-atom values
-from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+from a compute as input.  See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 The per-atom vector or array values will be a number >= 0.0, as
 explained above.
diff --git a/doc/src/compute_damage_atom.txt b/doc/src/compute_damage_atom.txt
index 918fbf65ef..e262ee0b1f 100644
--- a/doc/src/compute_damage_atom.txt
+++ b/doc/src/compute_damage_atom.txt
@@ -44,7 +44,7 @@ group.
 
 This compute calculates a per-atom vector, which can be accessed by
 any command that uses per-atom values from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
+the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-atom vector values are unitless numbers (damage) >= 0.0.
diff --git a/doc/src/compute_dihedral.txt b/doc/src/compute_dihedral.txt
index a3c3dff8d6..67c97b60f1 100644
--- a/doc/src/compute_dihedral.txt
+++ b/doc/src/compute_dihedral.txt
@@ -37,8 +37,8 @@ This compute calculates a global vector of length N where N is the
 number of sub_styles defined by the "dihedral_style
 hybrid"_dihedral_style.html command.  which can be accessed by indices
 1-N.  These values can be used by any command that uses global scalar
-or vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+or vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The vector values are "extensive" and will be in energy
diff --git a/doc/src/compute_dihedral_local.txt b/doc/src/compute_dihedral_local.txt
index 865e86fddb..d2051a51bd 100644
--- a/doc/src/compute_dihedral_local.txt
+++ b/doc/src/compute_dihedral_local.txt
@@ -62,8 +62,8 @@ array is the number of dihedrals.  If a single keyword is specified, a
 local vector is produced.  If two or more keywords are specified, a
 local array is produced where the number of columns = the number of
 keywords.  The vector or array can be accessed by any command that
-uses local values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+uses local values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The output for {phi} will be in degrees.
diff --git a/doc/src/compute_dilatation_atom.txt b/doc/src/compute_dilatation_atom.txt
index ce00f7f12a..161e73c7ff 100644
--- a/doc/src/compute_dilatation_atom.txt
+++ b/doc/src/compute_dilatation_atom.txt
@@ -47,8 +47,9 @@ compute group.
 [Output info:]
 
 This compute calculates a per-atom vector, which can be accessed by
-any command that uses per-atom values from a compute as input. See
-Section_howto 15 for an overview of LAMMPS output options.
+any command that uses per-atom values from a compute as input.  See
+the "Howto output"_Howto_output.html doc page for an overview of
+LAMMPS output options.
 
 The per-atom vector values are unitless numbers (theta) >= 0.0.
 
diff --git a/doc/src/compute_dipole_chunk.txt b/doc/src/compute_dipole_chunk.txt
index 75131ffbb1..5f8d6689c4 100644
--- a/doc/src/compute_dipole_chunk.txt
+++ b/doc/src/compute_dipole_chunk.txt
@@ -32,10 +32,9 @@ chunk/atom"_compute_chunk_atom.html command, which assigns each atom
 to a single chunk (or no chunk).  The ID for this command is specified
 as chunkID.  For example, a single chunk could be the atoms in a
 molecule or atoms in a spatial bin.  See the "compute
-chunk/atom"_compute_chunk_atom.html doc page and "Section
-6.23"_Section_howto.html#howto_23 for details of how chunks can be
-defined and examples of how they can be used to measure properties of
-a system.
+chunk/atom"_compute_chunk_atom.html and "Howto chunk"_Howto_chunk.html
+doc pages for details of how chunks can be defined and examples of how
+they can be used to measure properties of a system.
 
 This compute calculates the x,y,z coordinates of the dipole vector
 and the total dipole moment for each chunk, which includes all effects
@@ -76,8 +75,8 @@ number of chunks {Nchunk} as calculated by the specified "compute
 chunk/atom"_compute_chunk_atom.html command.  The number of columns =
 4 for the x,y,z dipole vector components and the total dipole of each
 chunk. These values can be accessed by any command that uses global
-array values from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
+array values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The array values are "intensive".  The array values will be in
diff --git a/doc/src/compute_displace_atom.txt b/doc/src/compute_displace_atom.txt
index 00e5f696c1..5636cc02f0 100644
--- a/doc/src/compute_displace_atom.txt
+++ b/doc/src/compute_displace_atom.txt
@@ -118,9 +118,8 @@ would be empty.
 
 This compute calculates a per-atom array with 4 columns, which can be
 accessed by indices 1-4 by any command that uses per-atom values from
-a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+a compute as input.  See the "Howto output"_Howto_output.html doc page
+for an overview of LAMMPS output options.
 
 The per-atom array values will be in distance "units"_units.html.
 
diff --git a/doc/src/compute_dpd.txt b/doc/src/compute_dpd.txt
index 0e43feb9d2..a5620d34b3 100644
--- a/doc/src/compute_dpd.txt
+++ b/doc/src/compute_dpd.txt
@@ -40,9 +40,9 @@ where N is the number of particles in the system
 [Output info:]
 
 This compute calculates a global vector of length 5 (U_cond, U_mech,
-U_chem, dpdTheta, N_particles), which can be accessed by indices 1-5.  See
-"this section"_Section_howto.html#howto_15 for an overview of LAMMPS
-output options.
+U_chem, dpdTheta, N_particles), which can be accessed by indices 1-5.
+See the "Howto output"_Howto_output.html doc page for an overview of
+LAMMPS output options.
 
 The vector values will be in energy and temperature "units"_units.html.
 
diff --git a/doc/src/compute_dpd_atom.txt b/doc/src/compute_dpd_atom.txt
index 0532fc60c6..ed0fd2410b 100644
--- a/doc/src/compute_dpd_atom.txt
+++ b/doc/src/compute_dpd_atom.txt
@@ -34,9 +34,9 @@ particles.
 [Output info:]
 
 This compute calculates a per-particle array with 4 columns (u_cond,
-u_mech, u_chem, dpdTheta), which can be accessed by indices 1-4 by any command
-that uses per-particle values from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
+u_mech, u_chem, dpdTheta), which can be accessed by indices 1-4 by any
+command that uses per-particle values from a compute as input.  See
+the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-particle array values will be in energy (u_cond, u_mech, u_chem)
diff --git a/doc/src/compute_edpd_temp_atom.txt b/doc/src/compute_edpd_temp_atom.txt
index 5b8c8ebd67..9011c3c823 100644
--- a/doc/src/compute_edpd_temp_atom.txt
+++ b/doc/src/compute_edpd_temp_atom.txt
@@ -32,9 +32,9 @@ For more details please see "(Espanol1997)"_#Espanol1997 and
 [Output info:]
 
 This compute calculates a per-atom vector, which can be accessed by
-any command that uses per-atom values from a compute as input. See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
-LAMMPS output options.
+any command that uses per-atom values from a compute as input. See the
+"Howto output"_Howto_output.html doc page for an overview of LAMMPS
+output options.
 
 The per-atom vector values will be in temperature "units"_units.html.
 
diff --git a/doc/src/compute_entropy_atom.txt b/doc/src/compute_entropy_atom.txt
index f7e7b8a667..7fdc1f4af2 100644
--- a/doc/src/compute_entropy_atom.txt
+++ b/doc/src/compute_entropy_atom.txt
@@ -98,8 +98,8 @@ compute 1 all entropy/atom 0.25 7.3 avg yes 5.1 :pre
 
 By default, this compute calculates the pair entropy value for each
 atom as a per-atom vector, which can be accessed by any command that
-uses per-atom values from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
+uses per-atom values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The pair entropy values have units of the Boltzmann constant. They are 
diff --git a/doc/src/compute_erotate_asphere.txt b/doc/src/compute_erotate_asphere.txt
index b9a486c32e..24e6e5e6f7 100644
--- a/doc/src/compute_erotate_asphere.txt
+++ b/doc/src/compute_erotate_asphere.txt
@@ -40,7 +40,7 @@ will be the same as in 3d.
 
 This compute calculates a global scalar (the KE).  This value can be
 used by any command that uses a global scalar value from a compute as
-input.  See "Section 6.15"_Section_howto.html#howto_15 for an
+input.  See the "Howto output"_Howto_output.html doc page for an
 overview of LAMMPS output options.
 
 The scalar value calculated by this compute is "extensive".  The
diff --git a/doc/src/compute_erotate_rigid.txt b/doc/src/compute_erotate_rigid.txt
index dec0939a43..c8527d7073 100644
--- a/doc/src/compute_erotate_rigid.txt
+++ b/doc/src/compute_erotate_rigid.txt
@@ -41,9 +41,9 @@ calculation.
 
 This compute calculates a global scalar (the summed rotational energy
 of all the rigid bodies).  This value can be used by any command that
-uses a global scalar value from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
-LAMMPS output options.
+uses a global scalar value from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
+options.
 
 The scalar value calculated by this compute is "extensive".  The
 scalar value will be in energy "units"_units.html.
diff --git a/doc/src/compute_erotate_sphere.txt b/doc/src/compute_erotate_sphere.txt
index 41e80b0154..8abc9a53ad 100644
--- a/doc/src/compute_erotate_sphere.txt
+++ b/doc/src/compute_erotate_sphere.txt
@@ -35,7 +35,7 @@ as in 3d.
 
 This compute calculates a global scalar (the KE).  This value can be
 used by any command that uses a global scalar value from a compute as
-input.  See "Section 6.15"_Section_howto.html#howto_15 for an
+input.  See the "Howto output"_Howto_output.html doc page for an
 overview of LAMMPS output options.
 
 The scalar value calculated by this compute is "extensive".  The
diff --git a/doc/src/compute_erotate_sphere_atom.txt b/doc/src/compute_erotate_sphere_atom.txt
index a0081ff6a8..0bea315a89 100644
--- a/doc/src/compute_erotate_sphere_atom.txt
+++ b/doc/src/compute_erotate_sphere_atom.txt
@@ -39,7 +39,7 @@ in the specified compute group or for point particles with a radius =
 
 This compute calculates a per-atom vector, which can be accessed by
 any command that uses per-atom values from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
+the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-atom vector values will be in energy "units"_units.html.
diff --git a/doc/src/compute_event_displace.txt b/doc/src/compute_event_displace.txt
index 5e3a0c8599..17c4288911 100644
--- a/doc/src/compute_event_displace.txt
+++ b/doc/src/compute_event_displace.txt
@@ -43,7 +43,7 @@ local atom displacements and may generate "false positives."
 
 This compute calculates a global scalar (the flag).  This value can be
 used by any command that uses a global scalar value from a compute as
-input.  See "Section 6.15"_Section_howto.html#howto_15 for an
+input.  See the "Howto output"_Howto_output.html doc page for an
 overview of LAMMPS output options.
 
 The scalar value calculated by this compute is "intensive".  The
diff --git a/doc/src/compute_fep.txt b/doc/src/compute_fep.txt
index 9bbae7b20f..f0ce3fd704 100644
--- a/doc/src/compute_fep.txt
+++ b/doc/src/compute_fep.txt
@@ -219,8 +219,8 @@ unperturbed parameters. The energies include kspace terms if these
 are used in the simulation.
 
 These output results can be used by any command that uses a global
-scalar or vector from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
+scalar or vector from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options. For example, the computed values can be averaged using "fix
 ave/time"_fix_ave_time.html.
 
diff --git a/doc/src/compute_global_atom.txt b/doc/src/compute_global_atom.txt
index 28b4aa2461..f40810b70c 100644
--- a/doc/src/compute_global_atom.txt
+++ b/doc/src/compute_global_atom.txt
@@ -67,7 +67,7 @@ this command.  This command will then assign the global chunk value to
 each atom in the chunk, producing a per-atom vector or per-atom array
 as output.  The per-atom values can then be output to a dump file or
 used by any command that uses per-atom values from a compute as input,
-as discussed in "Section 6.15"_Section_howto.html#howto_15.
+as discussed on the "Howto output"_Howto_output.html doc page.
 
 As a concrete example, these commands will calculate the displacement
 of each atom from the center-of-mass of the molecule it is in, and
@@ -203,7 +203,7 @@ vector.  If multiple inputs are specified, this compute produces a
 per-atom array values, where the number of columns is equal to the
 number of inputs specified.  These values can be used by any command
 that uses per-atom vector or array values from a compute as input.
-See "Section 6.15"_Section_howto.html#howto_15 for an overview of
+See the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-atom vector or array values will be in whatever units the
diff --git a/doc/src/compute_group_group.txt b/doc/src/compute_group_group.txt
index f10547339d..8f992791d2 100644
--- a/doc/src/compute_group_group.txt
+++ b/doc/src/compute_group_group.txt
@@ -123,8 +123,8 @@ group-group calculations are performed.
 This compute calculates a global scalar (the energy) and a global
 vector of length 3 (force), which can be accessed by indices 1-3.
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 Both the scalar and vector values calculated by this compute are
diff --git a/doc/src/compute_gyration.txt b/doc/src/compute_gyration.txt
index dd71431527..3d698609ca 100644
--- a/doc/src/compute_gyration.txt
+++ b/doc/src/compute_gyration.txt
@@ -55,8 +55,8 @@ using the "set image"_set.html command.
 This compute calculates a global scalar (Rg) and a global vector of
 length 6 (Rg^2 tensor), which can be accessed by indices 1-6.  These
 values can be used by any command that uses a global scalar value or
-vector values from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar and vector values calculated by this compute are
diff --git a/doc/src/compute_gyration_chunk.txt b/doc/src/compute_gyration_chunk.txt
index 3e338213cf..ef14a456f3 100644
--- a/doc/src/compute_gyration_chunk.txt
+++ b/doc/src/compute_gyration_chunk.txt
@@ -35,10 +35,9 @@ chunk/atom"_compute_chunk_atom.html command, which assigns each atom
 to a single chunk (or no chunk).  The ID for this command is specified
 as chunkID.  For example, a single chunk could be the atoms in a
 molecule or atoms in a spatial bin.  See the "compute
-chunk/atom"_compute_chunk_atom.html doc page and "Section
-6.23"_Section_howto.html#howto_23 for details of how chunks can be
-defined and examples of how they can be used to measure properties of
-a system.
+chunk/atom"_compute_chunk_atom.html and "Howto chunk"_Howto_chunk.html
+doc pages for details of how chunks can be defined and examples of how
+they can be used to measure properties of a system.
 
 This compute calculates the radius of gyration Rg for each chunk,
 which includes all effects due to atoms passing thru periodic
@@ -93,8 +92,8 @@ calculated by the specified "compute
 chunk/atom"_compute_chunk_atom.html command.  If the {tensor} keyword
 is specified, the global array has 6 columns.  The vector or array can
 be accessed by any command that uses global values from a compute as
-input.  See "this section"_Section_howto.html#howto_15 for an overview
-of LAMMPS output options.
+input.  See the "Howto output"_Howto_output.html doc page for an
+overview of LAMMPS output options.
 
 All the vector or array values calculated by this compute are
 "intensive".  The vector or array values will be in distance
diff --git a/doc/src/compute_heat_flux.txt b/doc/src/compute_heat_flux.txt
index 39a1470201..84c4951328 100644
--- a/doc/src/compute_heat_flux.txt
+++ b/doc/src/compute_heat_flux.txt
@@ -32,9 +32,9 @@ or to calculate a thermal conductivity using the equilibrium
 Green-Kubo formalism.
 
 For other non-equilibrium ways to compute a thermal conductivity, see
-"this section"_Section_howto.html#howto_20.  These include use of the
-"fix thermal/conductivity"_fix_thermal_conductivity.html command for
-the Muller-Plathe method.  Or the "fix heat"_fix_heat.html command
+the "Howto kappa"_Howto_kappa.html doc page..  These include use of
+the "fix thermal/conductivity"_fix_thermal_conductivity.html command
+for the Muller-Plathe method.  Or the "fix heat"_fix_heat.html command
 which can add or subtract heat from groups of atoms.
 
 The compute takes three arguments which are IDs of other
@@ -99,8 +99,8 @@ result should be: average conductivity ~0.29 in W/mK.
 This compute calculates a global vector of length 6 (total heat flux
 vector, followed by convective heat flux vector), which can be
 accessed by indices 1-6.  These values can be used by any command that
-uses global vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+uses global vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The vector values calculated by this compute are "extensive", meaning
diff --git a/doc/src/compute_hexorder_atom.txt b/doc/src/compute_hexorder_atom.txt
index cdf47e0894..1ab40b513c 100644
--- a/doc/src/compute_hexorder_atom.txt
+++ b/doc/src/compute_hexorder_atom.txt
@@ -95,10 +95,9 @@ This compute calculates a per-atom array with 2 columns, giving the
 real and imaginary parts {qn}, a complex number restricted to the
 unit disk of the complex plane i.e. Re({qn})^2 + Im({qn})^2 <= 1 .
 
-These values can be accessed by any command that uses
-per-atom values from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+These values can be accessed by any command that uses per-atom values
+from a compute as input.  See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 [Restrictions:] none
 
diff --git a/doc/src/compute_improper.txt b/doc/src/compute_improper.txt
index f0d2fa400e..61c4f6cd29 100644
--- a/doc/src/compute_improper.txt
+++ b/doc/src/compute_improper.txt
@@ -37,8 +37,8 @@ This compute calculates a global vector of length N where N is the
 number of sub_styles defined by the "improper_style
 hybrid"_improper_style.html command.  which can be accessed by indices
 1-N.  These values can be used by any command that uses global scalar
-or vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+or vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The vector values are "extensive" and will be in energy
diff --git a/doc/src/compute_improper_local.txt b/doc/src/compute_improper_local.txt
index 0c289fbf07..2aec554d2f 100644
--- a/doc/src/compute_improper_local.txt
+++ b/doc/src/compute_improper_local.txt
@@ -63,8 +63,8 @@ array is the number of impropers.  If a single keyword is specified, a
 local vector is produced.  If two or more keywords are specified, a
 local array is produced where the number of columns = the number of
 keywords.  The vector or array can be accessed by any command that
-uses local values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+uses local values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The output for {chi} will be in degrees.
diff --git a/doc/src/compute_inertia_chunk.txt b/doc/src/compute_inertia_chunk.txt
index b0dbb12aea..3edd25d69b 100644
--- a/doc/src/compute_inertia_chunk.txt
+++ b/doc/src/compute_inertia_chunk.txt
@@ -30,10 +30,9 @@ chunk/atom"_compute_chunk_atom.html command, which assigns each atom
 to a single chunk (or no chunk).  The ID for this command is specified
 as chunkID.  For example, a single chunk could be the atoms in a
 molecule or atoms in a spatial bin.  See the "compute
-chunk/atom"_compute_chunk_atom.html doc page and "Section
-6.23"_Section_howto.html#howto_23 for details of how chunks can be
-defined and examples of how they can be used to measure properties of
-a system.
+chunk/atom"_compute_chunk_atom.html and "Howto chunk"_Howto_chunk.html
+doc pages for details of how chunks can be defined and examples of how
+they can be used to measure properties of a system.
 
 This compute calculates the 6 components of the symmetric inertia
 tensor for each chunk, ordered Ixx,Iyy,Izz,Ixy,Iyz,Ixz.  The
@@ -72,8 +71,8 @@ number of chunks {Nchunk} as calculated by the specified "compute
 chunk/atom"_compute_chunk_atom.html command.  The number of columns =
 6 for the 6 components of the inertia tensor for each chunk, ordered
 as listed above.  These values can be accessed by any command that
-uses global array values from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
+uses global array values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The array values are "intensive".  The array values will be in
diff --git a/doc/src/compute_ke.txt b/doc/src/compute_ke.txt
index caee897162..d6f4e1b709 100644
--- a/doc/src/compute_ke.txt
+++ b/doc/src/compute_ke.txt
@@ -44,7 +44,7 @@ include different degrees of freedom (translational, rotational, etc).
 
 This compute calculates a global scalar (the summed KE).  This value
 can be used by any command that uses a global scalar value from a
-compute as input.  See "Section 6.15"_Section_howto.html#howto_15
+compute as input.  See the "Howto output"_Howto_output.html doc page
 for an overview of LAMMPS output options.
 
 The scalar value calculated by this compute is "extensive".  The
diff --git a/doc/src/compute_ke_atom.txt b/doc/src/compute_ke_atom.txt
index f5431f0569..e0e96a80d8 100644
--- a/doc/src/compute_ke_atom.txt
+++ b/doc/src/compute_ke_atom.txt
@@ -34,7 +34,7 @@ specified compute group.
 
 This compute calculates a per-atom vector, which can be accessed by
 any command that uses per-atom values from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
+the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-atom vector values will be in energy "units"_units.html.
diff --git a/doc/src/compute_ke_atom_eff.txt b/doc/src/compute_ke_atom_eff.txt
index 8228e13f07..aa188a411b 100644
--- a/doc/src/compute_ke_atom_eff.txt
+++ b/doc/src/compute_ke_atom_eff.txt
@@ -57,9 +57,9 @@ electrons) not in the specified compute group.
 [Output info:]
 
 This compute calculates a scalar quantity for each atom, which can be
-accessed by any command that uses per-atom computes as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
-LAMMPS output options.
+accessed by any command that uses per-atom computes as input.  See the
+"Howto output"_Howto_output.html doc page for an overview of LAMMPS
+output options.
 
 The per-atom vector values will be in energy "units"_units.html.
 
diff --git a/doc/src/compute_ke_eff.txt b/doc/src/compute_ke_eff.txt
index ac8d7e6c01..334b4121ed 100644
--- a/doc/src/compute_ke_eff.txt
+++ b/doc/src/compute_ke_eff.txt
@@ -61,7 +61,7 @@ See "compute temp/eff"_compute_temp_eff.html.
 
 This compute calculates a global scalar (the KE).  This value can be
 used by any command that uses a global scalar value from a compute as
-input.  See "Section 6.15"_Section_howto.html#howto_15 for an
+input.  See the "Howto output"_Howto_output.html doc page for an
 overview of LAMMPS output options.
 
 The scalar value calculated by this compute is "extensive".  The
diff --git a/doc/src/compute_ke_rigid.txt b/doc/src/compute_ke_rigid.txt
index f79696a77a..69cf4a598e 100644
--- a/doc/src/compute_ke_rigid.txt
+++ b/doc/src/compute_ke_rigid.txt
@@ -40,8 +40,8 @@ calculation.
 
 This compute calculates a global scalar (the summed KE of all the
 rigid bodies).  This value can be used by any command that uses a
-global scalar value from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
+global scalar value from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar value calculated by this compute is "extensive".  The
diff --git a/doc/src/compute_meso_e_atom.txt b/doc/src/compute_meso_e_atom.txt
index 4e621b4301..70a8969386 100644
--- a/doc/src/compute_meso_e_atom.txt
+++ b/doc/src/compute_meso_e_atom.txt
@@ -38,7 +38,7 @@ specified compute group.
 
 This compute calculates a per-atom vector, which can be accessed by
 any command that uses per-atom values from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
+the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-atom vector values will be in energy "units"_units.html.
diff --git a/doc/src/compute_meso_rho_atom.txt b/doc/src/compute_meso_rho_atom.txt
index a017424dd0..912587f4a2 100644
--- a/doc/src/compute_meso_rho_atom.txt
+++ b/doc/src/compute_meso_rho_atom.txt
@@ -38,7 +38,7 @@ specified compute group.
 
 This compute calculates a per-atom vector, which can be accessed by
 any command that uses per-atom values from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
+the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-atom vector values will be in mass/volume "units"_units.html.
diff --git a/doc/src/compute_meso_t_atom.txt b/doc/src/compute_meso_t_atom.txt
index 9e81b038f4..c9db9bf50e 100644
--- a/doc/src/compute_meso_t_atom.txt
+++ b/doc/src/compute_meso_t_atom.txt
@@ -40,7 +40,7 @@ specified compute group.
 
 This compute calculates a per-atom vector, which can be accessed by
 any command that uses per-atom values from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
+the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-atom vector values will be in temperature "units"_units.html.
diff --git a/doc/src/compute_msd.txt b/doc/src/compute_msd.txt
index f806c5e292..742f7ce113 100644
--- a/doc/src/compute_msd.txt
+++ b/doc/src/compute_msd.txt
@@ -93,9 +93,8 @@ instead of many, which will change the values of msd somewhat.
 
 This compute calculates a global vector of length 4, which can be
 accessed by indices 1-4 by any command that uses global vector values
-from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+from a compute as input.  See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 The vector values are "intensive".  The vector values will be in
 distance^2 "units"_units.html.
diff --git a/doc/src/compute_msd_chunk.txt b/doc/src/compute_msd_chunk.txt
index 7f31b61ed0..3e1d8542ae 100644
--- a/doc/src/compute_msd_chunk.txt
+++ b/doc/src/compute_msd_chunk.txt
@@ -30,10 +30,9 @@ chunk/atom"_compute_chunk_atom.html command, which assigns each atom
 to a single chunk (or no chunk).  The ID for this command is specified
 as chunkID.  For example, a single chunk could be the atoms in a
 molecule or atoms in a spatial bin.  See the "compute
-chunk/atom"_compute_chunk_atom.html doc page and "Section
-6.23"_Section_howto.html#howto_23 for details of how chunks can be
-defined and examples of how they can be used to measure properties of
-a system.
+chunk/atom"_compute_chunk_atom.html and "Howto chunk"_Howto_chunk.html
+doc pages for details of how chunks can be defined and examples of how
+they can be used to measure properties of a system.
 
 Four quantities are calculated by this compute for each chunk.  The
 first 3 quantities are the squared dx,dy,dz displacements of the
@@ -106,7 +105,7 @@ number of chunks {Nchunk} as calculated by the specified "compute
 chunk/atom"_compute_chunk_atom.html command.  The number of columns =
 4 for dx,dy,dz and the total displacement.  These values can be
 accessed by any command that uses global array values from a compute
-as input.  See "this section"_Section_howto.html#howto_15 for an
+as input.  See the "Howto output"_Howto_output.html doc page for an
 overview of LAMMPS output options.
 
 The array values are "intensive".  The array values will be in
diff --git a/doc/src/compute_msd_nongauss.txt b/doc/src/compute_msd_nongauss.txt
index 198da999e0..db8788db0b 100644
--- a/doc/src/compute_msd_nongauss.txt
+++ b/doc/src/compute_msd_nongauss.txt
@@ -57,9 +57,8 @@ NOTEs, which also apply to this compute.
 
 This compute calculates a global vector of length 3, which can be
 accessed by indices 1-3 by any command that uses global vector values
-from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+from a compute as input.  See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 The vector values are "intensive".  The first vector value will be in
 distance^2 "units"_units.html, the second is in distance^4 units, and
diff --git a/doc/src/compute_omega_chunk.txt b/doc/src/compute_omega_chunk.txt
index 46c72d3dcb..4a7a996d1d 100644
--- a/doc/src/compute_omega_chunk.txt
+++ b/doc/src/compute_omega_chunk.txt
@@ -30,10 +30,9 @@ chunk/atom"_compute_chunk_atom.html command, which assigns each atom
 to a single chunk (or no chunk).  The ID for this command is specified
 as chunkID.  For example, a single chunk could be the atoms in a
 molecule or atoms in a spatial bin.  See the "compute
-chunk/atom"_compute_chunk_atom.html doc page and "Section
-6.23"_Section_howto.html#howto_23 for details of how chunks can be
-defined and examples of how they can be used to measure properties of
-a system.
+chunk/atom"_compute_chunk_atom.html and "Howto chunk"_Howto_chunk.html
+doc pages for details of how chunks can be defined and examples of how
+they can be used to measure properties of a system.
 
 This compute calculates the 3 components of the angular velocity
 vector for each chunk, via the formula L = Iw where L is the angular
@@ -73,8 +72,8 @@ number of chunks {Nchunk} as calculated by the specified "compute
 chunk/atom"_compute_chunk_atom.html command.  The number of columns =
 3 for the 3 xyz components of the angular velocity for each chunk.
 These values can be accessed by any command that uses global array
-values from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
+values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The array values are "intensive".  The array values will be in
diff --git a/doc/src/compute_orientorder_atom.txt b/doc/src/compute_orientorder_atom.txt
index adf11dcfcf..a8b4008012 100644
--- a/doc/src/compute_orientorder_atom.txt
+++ b/doc/src/compute_orientorder_atom.txt
@@ -115,10 +115,9 @@ Re({Ybar_-m+1}) Im({Ybar_-m+1}) ... Re({Ybar_m}) Im({Ybar_m}).  This
 way, the per-atom array will have a total of {nlvalues}+2*(2{l}+1)
 columns.
 
-These values can be accessed by any command that uses
-per-atom values from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+These values can be accessed by any command that uses per-atom values
+from a compute as input.  See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 [Restrictions:] none
 
diff --git a/doc/src/compute_pair.txt b/doc/src/compute_pair.txt
index 0602dab81b..be40d7a550 100644
--- a/doc/src/compute_pair.txt
+++ b/doc/src/compute_pair.txt
@@ -62,9 +62,8 @@ This compute calculates a global scalar which is {epair} or {evdwl} or
 {ecoul}.  If the pair style supports it, it also calculates a global
 vector of length >= 1, as determined by the pair style.  These values
 can be used by any command that uses global scalar or vector values
-from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+from a compute as input.  See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 The scalar and vector values calculated by this compute are
 "extensive".
diff --git a/doc/src/compute_pair_local.txt b/doc/src/compute_pair_local.txt
index 16aaba4667..bbbc5823f2 100644
--- a/doc/src/compute_pair_local.txt
+++ b/doc/src/compute_pair_local.txt
@@ -119,8 +119,8 @@ array is the number of pairs.  If a single keyword is specified, a
 local vector is produced.  If two or more keywords are specified, a
 local array is produced where the number of columns = the number of
 keywords.  The vector or array can be accessed by any command that
-uses local values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+uses local values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The output for {dist} will be in distance "units"_units.html.  The
diff --git a/doc/src/compute_pe.txt b/doc/src/compute_pe.txt
index 15f27a8eff..f3ce5678b0 100644
--- a/doc/src/compute_pe.txt
+++ b/doc/src/compute_pe.txt
@@ -64,9 +64,8 @@ See the "thermo_style" command for more details.
 
 This compute calculates a global scalar (the potential energy).  This
 value can be used by any command that uses a global scalar value from
-a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+a compute as input.  See the "Howto output"_Howto_output.html doc page
+for an overview of LAMMPS output options.
 
 The scalar value calculated by this compute is "extensive".  The
 scalar value will be in energy "units"_units.html.
diff --git a/doc/src/compute_pe_atom.txt b/doc/src/compute_pe_atom.txt
index c312c886a6..e6bc5f9052 100644
--- a/doc/src/compute_pe_atom.txt
+++ b/doc/src/compute_pe_atom.txt
@@ -81,7 +81,7 @@ global system energy.
 
 This compute calculates a per-atom vector, which can be accessed by
 any command that uses per-atom values from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
+the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-atom vector values will be in energy "units"_units.html.
diff --git a/doc/src/compute_plasticity_atom.txt b/doc/src/compute_plasticity_atom.txt
index 788213fc65..c992ca8200 100644
--- a/doc/src/compute_plasticity_atom.txt
+++ b/doc/src/compute_plasticity_atom.txt
@@ -41,8 +41,9 @@ compute group.
 [Output info:]
 
 This compute calculates a per-atom vector, which can be accessed by
-any command that uses per-atom values from a compute as input. See
-Section_howto 15 for an overview of LAMMPS output options.
+any command that uses per-atom values from a compute as input.  See
+the "Howto output"_Howto_output.html doc page for an overview of
+LAMMPS output options.
 
 The per-atom vector values are unitless numbers (lambda) >= 0.0.
 
diff --git a/doc/src/compute_pressure.txt b/doc/src/compute_pressure.txt
index 8b7491da49..51d3241ace 100644
--- a/doc/src/compute_pressure.txt
+++ b/doc/src/compute_pressure.txt
@@ -129,8 +129,8 @@ instructions on how to use the accelerated styles effectively.
 This compute calculates a global scalar (the pressure) and a global
 vector of length 6 (pressure tensor), which can be accessed by indices
 1-6.  These values can be used by any command that uses global scalar
-or vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+or vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar and vector values calculated by this compute are
diff --git a/doc/src/compute_property_atom.txt b/doc/src/compute_property_atom.txt
index c0970d5121..88bdf5a453 100644
--- a/doc/src/compute_property_atom.txt
+++ b/doc/src/compute_property_atom.txt
@@ -93,11 +93,11 @@ compute 3 all property/atom sp spx spy spz :pre
 
 Define a computation that simply stores atom attributes for each atom
 in the group.  This is useful so that the values can be used by other
-"output commands"_Section_howto.html#howto_15 that take computes as
-inputs.  See for example, the "compute reduce"_compute_reduce.html,
-"fix ave/atom"_fix_ave_atom.html, "fix ave/histo"_fix_ave_histo.html,
-"fix ave/chunk"_fix_ave_chunk.html, and "atom-style
-variable"_variable.html commands.
+"output commands"_Howto_output.html that take computes as inputs.  See
+for example, the "compute reduce"_compute_reduce.html, "fix
+ave/atom"_fix_ave_atom.html, "fix ave/histo"_fix_ave_histo.html, "fix
+ave/chunk"_fix_ave_chunk.html, and "atom-style variable"_variable.html
+commands.
 
 The list of possible attributes is the same as that used by the "dump
 custom"_dump.html command, which describes their meaning, with some
@@ -149,8 +149,8 @@ on the number of input values.  If a single input is specified, a
 per-atom vector is produced.  If two or more inputs are specified, a
 per-atom array is produced where the number of columns = the number of
 inputs.  The vector or array can be accessed by any command that uses
-per-atom values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+per-atom values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The vector or array values will be in whatever "units"_units.html the
diff --git a/doc/src/compute_property_chunk.txt b/doc/src/compute_property_chunk.txt
index b9d4944b30..ad131a8a60 100644
--- a/doc/src/compute_property_chunk.txt
+++ b/doc/src/compute_property_chunk.txt
@@ -36,15 +36,14 @@ chunk/atom"_compute_chunk_atom.html command, which assigns each atom
 to a single chunk (or no chunk).  The ID for this command is specified
 as chunkID.  For example, a single chunk could be the atoms in a
 molecule or atoms in a spatial bin.  See the "compute
-chunk/atom"_compute_chunk_atom.html doc page and "Section
-6.23"_Section_howto.html#howto_23 for details of how chunks can be
-defined and examples of how they can be used to measure properties of
-a system.
+chunk/atom"_compute_chunk_atom.html and "Howto chunk"_Howto_chunk.html
+doc pages for details of how chunks can be defined and examples of how
+they can be used to measure properties of a system.
 
 This compute calculates and stores the specified attributes of chunks
 as global data so they can be accessed by other "output
-commands"_Section_howto.html#howto_15 and used in conjunction with
-other commands that generate per-chunk data, such as "compute
+commands"_Howto_output.html and used in conjunction with other
+commands that generate per-chunk data, such as "compute
 com/chunk"_compute_com_chunk.html or "compute
 msd/chunk"_compute_msd_chunk.html.
 
@@ -103,8 +102,8 @@ single input is specified, a global vector is produced.  If two or
 more inputs are specified, a global array is produced where the number
 of columns = the number of inputs.  The vector or array can be
 accessed by any command that uses global values from a compute as
-input.  See "this section"_Section_howto.html#howto_15 for an overview
-of LAMMPS output options.
+input.  See the "Howto output"_Howto_output.html doc page for an
+overview of LAMMPS output options.
 
 The vector or array values are "intensive".  The values will be
 unitless or in the units discussed above.
diff --git a/doc/src/compute_property_local.txt b/doc/src/compute_property_local.txt
index 39106a39c8..74595f00f6 100644
--- a/doc/src/compute_property_local.txt
+++ b/doc/src/compute_property_local.txt
@@ -48,10 +48,10 @@ compute 1 all property/local atype aatom2 :pre
 
 Define a computation that stores the specified attributes as local
 data so it can be accessed by other "output
-commands"_Section_howto.html#howto_15.  If the input attributes refer
-to bond information, then the number of datums generated, aggregated
-across all processors, equals the number of bonds in the system.
-Ditto for pairs, angles, etc.
+commands"_Howto_output.html.  If the input attributes refer to bond
+information, then the number of datums generated, aggregated across
+all processors, equals the number of bonds in the system.  Ditto for
+pairs, angles, etc.
 
 If multiple attributes are specified then they must all generate the
 same amount of information, so that the resulting local array has the
@@ -140,8 +140,8 @@ the array is the number of bonds, angles, etc.  If a single input is
 specified, a local vector is produced.  If two or more inputs are
 specified, a local array is produced where the number of columns = the
 number of inputs.  The vector or array can be accessed by any command
-that uses local values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+that uses local values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The vector or array values will be integers that correspond to the
diff --git a/doc/src/compute_rdf.txt b/doc/src/compute_rdf.txt
index e462e85fc0..c2d2c379fe 100644
--- a/doc/src/compute_rdf.txt
+++ b/doc/src/compute_rdf.txt
@@ -152,7 +152,7 @@ coordinate (center of the bin), Each successive set of 2 columns has
 the g(r) and coord(r) values for a specific set of {itypeN} versus
 {jtypeN} interactions, as described above.  These values can be used
 by any command that uses a global values from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
+the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The array values calculated by this compute are all "intensive".
diff --git a/doc/src/compute_reduce.txt b/doc/src/compute_reduce.txt
index 48115a0886..614ef50581 100644
--- a/doc/src/compute_reduce.txt
+++ b/doc/src/compute_reduce.txt
@@ -192,7 +192,7 @@ This compute calculates a global scalar if a single input value is
 specified or a global vector of length N where N is the number of
 inputs, and which can be accessed by indices 1 to N.  These values can
 be used by any command that uses global scalar or vector values from a
-compute as input.  See "Section 6.15"_Section_howto.html#howto_15
+compute as input.  See the "Howto output"_Howto_output.html doc page
 for an overview of LAMMPS output options.
 
 All the scalar or vector values calculated by this compute are
diff --git a/doc/src/compute_rigid_local.txt b/doc/src/compute_rigid_local.txt
index 077ad57d81..380713d091 100644
--- a/doc/src/compute_rigid_local.txt
+++ b/doc/src/compute_rigid_local.txt
@@ -49,8 +49,8 @@ Define a computation that simply stores rigid body attributes for
 rigid bodies defined by the "fix rigid/small"_fix_rigid.html command
 or one of its NVE, NVT, NPT, NPH variants.  The data is stored as
 local data so it can be accessed by other "output
-commands"_Section_howto.html#howto_15 that process local data, such as
-the "compute reduce"_compute_reduce.html or "dump local"_dump.html
+commands"_Howto_output.html that process local data, such as the
+"compute reduce"_compute_reduce.html or "dump local"_dump.html
 commands.
 
 Note that this command only works with the "fix
@@ -154,9 +154,9 @@ array is the number of rigid bodies.  If a single keyword is
 specified, a local vector is produced.  If two or more keywords are
 specified, a local array is produced where the number of columns = the
 number of keywords.  The vector or array can be accessed by any
-command that uses local values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+command that uses local values from a compute as input.  See the
+"Howto output"_Howto_output.html doc page for an overview of LAMMPS
+output options.
 
 The vector or array values will be in whatever "units"_units.html the
 corresponding attribute is in:
diff --git a/doc/src/compute_saed.txt b/doc/src/compute_saed.txt
index 020f72f565..419ad3c489 100644
--- a/doc/src/compute_saed.txt
+++ b/doc/src/compute_saed.txt
@@ -143,10 +143,9 @@ the number of reciprocal lattice nodes that are explored by the mesh.
 The entries of the global vector are the computed diffraction
 intensities as described above.
 
-The vector can be accessed by any command that uses global values
-from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+The vector can be accessed by any command that uses global values from
+a compute as input.  See the "Howto output"_Howto_output.html doc page
+for an overview of LAMMPS output options.
 
 All array values calculated by this compute are "intensive".
 
diff --git a/doc/src/compute_slice.txt b/doc/src/compute_slice.txt
index 13f40ecf92..69eb7976ad 100644
--- a/doc/src/compute_slice.txt
+++ b/doc/src/compute_slice.txt
@@ -94,8 +94,8 @@ specified or a global array with N columns where N is the number of
 inputs.  The length of the vector or the number of rows in the array
 is equal to the number of values extracted from each input vector.
 These values can be used by any command that uses global vector or
-array values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+array values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The vector or array values calculated by this compute are simply
diff --git a/doc/src/compute_smd_contact_radius.txt b/doc/src/compute_smd_contact_radius.txt
index 69fe453343..5e043a1390 100644
--- a/doc/src/compute_smd_contact_radius.txt
+++ b/doc/src/compute_smd_contact_radius.txt
@@ -35,9 +35,9 @@ specified compute group.
 
 [Output info:]
 
-This compute calculates a per-particle vector, which can be accessed by
-any command that uses per-particle values from a compute as input.  See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
+This compute calculates a per-particle vector, which can be accessed
+by any command that uses per-particle values from a compute as input.
+See the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-particle vector values will be in distance "units"_units.html.
diff --git a/doc/src/compute_smd_damage.txt b/doc/src/compute_smd_damage.txt
index b6c75a3b20..ea814ba064 100644
--- a/doc/src/compute_smd_damage.txt
+++ b/doc/src/compute_smd_damage.txt
@@ -28,10 +28,10 @@ See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to use Smooth Mach Dynamics in
 
 [Output Info:]
 
-This compute calculates a per-particle vector, which can be accessed by
-any command that uses per-particle values from a compute as input.  See
-"How-to discussions, section 6.15"_Section_howto.html#howto_15
-for an overview of LAMMPS output options.
+This compute calculates a per-particle vector, which can be accessed
+by any command that uses per-particle values from a compute as input.
+See the "Howto output"_Howto_output.html doc page for an overview of
+LAMMPS output options.
 
 The per-particle values are dimensionless an in the range of zero to one.
 
diff --git a/doc/src/compute_smd_hourglass_error.txt b/doc/src/compute_smd_hourglass_error.txt
index a15b79e64e..046f7e7f27 100644
--- a/doc/src/compute_smd_hourglass_error.txt
+++ b/doc/src/compute_smd_hourglass_error.txt
@@ -37,10 +37,10 @@ Mach Dynamics in LAMMPS.
 
 [Output Info:]
 
-This compute calculates a per-particle vector, which can be accessed by
-any command that uses per-particle values from a compute as input.  See
-"How-to discussions, section 6.15"_Section_howto.html#howto_15
-for an overview of LAMMPS output options.
+This compute calculates a per-particle vector, which can be accessed
+by any command that uses per-particle values from a compute as input.
+See the "Howto output"_Howto_output.html doc page for an overview of
+LAMMPS output options.
 
 The per-particle vector values will are dimensionless. See
 "units"_units.html.
diff --git a/doc/src/compute_smd_internal_energy.txt b/doc/src/compute_smd_internal_energy.txt
index bc6f9e0f20..b88bd8a1ce 100644
--- a/doc/src/compute_smd_internal_energy.txt
+++ b/doc/src/compute_smd_internal_energy.txt
@@ -31,8 +31,8 @@ Mach Dynamics in LAMMPS.
 
 This compute calculates a per-particle vector, which can be accessed
 by any command that uses per-particle values from a compute as input.
-See "How-to discussions, section 6.15"_Section_howto.html#howto_15 for
-an overview of LAMMPS output options.
+See the "Howto output"_Howto_output.html doc page for an overview of
+LAMMPS output options.
 
 The per-particle vector values will be given in "units"_units.html of energy.
 
diff --git a/doc/src/compute_smd_plastic_strain.txt b/doc/src/compute_smd_plastic_strain.txt
index af5b164453..7fd083726f 100644
--- a/doc/src/compute_smd_plastic_strain.txt
+++ b/doc/src/compute_smd_plastic_strain.txt
@@ -32,8 +32,8 @@ Mach Dynamics in LAMMPS.
 
 This compute calculates a per-particle vector, which can be accessed
 by any command that uses per-particle values from a compute as input.
-See "How-to discussions, section 6.15"_Section_howto.html#howto_15 for
-an overview of LAMMPS output options.
+See the "Howto output"_Howto_output.html doc page for an overview of
+LAMMPS output options.
 
 The per-particle values will be given dimensionless. See "units"_units.html.
 
diff --git a/doc/src/compute_smd_plastic_strain_rate.txt b/doc/src/compute_smd_plastic_strain_rate.txt
index ba7b3176db..b17684e05e 100644
--- a/doc/src/compute_smd_plastic_strain_rate.txt
+++ b/doc/src/compute_smd_plastic_strain_rate.txt
@@ -32,8 +32,8 @@ Mach Dynamics in LAMMPS.
 
 This compute calculates a per-particle vector, which can be accessed
 by any command that uses per-particle values from a compute as input.
-See "How-to discussions, section 6.15"_Section_howto.html#howto_15 for
-an overview of LAMMPS output options.
+See the "Howto output"_Howto_output.html doc page for an overview of
+LAMMPS output options.
 
 The per-particle values will be given in "units"_units.html of one over time.
 
diff --git a/doc/src/compute_smd_rho.txt b/doc/src/compute_smd_rho.txt
index ae50526725..375513b9c7 100644
--- a/doc/src/compute_smd_rho.txt
+++ b/doc/src/compute_smd_rho.txt
@@ -33,8 +33,8 @@ Mach Dynamics in LAMMPS.
 
 This compute calculates a per-particle vector, which can be accessed
 by any command that uses per-particle values from a compute as input.
-See "How-to discussions, section 6.15"_Section_howto.html#howto_15 for
-an overview of LAMMPS output options.
+See the "Howto output"_Howto_output.html doc page for an overview of
+LAMMPS output options.
 
 The per-particle values will be in "units"_units.html of mass over volume.
 
diff --git a/doc/src/compute_smd_tlsph_defgrad.txt b/doc/src/compute_smd_tlsph_defgrad.txt
index 68b5dffa1c..d07ff99f07 100644
--- a/doc/src/compute_smd_tlsph_defgrad.txt
+++ b/doc/src/compute_smd_tlsph_defgrad.txt
@@ -32,9 +32,8 @@ Mach Dynamics in LAMMPS.
 
 This compute outputss a per-particle vector of vectors (tensors),
 which can be accessed by any command that uses per-particle values
-from a compute as input. See "How-to discussions, section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+from a compute as input. See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 The per-particle vector values will be given dimensionless. See
 "units"_units.html.  The per-particle vector has 10 entries. The first
diff --git a/doc/src/compute_smd_tlsph_dt.txt b/doc/src/compute_smd_tlsph_dt.txt
index 560a9b6fd8..798278661a 100644
--- a/doc/src/compute_smd_tlsph_dt.txt
+++ b/doc/src/compute_smd_tlsph_dt.txt
@@ -37,8 +37,8 @@ Mach Dynamics in LAMMPS.
 
 This compute calculates a per-particle vector, which can be accessed
 by any command that uses per-particle values from a compute as input.
-See "How-to discussions, section 6.15"_Section_howto.html#howto_15 for
-an overview of LAMMPS output options.
+See the "Howto output"_Howto_output.html doc page for an overview of
+LAMMPS output options.
 
 The per-particle values will be given in "units"_units.html of time.
 
diff --git a/doc/src/compute_smd_tlsph_num_neighs.txt b/doc/src/compute_smd_tlsph_num_neighs.txt
index 0420d1903d..632ab94208 100644
--- a/doc/src/compute_smd_tlsph_num_neighs.txt
+++ b/doc/src/compute_smd_tlsph_num_neighs.txt
@@ -32,8 +32,8 @@ Mach Dynamics in LAMMPS.
 
 This compute calculates a per-particle vector, which can be accessed
 by any command that uses per-particle values from a compute as input.
-See "How-to discussions, section 6.15"_Section_howto.html#howto_15 for
-an overview of LAMMPS output options.
+See the "Howto output"_Howto_output.html doc page for an overview of
+LAMMPS output options.
 
 The per-particle values are dimensionless. See "units"_units.html.
 
diff --git a/doc/src/compute_smd_tlsph_shape.txt b/doc/src/compute_smd_tlsph_shape.txt
index 02bd0c50dd..a3daf70222 100644
--- a/doc/src/compute_smd_tlsph_shape.txt
+++ b/doc/src/compute_smd_tlsph_shape.txt
@@ -33,9 +33,8 @@ Mach Dynamics in LAMMPS.
 
 This compute calculates a per-particle vector of vectors, which can be
 accessed by any command that uses per-particle values from a compute
-as input. See "How-to discussions, section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+as input. See the "Howto output"_Howto_output.html doc page for an
+overview of LAMMPS output options.
 
 The per-particle vector has 7 entries. The first three entries
 correspond to the lengths of the ellipsoid's axes and have units of
diff --git a/doc/src/compute_smd_tlsph_strain.txt b/doc/src/compute_smd_tlsph_strain.txt
index f25d1b77db..899166359c 100644
--- a/doc/src/compute_smd_tlsph_strain.txt
+++ b/doc/src/compute_smd_tlsph_strain.txt
@@ -31,9 +31,8 @@ Mach Dynamics in LAMMPS.
 
 This compute calculates a per-particle vector of vectors (tensors),
 which can be accessed by any command that uses per-particle values
-from a compute as input.  See "How-to discussions, section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+from a compute as input.  See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 The per-particle tensor values will be given dimensionless. See
 "units"_units.html.
diff --git a/doc/src/compute_smd_tlsph_strain_rate.txt b/doc/src/compute_smd_tlsph_strain_rate.txt
index 13ca57ac4d..29246a05d9 100644
--- a/doc/src/compute_smd_tlsph_strain_rate.txt
+++ b/doc/src/compute_smd_tlsph_strain_rate.txt
@@ -31,9 +31,8 @@ Mach Dynamics in LAMMPS.
 
 This compute calculates a per-particle vector of vectors (tensors),
 which can be accessed by any command that uses per-particle values
-from a compute as input. See "How-to discussions, section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+from a compute as input. See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 The values will be given in "units"_units.html of one over time.
 
diff --git a/doc/src/compute_smd_tlsph_stress.txt b/doc/src/compute_smd_tlsph_stress.txt
index 5d707d4c2f..c2c23b6836 100644
--- a/doc/src/compute_smd_tlsph_stress.txt
+++ b/doc/src/compute_smd_tlsph_stress.txt
@@ -29,11 +29,10 @@ Mach Dynamics in LAMMPS.
 
 [Output info:]
 
-This compute calculates a per-particle vector of vectors (tensors), which can be
-accessed by any command that uses per-particle values from a compute
-as input. See
-"How-to discussions, section 6.15"_Section_howto.html#howto_15
-for an overview of LAMMPS output options.
+This compute calculates a per-particle vector of vectors (tensors),
+which can be accessed by any command that uses per-particle values
+from a compute as input. See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 The values will be given in "units"_units.html of pressure.
 
diff --git a/doc/src/compute_smd_triangle_mesh_vertices.txt b/doc/src/compute_smd_triangle_mesh_vertices.txt
index 5b0f0afc4c..3080ef700e 100644
--- a/doc/src/compute_smd_triangle_mesh_vertices.txt
+++ b/doc/src/compute_smd_triangle_mesh_vertices.txt
@@ -31,9 +31,9 @@ Mach Dynamics in LAMMPS.
 [Output info:]
 
 This compute returns a per-particle vector of vectors, which can be
-accessed by any command that uses per-particle values from a compute as
-input. See "How-to discussions, section 6.15"_Section_howto.html#howto_15
-for an overview of LAMMPS output options.
+accessed by any command that uses per-particle values from a compute
+as input. See the "Howto output"_Howto_output.html doc page for an
+overview of LAMMPS output options.
 
 The per-particle vector has nine entries, (x1/y1/z1), (x2/y2/z2), and
 (x3/y3/z3) corresponding to the first, second, and third vertex of
diff --git a/doc/src/compute_smd_ulsph_num_neighs.txt b/doc/src/compute_smd_ulsph_num_neighs.txt
index adece93343..8550838799 100644
--- a/doc/src/compute_smd_ulsph_num_neighs.txt
+++ b/doc/src/compute_smd_ulsph_num_neighs.txt
@@ -32,7 +32,7 @@ Mach Dynamics in LAMMPS.
 
 This compute returns a per-particle vector, which can be accessed by
 any command that uses per-particle values from a compute as input.
-See "Section 6.15"_Section_howto.html#howto_15 for an overview of
+See the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-particle values will be given dimensionless, see "units"_units.html.
diff --git a/doc/src/compute_smd_ulsph_strain.txt b/doc/src/compute_smd_ulsph_strain.txt
index b7d425b12b..3813e61f6c 100644
--- a/doc/src/compute_smd_ulsph_strain.txt
+++ b/doc/src/compute_smd_ulsph_strain.txt
@@ -31,7 +31,7 @@ Mach Dynamics in LAMMPS.
 
 This compute calculates a per-particle tensor, which can be accessed
 by any command that uses per-particle values from a compute as input.
-See "Section 6.15"_Section_howto.html#howto_15 for an overview of
+See the "Howto output"_Howto_output.html doc page for an overview of
 LAMMPS output options.
 
 The per-particle vector has 6 entries, corresponding to the xx, yy,
diff --git a/doc/src/compute_smd_ulsph_strain_rate.txt b/doc/src/compute_smd_ulsph_strain_rate.txt
index e2c349c265..251e5ddbf7 100644
--- a/doc/src/compute_smd_ulsph_strain_rate.txt
+++ b/doc/src/compute_smd_ulsph_strain_rate.txt
@@ -32,9 +32,8 @@ Mach Dynamics in LAMMPS.
 
 This compute calculates a per-particle vector of vectors (tensors),
 which can be accessed by any command that uses per-particle values
-from a compute as input. See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+from a compute as input. See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 The values will be given in "units"_units.html of one over time.
 
diff --git a/doc/src/compute_smd_ulsph_stress.txt b/doc/src/compute_smd_ulsph_stress.txt
index 47f903d3b8..719cf006c9 100644
--- a/doc/src/compute_smd_ulsph_stress.txt
+++ b/doc/src/compute_smd_ulsph_stress.txt
@@ -30,9 +30,8 @@ Mach Dynamics in LAMMPS.
 
 This compute calculates a per-particle vector of vectors (tensors),
 which can be accessed by any command that uses per-particle values
-from a compute as input. See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+from a compute as input. See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 The values will be given in "units"_units.html of pressure.
 
diff --git a/doc/src/compute_smd_vol.txt b/doc/src/compute_smd_vol.txt
index fc736a5bf5..495c09a5f5 100644
--- a/doc/src/compute_smd_vol.txt
+++ b/doc/src/compute_smd_vol.txt
@@ -31,8 +31,8 @@ Mach Dynamics in LAMMPS.
 
 This compute calculates a per-particle vector, which can be accessed
 by any command that uses per-particle values from a compute as input.
-See "How-to discussions, section 6.15"_Section_howto.html#howto_15 for
-an overview of LAMMPS output options.
+See the "Howto output"_Howto_output.html doc page for an overview of
+LAMMPS output options.
 
 The per-particle vector values will be given in "units"_units.html of
 volume.
diff --git a/doc/src/compute_sna_atom.txt b/doc/src/compute_sna_atom.txt
index 268e23ac28..6fdd85568b 100644
--- a/doc/src/compute_sna_atom.txt
+++ b/doc/src/compute_sna_atom.txt
@@ -244,9 +244,8 @@ So the nesting order from inside to outside is bispectrum component,
 linear then quadratic, vector/tensor component, type.
 
 These values can be accessed by any command that uses per-atom values
-from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+from a compute as input.  See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 [Restrictions:]
 
diff --git a/doc/src/compute_stress_atom.txt b/doc/src/compute_stress_atom.txt
index 83b1df68e3..423c1dcfda 100644
--- a/doc/src/compute_stress_atom.txt
+++ b/doc/src/compute_stress_atom.txt
@@ -142,9 +142,8 @@ global system pressure.
 
 This compute calculates a per-atom array with 6 columns, which can be
 accessed by indices 1-6 by any command that uses per-atom values from
-a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+a compute as input.  See the "Howto output"_Howto_output.html doc page
+for an overview of LAMMPS output options.
 
 The per-atom array values will be in pressure*volume
 "units"_units.html as discussed above.
diff --git a/doc/src/compute_tdpd_cc_atom.txt b/doc/src/compute_tdpd_cc_atom.txt
index a6a12dc52c..ec077a33d1 100644
--- a/doc/src/compute_tdpd_cc_atom.txt
+++ b/doc/src/compute_tdpd_cc_atom.txt
@@ -33,9 +33,9 @@ details see "(Li2015)"_#Li2015a.
 [Output info:]
 
 This compute calculates a per-atom vector, which can be accessed by
-any command that uses per-atom values from a compute as input. See
-"Section 6.15"_Section_howto.html#howto_15 for an overview of
-LAMMPS output options.
+any command that uses per-atom values from a compute as input. See the
+"Howto output"_Howto_output.html doc page for an overview of LAMMPS
+output options.
 
 The per-atom vector values will be in the units of chemical species 
 per unit mass.
diff --git a/doc/src/compute_temp.txt b/doc/src/compute_temp.txt
index f9fa56c882..cce40261c6 100644
--- a/doc/src/compute_temp.txt
+++ b/doc/src/compute_temp.txt
@@ -58,8 +58,8 @@ compute thermo_temp all temp :pre
 
 See the "thermo_style" command for more details.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostatting.
 
 :line
@@ -91,8 +91,8 @@ instructions on how to use the accelerated styles effectively.
 This compute calculates a global scalar (the temperature) and a global
 vector of length 6 (KE tensor), which can be accessed by indices 1-6.
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar value calculated by this compute is "intensive".  The
diff --git a/doc/src/compute_temp_asphere.txt b/doc/src/compute_temp_asphere.txt
index 495366b345..a5fc0e8927 100644
--- a/doc/src/compute_temp_asphere.txt
+++ b/doc/src/compute_temp_asphere.txt
@@ -93,8 +93,8 @@ computed correctly.  If needed, the subtracted degrees-of-freedom can
 be altered using the {extra} option of the
 "compute_modify"_compute_modify.html command.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostatting.
 
 :line
@@ -122,8 +122,8 @@ rotational degrees of freedom.
 This compute calculates a global scalar (the temperature) and a global
 vector of length 6 (KE tensor), which can be accessed by indices 1-6.
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar value calculated by this compute is "intensive".  The
diff --git a/doc/src/compute_temp_body.txt b/doc/src/compute_temp_body.txt
index f72b886cc4..580564b059 100644
--- a/doc/src/compute_temp_body.txt
+++ b/doc/src/compute_temp_body.txt
@@ -75,8 +75,8 @@ computed correctly.  If needed, the subtracted degrees-of-freedom can
 be altered using the {extra} option of the
 "compute_modify"_compute_modify.html command.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostatting.
 
 :line
@@ -104,8 +104,8 @@ rotational degrees of freedom.
 This compute calculates a global scalar (the temperature) and a global
 vector of length 6 (KE tensor), which can be accessed by indices 1-6.
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar value calculated by this compute is "intensive".  The
diff --git a/doc/src/compute_temp_chunk.txt b/doc/src/compute_temp_chunk.txt
index f877f6ece8..5d7d64ce68 100644
--- a/doc/src/compute_temp_chunk.txt
+++ b/doc/src/compute_temp_chunk.txt
@@ -52,10 +52,9 @@ chunk/atom"_compute_chunk_atom.html command, which assigns each atom
 to a single chunk (or no chunk).  The ID for this command is specified
 as chunkID.  For example, a single chunk could be the atoms in a
 molecule or atoms in a spatial bin.  See the "compute
-chunk/atom"_compute_chunk_atom.html doc page and "Section
-6.23"_Section_howto.html#howto_23 for details of how chunks can be
-defined and examples of how they can be used to measure properties of
-a system.
+chunk/atom"_compute_chunk_atom.html and "Howto chunk"_Howto_chunk.html
+doc pages for details of how chunks can be defined and examples of how
+they can be used to measure properties of a system.
 
 The temperature is calculated by the formula KE = DOF/2 k T, where KE =
 total kinetic energy of all atoms assigned to chunks (sum of 1/2 m
@@ -200,8 +199,8 @@ molecule.
 This compute calculates a global scalar (the temperature) and a global
 vector of length 6 (KE tensor), which can be accessed by indices 1-6.
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 This compute also optionally calculates a global array, if one or more
@@ -210,9 +209,8 @@ of the optional values are specified.  The number of rows in the array
 "compute chunk/atom"_compute_chunk_atom.html command.  The number of
 columns is the number of specified values (1 or more).  These values
 can be accessed by any command that uses global array values from a
-compute as input.  Again, see "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+compute as input.  Again, see the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 The scalar value calculated by this compute is "intensive".  The
 vector values are "extensive".  The array values are "intensive".
diff --git a/doc/src/compute_temp_com.txt b/doc/src/compute_temp_com.txt
index c7cc5ec4e2..e8b46aec97 100644
--- a/doc/src/compute_temp_com.txt
+++ b/doc/src/compute_temp_com.txt
@@ -65,8 +65,8 @@ atoms that include these constraints will be computed correctly.  If
 needed, the subtracted degrees-of-freedom can be altered using the
 {extra} option of the "compute_modify"_compute_modify.html command.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostatting.
 
 [Output info:]
@@ -74,8 +74,8 @@ thermostatting.
 This compute calculates a global scalar (the temperature) and a global
 vector of length 6 (KE tensor), which can be accessed by indices 1-6.
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar value calculated by this compute is "intensive".  The
diff --git a/doc/src/compute_temp_cs.txt b/doc/src/compute_temp_cs.txt
index 561b787df6..9d2ceabd46 100644
--- a/doc/src/compute_temp_cs.txt
+++ b/doc/src/compute_temp_cs.txt
@@ -28,9 +28,9 @@ Define a computation that calculates the temperature of a system based
 on the center-of-mass velocity of atom pairs that are bonded to each
 other.  This compute is designed to be used with the adiabatic
 core/shell model of "(Mitchell and Finchham)"_#MitchellFinchham1.  See
-"Section 6.25"_Section_howto.html#howto_25 of the manual for an
-overview of the model as implemented in LAMMPS.  Specifically, this
-compute enables correct temperature calculation and thermostatting of
+the "Howto coreshell"_Howto_coreshell.html doc page for an overview of
+the model as implemented in LAMMPS.  Specifically, this compute
+enables correct temperature calculation and thermostatting of
 core/shell pairs where it is desirable for the internal degrees of
 freedom of the core/shell pairs to not be influenced by a thermostat.
 A compute of this style can be used by any command that computes a
@@ -83,8 +83,9 @@ langevin"_fix_langevin.html.
 
 The internal energy of core/shell pairs can be calculated by the
 "compute temp/chunk"_compute_temp_chunk.html command, if chunks are
-defined as core/shell pairs.  See "Section
-6.25"_Section_howto.html#howto_25 for more discussion on how to do this.
+defined as core/shell pairs.  See the "Howto
+coreshell"_Howto_coreshell.html doc page doc page for more discussion
+on how to do this.
 
 [Output info:]
 
diff --git a/doc/src/compute_temp_deform.txt b/doc/src/compute_temp_deform.txt
index 168b0b3880..b81d07babd 100644
--- a/doc/src/compute_temp_deform.txt
+++ b/doc/src/compute_temp_deform.txt
@@ -104,8 +104,8 @@ atoms that include these constraints will be computed correctly.  If
 needed, the subtracted degrees-of-freedom can be altered using the
 {extra} option of the "compute_modify"_compute_modify.html command.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostatting.
 
 [Output info:]
@@ -113,8 +113,8 @@ thermostatting.
 This compute calculates a global scalar (the temperature) and a global
 vector of length 6 (KE tensor), which can be accessed by indices 1-6.
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar value calculated by this compute is "intensive".  The
diff --git a/doc/src/compute_temp_deform_eff.txt b/doc/src/compute_temp_deform_eff.txt
index d09a0ace2f..418180d93c 100644
--- a/doc/src/compute_temp_deform_eff.txt
+++ b/doc/src/compute_temp_deform_eff.txt
@@ -48,8 +48,8 @@ component of the electrons is not affected.
 This compute calculates a global scalar (the temperature) and a global
 vector of length 6 (KE tensor), which can be accessed by indices 1-6.
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar value calculated by this compute is "intensive".  The
diff --git a/doc/src/compute_temp_drude.txt b/doc/src/compute_temp_drude.txt
index 169b8d5880..3e86dc8fda 100644
--- a/doc/src/compute_temp_drude.txt
+++ b/doc/src/compute_temp_drude.txt
@@ -22,10 +22,10 @@ compute TDRUDE all temp/drude :pre
 [Description:]
 
 Define a computation that calculates the temperatures of core-Drude
-pairs. This compute is designed to be used with the
-"thermalized Drude oscillator model"_tutorial_drude.html.  Polarizable
-models in LAMMPS are described in "this
-Section"_Section_howto.html#howto_25.
+pairs. This compute is designed to be used with the "thermalized Drude
+oscillator model"_Howto_drude.html.  Polarizable models in LAMMPS
+are described on the "Howto polarizable"_Howto_polarizable.html doc
+page.
 
 Drude oscillators consist of a core particle and a Drude particle
 connected by a harmonic bond, and the relative motion of these Drude
@@ -57,8 +57,8 @@ kinetic energy of the centers of mass (energy units)
 kinetic energy of the dipoles (energy units) :ol
 
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 Both the scalar value and the first two values of the vector
diff --git a/doc/src/compute_temp_eff.txt b/doc/src/compute_temp_eff.txt
index 409319edcb..42d22a33a7 100644
--- a/doc/src/compute_temp_eff.txt
+++ b/doc/src/compute_temp_eff.txt
@@ -69,8 +69,8 @@ atoms that include these constraints will be computed correctly.  If
 needed, the subtracted degrees-of-freedom can be altered using the
 {extra} option of the "compute_modify"_compute_modify.html command.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostatting.
 
 [Output info:]
diff --git a/doc/src/compute_temp_partial.txt b/doc/src/compute_temp_partial.txt
index 59ec8cf20b..0fda274ca0 100644
--- a/doc/src/compute_temp_partial.txt
+++ b/doc/src/compute_temp_partial.txt
@@ -65,8 +65,8 @@ atoms that include these constraints will be computed correctly.  If
 needed, the subtracted degrees-of-freedom can be altered using the
 {extra} option of the "compute_modify"_compute_modify.html command.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostatting.
 
 :line
@@ -98,8 +98,8 @@ instructions on how to use the accelerated styles effectively.
 This compute calculates a global scalar (the temperature) and a global
 vector of length 6 (KE tensor), which can be accessed by indices 1-6.
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar value calculated by this compute is "intensive".  The
diff --git a/doc/src/compute_temp_profile.txt b/doc/src/compute_temp_profile.txt
index 64a6abd283..8f47c8f9f4 100644
--- a/doc/src/compute_temp_profile.txt
+++ b/doc/src/compute_temp_profile.txt
@@ -122,8 +122,8 @@ degrees-of-freedom adjustment described in the preceding paragraph,
 for fixes that constrain molecular motion.  It does include the
 adjustment due to the {extra} option, which is applied to each bin.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostatting.  Using this compute in conjunction with a
 thermostatting fix, as explained there, will effectively implement a
 profile-unbiased thermostat (PUT), as described in "(Evans)"_#Evans1.
@@ -145,8 +145,8 @@ indices ix,iy,iz = 2,3,4 would map to row M = (iz-1)*10*10 + (iy-1)*10
 indices are numbered from 1 to 10 in each dimension.
 
 These values can be used by any command that uses global scalar or
-vector or array values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector or array values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar value calculated by this compute is "intensive".  The
diff --git a/doc/src/compute_temp_ramp.txt b/doc/src/compute_temp_ramp.txt
index bc9283469c..1ae0cdfc3e 100644
--- a/doc/src/compute_temp_ramp.txt
+++ b/doc/src/compute_temp_ramp.txt
@@ -83,8 +83,8 @@ atoms that include these constraints will be computed correctly.  If
 needed, the subtracted degrees-of-freedom can be altered using the
 {extra} option of the "compute_modify"_compute_modify.html command.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostatting.
 
 [Output info:]
@@ -92,8 +92,8 @@ thermostatting.
 This compute calculates a global scalar (the temperature) and a global
 vector of length 6 (KE tensor), which can be accessed by indices 1-6.
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar value calculated by this compute is "intensive".  The
diff --git a/doc/src/compute_temp_region.txt b/doc/src/compute_temp_region.txt
index 3e4a80db8d..f05fa38e2c 100644
--- a/doc/src/compute_temp_region.txt
+++ b/doc/src/compute_temp_region.txt
@@ -81,8 +81,8 @@ If needed the number of subtracted degrees-of-freedom can be set
 explicitly using the {extra} option of the
 "compute_modify"_compute_modify.html command.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostatting.
 
 [Output info:]
@@ -90,8 +90,8 @@ thermostatting.
 This compute calculates a global scalar (the temperature) and a global
 vector of length 6 (KE tensor), which can be accessed by indices 1-6.
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar value calculated by this compute is "intensive".  The
diff --git a/doc/src/compute_temp_region_eff.txt b/doc/src/compute_temp_region_eff.txt
index 8baf2dd46c..45c01b047f 100644
--- a/doc/src/compute_temp_region_eff.txt
+++ b/doc/src/compute_temp_region_eff.txt
@@ -39,8 +39,8 @@ temp/eff"_compute_temp_eff.html command.
 This compute calculates a global scalar (the temperature) and a global
 vector of length 6 (KE tensor), which can be accessed by indices 1-6.
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar value calculated by this compute is "intensive".  The
diff --git a/doc/src/compute_temp_rotate.txt b/doc/src/compute_temp_rotate.txt
index 34feca7b6f..8c5679b83f 100644
--- a/doc/src/compute_temp_rotate.txt
+++ b/doc/src/compute_temp_rotate.txt
@@ -64,8 +64,8 @@ atoms that include these constraints will be computed correctly.  If
 needed, the subtracted degrees-of-freedom can be altered using the
 {extra} option of the "compute_modify"_compute_modify.html command.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostatting.
 
 [Output info:]
@@ -73,8 +73,8 @@ thermostatting.
 This compute calculates a global scalar (the temperature) and a global
 vector of length 6 (KE tensor), which can be accessed by indices 1-6.
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar value calculated by this compute is "intensive".  The
diff --git a/doc/src/compute_temp_sphere.txt b/doc/src/compute_temp_sphere.txt
index 9e9dff2cb6..4d4258182e 100644
--- a/doc/src/compute_temp_sphere.txt
+++ b/doc/src/compute_temp_sphere.txt
@@ -79,8 +79,8 @@ computed correctly.  If needed, the subtracted degrees-of-freedom can
 be altered using the {extra} option of the
 "compute_modify"_compute_modify.html command.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostatting.
 
 :line
@@ -108,8 +108,8 @@ rotational degrees of freedom.
 This compute calculates a global scalar (the temperature) and a global
 vector of length 6 (KE tensor), which can be accessed by indices 1-6.
 These values can be used by any command that uses global scalar or
-vector values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+vector values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The scalar value calculated by this compute is "intensive".  The
diff --git a/doc/src/compute_ti.txt b/doc/src/compute_ti.txt
index 733954d146..f5d26e1a03 100644
--- a/doc/src/compute_ti.txt
+++ b/doc/src/compute_ti.txt
@@ -111,9 +111,8 @@ du/dl can be found in the paper by "Eike"_#Eike.
 
 This compute calculates a global scalar, namely dUs/dlambda.  This
 value can be used by any command that uses a global scalar value from
-a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+a compute as input.  See the "Howto output"_Howto_output.html doc page
+for an overview of LAMMPS output options.
 
 The scalar value calculated by this compute is "extensive".
 
diff --git a/doc/src/compute_torque_chunk.txt b/doc/src/compute_torque_chunk.txt
index b9f832dd03..254cd0fd85 100644
--- a/doc/src/compute_torque_chunk.txt
+++ b/doc/src/compute_torque_chunk.txt
@@ -30,10 +30,9 @@ chunk/atom"_compute_chunk_atom.html command, which assigns each atom
 to a single chunk (or no chunk).  The ID for this command is specified
 as chunkID.  For example, a single chunk could be the atoms in a
 molecule or atoms in a spatial bin.  See the "compute
-chunk/atom"_compute_chunk_atom.html doc page and "Section
-6.23"_Section_howto.html#howto_23 for details of how chunks can be
-defined and examples of how they can be used to measure properties of
-a system.
+chunk/atom"_compute_chunk_atom.html and "Howto chunk"_Howto_chunk.html
+doc pages for details of how chunks can be defined and examples of how
+they can be used to measure properties of a system.
 
 This compute calculates the 3 components of the torque vector for eqch
 chunk, due to the forces on the individual atoms in the chunk around
@@ -72,7 +71,7 @@ number of chunks {Nchunk} as calculated by the specified "compute
 chunk/atom"_compute_chunk_atom.html command.  The number of columns =
 3 for the 3 xyz components of the torque for each chunk.  These values
 can be accessed by any command that uses global array values from a
-compute as input.  See "Section 6.15"_Section_howto.html#howto_15
+compute as input.  See the "Howto output"_Howto_output.html doc page
 for an overview of LAMMPS output options.
 
 The array values are "intensive".  The array values will be in
diff --git a/doc/src/compute_vacf.txt b/doc/src/compute_vacf.txt
index a0d9a3c5f7..d615f70e22 100644
--- a/doc/src/compute_vacf.txt
+++ b/doc/src/compute_vacf.txt
@@ -55,9 +55,8 @@ correctly with time=0 atom velocities from the restart file.
 
 This compute calculates a global vector of length 4, which can be
 accessed by indices 1-4 by any command that uses global vector values
-from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options.
+from a compute as input.  See the "Howto output"_Howto_output.html doc
+page for an overview of LAMMPS output options.
 
 The vector values are "intensive".  The vector values will be in
 velocity^2 "units"_units.html.
diff --git a/doc/src/compute_vcm_chunk.txt b/doc/src/compute_vcm_chunk.txt
index de02c586bf..af1a4305d8 100644
--- a/doc/src/compute_vcm_chunk.txt
+++ b/doc/src/compute_vcm_chunk.txt
@@ -30,10 +30,9 @@ chunk/atom"_compute_chunk_atom.html command, which assigns each atom
 to a single chunk (or no chunk).  The ID for this command is specified
 as chunkID.  For example, a single chunk could be the atoms in a
 molecule or atoms in a spatial bin.  See the "compute
-chunk/atom"_compute_chunk_atom.html doc page and "Section
-6.23"_Section_howto.html#howto_23 for details of how chunks can be
-defined and examples of how they can be used to measure properties of
-a system.
+chunk/atom"_compute_chunk_atom.html and "Howto chunk"_Howto_chunk.html
+doc pages for details of how chunks can be defined and examples of how
+they can be used to measure properties of a system.
 
 This compute calculates the x,y,z components of the center-of-mass
 velocity for each chunk.  This is done by summing mass*velocity for
@@ -63,8 +62,8 @@ number of chunks {Nchunk} as calculated by the specified "compute
 chunk/atom"_compute_chunk_atom.html command.  The number of columns =
 3 for the x,y,z center-of-mass velocity coordinates of each chunk.
 These values can be accessed by any command that uses global array
-values from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
+values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The array values are "intensive".  The array values will be in
diff --git a/doc/src/compute_voronoi_atom.txt b/doc/src/compute_voronoi_atom.txt
index a280b2b151..bbd68b16ea 100644
--- a/doc/src/compute_voronoi_atom.txt
+++ b/doc/src/compute_voronoi_atom.txt
@@ -122,18 +122,16 @@ to locate vacancies (the coordinates are given by the atom coordinates
 at the time step when the compute was first invoked), while column two
 data can be used to identify interstitial atoms.
 
-If the {neighbors} value is set to yes, then
-this compute creates a local array with 3 columns. There
-is one row for each face of each Voronoi cell. The
-3 columns are the atom ID of the atom that owns the cell,
-the atom ID of the atom in the neighboring cell
-(or zero if the face is external), and the area of the face.
-The array can be accessed by any command that
-uses local values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
-options. More specifically, the array can be accessed by a
-"dump local"_dump.html command to write a file containing
-all the Voronoi neighbors in a system:
+If the {neighbors} value is set to yes, then this compute creates a
+local array with 3 columns. There is one row for each face of each
+Voronoi cell. The 3 columns are the atom ID of the atom that owns the
+cell, the atom ID of the atom in the neighboring cell (or zero if the
+face is external), and the area of the face.  The array can be
+accessed by any command that uses local values from a compute as
+input.  See the "Howto output"_Howto_output.html doc page for an
+overview of LAMMPS output options. More specifically, the array can be
+accessed by a "dump local"_dump.html command to write a file
+containing all the Voronoi neighbors in a system:
 
 compute 6 all voronoi/atom neighbors yes
 dump d2 all local 1 dump.neighbors index c_6\[1\] c_6\[2\] c_6\[3\] :pre
@@ -186,8 +184,8 @@ columns. In regular dynamic tessellation mode the first column is the
 Voronoi volume, the second is the neighbor count, as described above
 (read above for the output data in case the {occupation} keyword is
 specified).  These values can be accessed by any command that uses
-per-atom values from a compute as input.  See "Section
-6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
+per-atom values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options. If the {peratom} keyword is set to "no", the per-atom array
 is still created, but it is not accessible.
 
diff --git a/doc/src/compute_xrd.txt b/doc/src/compute_xrd.txt
index 1a151d63f9..03fd0ecdc2 100644
--- a/doc/src/compute_xrd.txt
+++ b/doc/src/compute_xrd.txt
@@ -162,7 +162,7 @@ or degrees) provided with the {2Theta} values. The second column contains
 the computed diffraction intensities as described above.
 
 The array can be accessed by any command that uses global values from
-a compute as input.  See "this section"_Section_howto.html#howto_15
+a compute as input.  See the "Howto output"_Howto_output.html doc page
 for an overview of LAMMPS output options.
 
 All array values calculated by this compute are "intensive".
diff --git a/doc/src/create_box.txt b/doc/src/create_box.txt
index f4ef13654c..ed05775591 100644
--- a/doc/src/create_box.txt
+++ b/doc/src/create_box.txt
@@ -73,9 +73,9 @@ factors that exceed these limits, you can use the "box tilt"_box.html
 command, with a setting of {large}; a setting of {small} is the
 default.
 
-See "Section 6.12"_Section_howto.html#howto_12 of the doc pages
-for a geometric description of triclinic boxes, as defined by LAMMPS,
-and how to transform these parameters to and from other commonly used
+See the "Howto triclinic"_Howto_triclinic.html doc page for a
+geometric description of triclinic boxes, as defined by LAMMPS, and
+how to transform these parameters to and from other commonly used
 triclinic representations.
 
 When a prism region is used, the simulation domain should normally be
diff --git a/doc/src/dimension.txt b/doc/src/dimension.txt
index 0531e92acf..f079f17f99 100644
--- a/doc/src/dimension.txt
+++ b/doc/src/dimension.txt
@@ -26,7 +26,7 @@ prior to setting up a simulation box via the
 "create_box"_create_box.html or "read_data"_read_data.html commands.
 Restart files also store this setting.
 
-See the discussion in "Section 6"_Section_howto.html for
+See the discussion on the "Howto 2d"_Howto_2d.html doc page for
 additional instructions on how to run 2d simulations.
 
 NOTE: Some models in LAMMPS treat particles as finite-size spheres or
diff --git a/doc/src/dump.txt b/doc/src/dump.txt
index ff1bf6424d..cd8bab2e65 100644
--- a/doc/src/dump.txt
+++ b/doc/src/dump.txt
@@ -224,12 +224,12 @@ This bounding box is convenient for many visualization programs.  The
 meaning of the 6 character flags for "xx yy zz" is the same as above.
 
 Note that the first two numbers on each line are now xlo_bound instead
-of xlo, etc, since they represent a bounding box.  See "this
-section"_Section_howto.html#howto_12 of the doc pages for a geometric
-description of triclinic boxes, as defined by LAMMPS, simple formulas
-for how the 6 bounding box extents (xlo_bound,xhi_bound,etc) are
-calculated from the triclinic parameters, and how to transform those
-parameters to and from other commonly used triclinic representations.
+of xlo, etc, since they represent a bounding box.  See the "Howto
+triclinic"_Howto_triclinic.html doc page for a geometric description
+of triclinic boxes, as defined by LAMMPS, simple formulas for how the
+6 bounding box extents (xlo_bound,xhi_bound,etc) are calculated from
+the triclinic parameters, and how to transform those parameters to and
+from other commonly used triclinic representations.
 
 The "ITEM: ATOMS" line in each snapshot lists column descriptors for
 the per-atom lines that follow.  For example, the descriptors would be
@@ -530,7 +530,7 @@ so that each value is 0.0 to 1.0.  If the simulation box is triclinic
 (tilted), then all atom coords will still be between 0.0 and 1.0.
 I.e. actual unscaled (x,y,z) = xs*A + ys*B + zs*C, where (A,B,C) are
 the non-orthogonal vectors of the simulation box edges, as discussed
-in "Section 6.12"_Section_howto.html#howto_12.
+on the "Howto triclinic"_Howto_triclinic.html doc page.
 
 Use {xu}, {yu}, {zu} if you want the coordinates "unwrapped" by the
 image flags for each atom.  Unwrapped means that if the atom has
diff --git a/doc/src/dump_image.txt b/doc/src/dump_image.txt
index c1732be972..fcc9b25b62 100644
--- a/doc/src/dump_image.txt
+++ b/doc/src/dump_image.txt
@@ -356,16 +356,16 @@ is used to define body particles with internal state
 body style.  If this keyword is not used, such particles will be drawn
 as spheres, the same as if they were regular atoms.
 
-The "body"_body.html doc page describes the body styles LAMMPS
-currently supports, and provides more details as to the kind of body
-particles they represent and how they are drawn by this dump image
-command.  For all the body styles, individual atoms can be either a
-body particle or a usual point (non-body) particle.  Non-body
+The "Howto body"_Howto_body.html doc page describes the body styles
+LAMMPS currently supports, and provides more details as to the kind of
+body particles they represent and how they are drawn by this dump
+image command.  For all the body styles, individual atoms can be
+either a body particle or a usual point (non-body) particle.  Non-body
 particles will be drawn the same way they would be as a regular atom.
 The {bflag1} and {bflag2} settings are numerical values which are
 passed to the body style to affect how the drawing of a body particle
-is done.  See the "body"_body.html doc page for a description of what
-these parameters mean for each body style.
+is done.  See the "Howto body"_Howto_body.html doc page for a
+description of what these parameters mean for each body style.
 
 The only setting currently allowed for the {color} value is {type},
 which will color the body particles according to the atom type of the
diff --git a/doc/src/fix.txt b/doc/src/fix.txt
index ba2088576f..a51dc1637d 100644
--- a/doc/src/fix.txt
+++ b/doc/src/fix.txt
@@ -133,7 +133,7 @@ reduce"_compute_reduce.html command, or histogrammed by the "fix
 ave/histo"_fix_ave_histo.html command. :l
 :ule
 
-See this "howto section"_Section_howto.html#howto_15 for a summary of
+See the "Howto output"_Howto_output.html doc page for a summary of
 various LAMMPS output options, many of which involve fixes.
 
 The results of fixes that calculate global quantities can be either
diff --git a/doc/src/fix_adapt.txt b/doc/src/fix_adapt.txt
index 7a34f2ff44..0764d04e6d 100644
--- a/doc/src/fix_adapt.txt
+++ b/doc/src/fix_adapt.txt
@@ -270,10 +270,10 @@ fix 1 center adapt 10 atom diameter v_size :pre
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 For "rRESPA time integration"_run_style.html, this fix changes
 parameters on the outermost rRESPA level.
diff --git a/doc/src/fix_adapt_fep.txt b/doc/src/fix_adapt_fep.txt
index 5dd58bc39a..43c87a1601 100644
--- a/doc/src/fix_adapt_fep.txt
+++ b/doc/src/fix_adapt_fep.txt
@@ -243,10 +243,10 @@ parameters on the outermost rRESPA level.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:] none
 
diff --git a/doc/src/fix_addforce.txt b/doc/src/fix_addforce.txt
index 5bba9acb3f..c77cdb62af 100644
--- a/doc/src/fix_addforce.txt
+++ b/doc/src/fix_addforce.txt
@@ -150,11 +150,11 @@ integrator the fix is adding its forces. Default is the outermost
 level.
 
 This fix computes a global scalar and a global 3-vector of forces,
-which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The scalar is the potential
-energy discussed above.  The vector is the total force on the group of
-atoms before the forces on individual atoms are changed by the fix.
-The scalar and vector values calculated by this fix are "extensive".
+which can be accessed by various "output commands"_Howto_output.html.
+The scalar is the potential energy discussed above.  The vector is the
+total force on the group of atoms before the forces on individual
+atoms are changed by the fix.  The scalar and vector values calculated
+by this fix are "extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
diff --git a/doc/src/fix_addtorque.txt b/doc/src/fix_addtorque.txt
index 793ec0e015..589cb37cc0 100644
--- a/doc/src/fix_addtorque.txt
+++ b/doc/src/fix_addtorque.txt
@@ -70,11 +70,11 @@ this fix. This allows to set at which level of the "r-RESPA"_run_style.html
 integrator the fix is adding its torque. Default is the outermost level.
 
 This fix computes a global scalar and a global 3-vector, which can be
-accessed by various "output commands"_Section_howto.html#howto_15.
-The scalar is the potential energy discussed above.  The vector is the
-total torque on the group of atoms before the forces on individual
-atoms are changed by the fix.  The scalar and vector values calculated
-by this fix are "extensive".
+accessed by various "output commands"_Howto_output.html.  The scalar
+is the potential energy discussed above.  The vector is the total
+torque on the group of atoms before the forces on individual atoms are
+changed by the fix.  The scalar and vector values calculated by this
+fix are "extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
diff --git a/doc/src/fix_append_atoms.txt b/doc/src/fix_append_atoms.txt
index 27070c9be5..ba7b4a3e74 100644
--- a/doc/src/fix_append_atoms.txt
+++ b/doc/src/fix_append_atoms.txt
@@ -87,10 +87,10 @@ define the lattice spacings.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_atc.txt b/doc/src/fix_atc.txt
index 49014f0591..af3270ff52 100644
--- a/doc/src/fix_atc.txt
+++ b/doc/src/fix_atc.txt
@@ -102,7 +102,13 @@ Note coupling and post-processing can be combined in the same simulations using
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
-No information about this fix is written to "binary restart files"_restart.html.  The "fix_modify"_fix_modify.html options relevant to this fix are listed below.  No global scalar or vector or per-atom quantities are stored by this fix for access by various "output commands"_Section_howto.html#howto_15.  No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command.  This fix is not invoked during "energy minimization"_minimize.html.
+No information about this fix is written to "binary restart
+files"_restart.html.  The "fix_modify"_fix_modify.html options
+relevant to this fix are listed below.  No global scalar or vector or
+per-atom quantities are stored by this fix for access by various
+"output commands"_Howto_output.html.  No parameter of this fix can be
+used with the {start/stop} keywords of the "run"_run.html command.
+This fix is not invoked during "energy minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_atom_swap.txt b/doc/src/fix_atom_swap.txt
index bf56277214..0b3be3ce5e 100644
--- a/doc/src/fix_atom_swap.txt
+++ b/doc/src/fix_atom_swap.txt
@@ -150,8 +150,8 @@ None of the "fix_modify"_fix_modify.html options are relevant to this
 fix.
 
 This fix computes a global vector of length 2, which can be accessed
-by various "output commands"_Section_howto.html#howto_15.  The vector
-values are the following global cumulative quantities:
+by various "output commands"_Howto_output.html.  The vector values are
+the following global cumulative quantities:
 
 1 = swap attempts
 2 = swap successes :ul
diff --git a/doc/src/fix_ave_atom.txt b/doc/src/fix_ave_atom.txt
index 23e4ed235b..05bd0f6fa7 100644
--- a/doc/src/fix_ave_atom.txt
+++ b/doc/src/fix_ave_atom.txt
@@ -38,7 +38,7 @@ fix 1 all ave/atom 10 20 1000 c_my_stress\[*\] :pre
 Use one or more per-atom vectors as inputs every few timesteps, and
 average them atom by atom over longer timescales.  The resulting
 per-atom averages can be used by other "output
-commands"_Section_howto.html#howto_15 such as the "fix
+commands"_Howto_output.html such as the "fix
 ave/chunk"_fix_ave_chunk.html or "dump custom"_dump.html commands.
 
 The group specified with the command means only atoms within the group
@@ -155,14 +155,14 @@ No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global scalar or vector quantities are
 stored by this fix for access by various "output
-commands"_Section_howto.html#howto_15.
+commands"_Howto_output.html.
 
 This fix produces a per-atom vector or array which can be accessed by
-various "output commands"_Section_howto.html#howto_15.  A vector is
-produced if only a single quantity is averaged by this fix.  If two or
-more quantities are averaged, then an array of values is produced.
-The per-atom values can only be accessed on timesteps that are
-multiples of {Nfreq} since that is when averaging is performed.
+various "output commands"_Howto_output.html.  A vector is produced if
+only a single quantity is averaged by this fix.  If two or more
+quantities are averaged, then an array of values is produced.  The
+per-atom values can only be accessed on timesteps that are multiples
+of {Nfreq} since that is when averaging is performed.
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.  This fix is not invoked during "energy
diff --git a/doc/src/fix_ave_chunk.txt b/doc/src/fix_ave_chunk.txt
index 8e2a09e33f..e9d0ef7e72 100644
--- a/doc/src/fix_ave_chunk.txt
+++ b/doc/src/fix_ave_chunk.txt
@@ -85,17 +85,17 @@ fix 1 flow ave/chunk 100 10 1000 cc1 vx vz norm sample file vel.profile :pre
 Use one or more per-atom vectors as inputs every few timesteps, sum
 the values over the atoms in each chunk at each timestep, then average
 the per-chunk values over longer timescales.  The resulting chunk
-averages can be used by other "output
-commands"_Section_howto.html#howto_15 such as "thermo_style
-custom"_thermo_style.html, and can also be written to a file.
+averages can be used by other "output commands"_Howto_output.html such
+as "thermo_style custom"_thermo_style.html, and can also be written to
+a file.
 
 In LAMMPS, chunks are collections of atoms defined by a "compute
 chunk/atom"_compute_chunk_atom.html command, which assigns each atom
 to a single chunk (or no chunk).  The ID for this command is specified
 as chunkID.  For example, a single chunk could be the atoms in a
 molecule or atoms in a spatial bin.  See the "compute
-chunk/atom"_compute_chunk_atom.html doc page and "Section
-6.23"_Section_howto.html#howto_23 for details of how chunks can be
+chunk/atom"_compute_chunk_atom.html doc page and the "Howto
+chunk"_Howto_chunk.html doc page for details of how chunks can be
 defined and examples of how they can be used to measure properties of
 a system.
 
@@ -456,20 +456,19 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix computes a global array of values which can be accessed by
-various "output commands"_Section_howto.html#howto_15.  The values can
-only be accessed on timesteps that are multiples of {Nfreq} since that
-is when averaging is performed.  The global array has # of rows =
-the number of chunks {Nchunk} as calculated by the specified "compute
+various "output commands"_Howto_output.html.  The values can only be
+accessed on timesteps that are multiples of {Nfreq} since that is when
+averaging is performed.  The global array has # of rows = the number
+of chunks {Nchunk} as calculated by the specified "compute
 chunk/atom"_compute_chunk_atom.html command.  The # of columns =
 M+1+Nvalues, where M = 1 to 4, depending on whether the optional
-columns for OrigID and CoordN are used, as explained above.
-Following the optional columns, the next column contains the count of
-atoms in the chunk, and the remaining columns are the Nvalue
-quantities.  When the array is accessed with a row I that exceeds the
-current number of chunks, than a 0.0 is returned by the fix instead of
-an error, since the number of chunks can vary as a simulation runs
-depending on how that value is computed by the compute chunk/atom
-command.
+columns for OrigID and CoordN are used, as explained above.  Following
+the optional columns, the next column contains the count of atoms in
+the chunk, and the remaining columns are the Nvalue quantities.  When
+the array is accessed with a row I that exceeds the current number of
+chunks, than a 0.0 is returned by the fix instead of an error, since
+the number of chunks can vary as a simulation runs depending on how
+that value is computed by the compute chunk/atom command.
 
 The array values calculated by this fix are treated as "intensive",
 since they are typically already normalized by the count of atoms in
diff --git a/doc/src/fix_ave_correlate.txt b/doc/src/fix_ave_correlate.txt
index 98f352cb74..74ce3f340e 100644
--- a/doc/src/fix_ave_correlate.txt
+++ b/doc/src/fix_ave_correlate.txt
@@ -68,7 +68,7 @@ calculate time correlations between them at varying time intervals,
 and average the correlation data over longer timescales.  The
 resulting correlation values can be time integrated by
 "variables"_variable.html or used by other "output
-commands"_Section_howto.html#howto_15 such as "thermo_style
+commands"_Howto_output.html such as "thermo_style
 custom"_thermo_style.html, and can also be written to a file.  See the
 "fix ave/correlate/long"_fix_ave_correlate_long.html command for an
 alternate method for computing correlation functions efficiently over
@@ -313,16 +313,15 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix computes a global array of values which can be accessed by
-various "output commands"_Section_howto.html#howto_15.  The values can
-only be accessed on timesteps that are multiples of {Nfreq} since that
-is when averaging is performed.  The global array has # of rows =
-{Nrepeat} and # of columns = Npair+2.  The first column has the time
-delta (in timesteps) between the pairs of input values used to
-calculate the correlation, as described above.  The 2nd column has the
-number of samples contributing to the correlation average, as
-described above.  The remaining Npair columns are for I,J pairs of the
-N input values, as determined by the {type} keyword, as described
-above.
+various "output commands"_Howto_output.html.  The values can only be
+accessed on timesteps that are multiples of {Nfreq} since that is when
+averaging is performed.  The global array has # of rows = {Nrepeat}
+and # of columns = Npair+2.  The first column has the time delta (in
+timesteps) between the pairs of input values used to calculate the
+correlation, as described above.  The 2nd column has the number of
+samples contributing to the correlation average, as described above.
+The remaining Npair columns are for I,J pairs of the N input values,
+as determined by the {type} keyword, as described above.
 
 For {type} = {auto}, the Npair = N columns are ordered: C11, C22, ...,
 CNN. :ulb,l
diff --git a/doc/src/fix_ave_histo.txt b/doc/src/fix_ave_histo.txt
index 5155f42e7b..e2fd2e04e8 100644
--- a/doc/src/fix_ave_histo.txt
+++ b/doc/src/fix_ave_histo.txt
@@ -69,10 +69,9 @@ fix 1 all ave/histo/weight 1 1 1 10 100 2000 c_XRD\[1\] c_XRD\[2\] :pre
 Use one or more values as inputs every few timesteps to create a
 single histogram.  The histogram can then be averaged over longer
 timescales.  The resulting histogram can be used by other "output
-commands"_Section_howto.html#howto_15, and can also be written to a
-file.  The fix ave/histo/weight command has identical syntax to fix
-ave/histo, except that exactly two values must be specified.  See
-details below.
+commands"_Howto_output.html, and can also be written to a file.  The
+fix ave/histo/weight command has identical syntax to fix ave/histo,
+except that exactly two values must be specified.  See details below.
 
 The group specified with this command is ignored for global and local
 input values.  For per-atom input values, only atoms in the group
@@ -320,10 +319,10 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix produces a global vector and global array which can be
-accessed by various "output commands"_Section_howto.html#howto_15.
-The values can only be accessed on timesteps that are multiples of
-{Nfreq} since that is when a histogram is generated.  The global
-vector has 4 values:
+accessed by various "output commands"_Howto_output.html.  The values
+can only be accessed on timesteps that are multiples of {Nfreq} since
+that is when a histogram is generated.  The global vector has 4
+values:
 
 1 = total counts in the histogram
 2 = values that were not histogrammed (see {beyond} keyword)
diff --git a/doc/src/fix_ave_time.txt b/doc/src/fix_ave_time.txt
index b61f56cf02..e973a36360 100644
--- a/doc/src/fix_ave_time.txt
+++ b/doc/src/fix_ave_time.txt
@@ -64,7 +64,7 @@ fix 1 all ave/time 1 100 1000 f_indent f_indent\[1\] file temp.indent off 1 :pre
 
 Use one or more global values as inputs every few timesteps, and
 average them over longer timescales.  The resulting averages can be
-used by other "output commands"_Section_howto.html#howto_15 such as
+used by other "output commands"_Howto_output.html such as
 "thermo_style custom"_thermo_style.html, and can also be written to a
 file.  Note that if no time averaging is done, this command can be
 used as a convenient way to simply output one or more global values to
@@ -305,10 +305,9 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix produces a global scalar or global vector or global array
-which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The values can only be
-accessed on timesteps that are multiples of {Nfreq} since that is when
-averaging is performed.
+which can be accessed by various "output commands"_Howto_output.html.
+The values can only be accessed on timesteps that are multiples of
+{Nfreq} since that is when averaging is performed.
 
 A scalar is produced if only a single input value is averaged and
 {mode} = scalar.  A vector is produced if multiple input values are
diff --git a/doc/src/fix_aveforce.txt b/doc/src/fix_aveforce.txt
index 4944996695..3497b33ef4 100644
--- a/doc/src/fix_aveforce.txt
+++ b/doc/src/fix_aveforce.txt
@@ -95,10 +95,10 @@ fix. This allows to set at which level of the "r-RESPA"_run_style.html
 integrator the fix is adding its forces. Default is the outermost level.
 
 This fix computes a global 3-vector of forces, which can be accessed
-by various "output commands"_Section_howto.html#howto_15.  This is the
-total force on the group of atoms before the forces on individual
-atoms are changed by the fix.  The vector values calculated by this
-fix are "extensive".
+by various "output commands"_Howto_output.html.  This is the total
+force on the group of atoms before the forces on individual atoms are
+changed by the fix.  The vector values calculated by this fix are
+"extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
diff --git a/doc/src/fix_balance.txt b/doc/src/fix_balance.txt
index f148e6f996..b98fd85c3b 100644
--- a/doc/src/fix_balance.txt
+++ b/doc/src/fix_balance.txt
@@ -357,8 +357,8 @@ number of particles (or total weight) on any processor to the average
 number of particles (or total weight) per processor.
 
 These quantities can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The scalar and vector values
-calculated by this fix are "intensive".
+commands"_Howto_output.html.  The scalar and vector values calculated
+by this fix are "intensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.  This fix is not invoked during "energy
diff --git a/doc/src/fix_bond_break.txt b/doc/src/fix_bond_break.txt
index 83364b9efb..b43053c461 100644
--- a/doc/src/fix_bond_break.txt
+++ b/doc/src/fix_bond_break.txt
@@ -116,8 +116,8 @@ are relevant to this fix.
 
 This fix computes two statistics which it stores in a global vector of
 length 2, which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The vector values calculated
-by this fix are "intensive".
+commands"_Howto_output.html.  The vector values calculated by this fix
+are "intensive".
 
 These are the 2 quantities:
 
diff --git a/doc/src/fix_bond_create.txt b/doc/src/fix_bond_create.txt
index c0045ac0f0..a55ba1ff6e 100644
--- a/doc/src/fix_bond_create.txt
+++ b/doc/src/fix_bond_create.txt
@@ -211,8 +211,8 @@ are relevant to this fix.
 
 This fix computes two statistics which it stores in a global vector of
 length 2, which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The vector values calculated
-by this fix are "intensive".
+commands"_Howto_output.html.  The vector values calculated by this fix
+are "intensive".
 
 These are the 2 quantities:
 
diff --git a/doc/src/fix_bond_react.txt b/doc/src/fix_bond_react.txt
index f85ef9bc1a..006f59100f 100644
--- a/doc/src/fix_bond_react.txt
+++ b/doc/src/fix_bond_react.txt
@@ -298,9 +298,8 @@ relevant to this fix.
 
 This fix computes one statistic for each {react} argument that it
 stores in a global vector, of length 'number of react arguments', that
-can be accessed by various "output
-commands"_Section_howto.html#howto_15. The vector values calculated by
-this fix are "intensive".
+can be accessed by various "output commands"_Howto_output.html. The
+vector values calculated by this fix are "intensive".
 
 These is 1 quantity for each react argument:
 
diff --git a/doc/src/fix_bond_swap.txt b/doc/src/fix_bond_swap.txt
index ca7069e247..8d5df7e4e0 100644
--- a/doc/src/fix_bond_swap.txt
+++ b/doc/src/fix_bond_swap.txt
@@ -150,13 +150,13 @@ the Boltzmann criterion.
 
 This fix computes two statistical quantities as a global 2-vector of
 output, which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The first component of the
-vector is the cumulative number of swaps performed by all processors.
-The second component of the vector is the cumulative number of swaps
-attempted (whether accepted or rejected).  Note that a swap "attempt"
-only occurs when swap partners meeting the criteria described above
-are found on a particular timestep.  The vector values calculated by
-this fix are "intensive".
+commands"_Howto_output.html.  The first component of the vector is the
+cumulative number of swaps performed by all processors.  The second
+component of the vector is the cumulative number of swaps attempted
+(whether accepted or rejected).  Note that a swap "attempt" only
+occurs when swap partners meeting the criteria described above are
+found on a particular timestep.  The vector values calculated by this
+fix are "intensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.  This fix is not invoked during "energy
diff --git a/doc/src/fix_box_relax.txt b/doc/src/fix_box_relax.txt
index e3d75ee858..a625f0c5b8 100644
--- a/doc/src/fix_box_relax.txt
+++ b/doc/src/fix_box_relax.txt
@@ -315,17 +315,15 @@ specified by the {press} keyword will be unaffected by the {temp}
 setting.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15. The scalar is the
-pressure-volume energy, plus the strain energy, if it exists,
-as described above.
-The energy values reported at the
-end of a minimization run under "Minimization stats" include this
-energy, and so differ from what LAMMPS normally reports as potential
-energy. This fix does not support the "fix_modify"_fix_modify.html
-{energy} option, because that would result in double-counting of the
-fix energy in the minimization energy. Instead, the fix energy can be
-explicitly added to the potential energy using one of these two
-variants:
+"output commands"_Howto_output.html. The scalar is the pressure-volume
+energy, plus the strain energy, if it exists, as described above.  The
+energy values reported at the end of a minimization run under
+"Minimization stats" include this energy, and so differ from what
+LAMMPS normally reports as potential energy. This fix does not support
+the "fix_modify"_fix_modify.html {energy} option, because that would
+result in double-counting of the fix energy in the minimization
+energy. Instead, the fix energy can be explicitly added to the
+potential energy using one of these two variants:
 
 variable emin equal pe+f_1  :pre
 
diff --git a/doc/src/fix_cmap.txt b/doc/src/fix_cmap.txt
index f8de2b4efe..d352f0e652 100644
--- a/doc/src/fix_cmap.txt
+++ b/doc/src/fix_cmap.txt
@@ -103,9 +103,9 @@ the system's virial as part of "thermodynamic output"_thermo_style.html.
 The default is {virial yes}
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-potential energy discussed above.  The scalar value calculated by this
-fix is "extensive".
+"output commands"_Howto_output.html.  The scalar is the potential
+energy discussed above.  The scalar value calculated by this fix is
+"extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
diff --git a/doc/src/fix_colvars.txt b/doc/src/fix_colvars.txt
index e48dedacd9..2d3000e6ea 100644
--- a/doc/src/fix_colvars.txt
+++ b/doc/src/fix_colvars.txt
@@ -99,9 +99,9 @@ to the system's potential energy as part of "thermodynamic
 output"_thermo_style.html.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-cumulative energy change due to this fix.  The scalar value
-calculated by this fix is "extensive".
+"output commands"_Howto_output.html.  The scalar is the cumulative
+energy change due to this fix.  The scalar value calculated by this
+fix is "extensive".
 
 [Restrictions:]
 
diff --git a/doc/src/fix_controller.txt b/doc/src/fix_controller.txt
index b8d2cb43be..710642c0ea 100644
--- a/doc/src/fix_controller.txt
+++ b/doc/src/fix_controller.txt
@@ -180,9 +180,9 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix produces a global vector with 3 values which can be accessed
-by various "output commands"_Section_howto.html#howto_15.  The values
-can be accessed on any timestep, though they are only updated on
-timesteps that are a multiple of {Nevery}.
+by various "output commands"_Howto_output.html.  The values can be
+accessed on any timestep, though they are only updated on timesteps
+that are a multiple of {Nevery}.
 
 The three values are the most recent updates made to the control
 variable by each of the 3 terms in the PID equation above.  The first
diff --git a/doc/src/fix_deform.txt b/doc/src/fix_deform.txt
index 681986561a..09261e2423 100644
--- a/doc/src/fix_deform.txt
+++ b/doc/src/fix_deform.txt
@@ -572,10 +572,9 @@ instructions on how to use the accelerated styles effectively.
 This fix will restore the initial box settings from "binary restart
 files"_restart.html, which allows the fix to be properly continue
 deformation, when using the start/stop options of the "run"_run.html
-command.  None of the "fix_modify"_fix_modify.html options
-are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.
+command.  None of the "fix_modify"_fix_modify.html options are
+relevant to this fix.  No global or per-atom quantities are stored by
+this fix for access by various "output commands"_Howto_output.html.
 
 This fix can perform deformation over multiple runs, using the {start}
 and {stop} keywords of the "run"_run.html command.  See the
diff --git a/doc/src/fix_deposit.txt b/doc/src/fix_deposit.txt
index 477c14ea89..285e720555 100644
--- a/doc/src/fix_deposit.txt
+++ b/doc/src/fix_deposit.txt
@@ -116,8 +116,8 @@ side = {in}.
 
 NOTE: LAMMPS checks that the specified region is wholly inside the
 simulation box.  It can do this correctly for orthonormal simulation
-boxes.  However for "triclinic boxes"_Section_howto.html#howto_12, it
-only tests against the larger orthonormal box that bounds the tilted
+boxes.  However for "triclinic boxes"_Howto_triclinic.html, it only
+tests against the larger orthonormal box that bounds the tilted
 simulation box.  If the specified region includes volume outside the
 tilted box, then an insertion will likely fail, leading to a "lost
 atoms" error.  Thus for triclinic boxes you should insure the
@@ -263,9 +263,9 @@ operation of the fix continues in an uninterrupted fashion.
 
 None of the "fix_modify"_fix_modify.html options are relevant to this
 fix.  No global or per-atom quantities are stored by this fix for
-access by various "output commands"_Section_howto.html#howto_15.  No
-parameter of this fix can be used with the {start/stop} keywords of
-the "run"_run.html command.  This fix is not invoked during "energy
+access by various "output commands"_Howto_output.html.  No parameter
+of this fix can be used with the {start/stop} keywords of the
+"run"_run.html command.  This fix is not invoked during "energy
 minimization"_minimize.html.
 
 [Restrictions:]
diff --git a/doc/src/fix_dpd_source.txt b/doc/src/fix_dpd_source.txt
index b6decc657c..bbfc99e8c8 100644
--- a/doc/src/fix_dpd_source.txt
+++ b/doc/src/fix_dpd_source.txt
@@ -63,10 +63,10 @@ cuboid domain to apply the source flux to.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_drag.txt b/doc/src/fix_drag.txt
index 235d3d38b5..a67ec6aaf2 100644
--- a/doc/src/fix_drag.txt
+++ b/doc/src/fix_drag.txt
@@ -47,9 +47,9 @@ fix. This allows to set at which level of the "r-RESPA"_run_style.html
 integrator the fix is adding its forces. Default is the outermost level.
 
 This fix computes a global 3-vector of forces, which can be accessed
-by various "output commands"_Section_howto.html#howto_15.  This is the
-total force on the group of atoms by the drag force.  The vector
-values calculated by this fix are "extensive".
+by various "output commands"_Howto_output.html.  This is the total
+force on the group of atoms by the drag force.  The vector values
+calculated by this fix are "extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.  This fix is not invoked during "energy
diff --git a/doc/src/fix_drude.txt b/doc/src/fix_drude.txt
index faa354b314..4a3d30a9ca 100644
--- a/doc/src/fix_drude.txt
+++ b/doc/src/fix_drude.txt
@@ -25,10 +25,10 @@ fix 1 all drude C C N C N D D D :pre
 [Description:]
 
 Assign each atom type in the system to be one of 3 kinds of atoms
-within the Drude polarization model. This fix is designed to be
-used with the "thermalized Drude oscillator
-model"_tutorial_drude.html.  Polarizable models in LAMMPS
-are described in "this Section"_Section_howto.html#howto_25.
+within the Drude polarization model. This fix is designed to be used
+with the "thermalized Drude oscillator model"_Howto_drude.html.
+Polarizable models in LAMMPS are described on the "Howto
+polarizable"_Howto_polarizable.html doc page.
 
 The three possible types can be designated with an integer (0,1,2)
 or capital letter (N,C,D):
diff --git a/doc/src/fix_drude_transform.txt b/doc/src/fix_drude_transform.txt
index 2e094d528c..54cdfa956e 100644
--- a/doc/src/fix_drude_transform.txt
+++ b/doc/src/fix_drude_transform.txt
@@ -34,8 +34,8 @@ Transform the coordinates of Drude oscillators from real to reduced
 and back for thermalizing the Drude oscillators as described in
 "(Lamoureux)"_#Lamoureux1 using a Nose-Hoover thermostat.  This fix is
 designed to be used with the "thermalized Drude oscillator
-model"_tutorial_drude.html.  Polarizable models in LAMMPS are
-described in "this Section"_Section_howto.html#howto_25.
+model"_Howto_drude.html.  Polarizable models in LAMMPS are described
+on the "Howto polarizable"_Howto_polarizable.html doc page.
 
 Drude oscillators are a pair of atoms representing a single
 polarizable atom.  Ideally, the mass of Drude particles would vanish
diff --git a/doc/src/fix_dt_reset.txt b/doc/src/fix_dt_reset.txt
index 7605395ca0..428128feda 100644
--- a/doc/src/fix_dt_reset.txt
+++ b/doc/src/fix_dt_reset.txt
@@ -82,8 +82,8 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar stores
-the last timestep on which the timestep was reset to a new value.
+"output commands"_Howto_output.html.  The scalar stores the last
+timestep on which the timestep was reset to a new value.
 
 The scalar value calculated by this fix is "intensive".
 
diff --git a/doc/src/fix_efield.txt b/doc/src/fix_efield.txt
index 5d2b86fe4b..a248a03b07 100644
--- a/doc/src/fix_efield.txt
+++ b/doc/src/fix_efield.txt
@@ -134,11 +134,10 @@ fix. This allows to set at which level of the "r-RESPA"_run_style.html
 integrator the fix adding its forces. Default is the outermost level.
 
 This fix computes a global scalar and a global 3-vector of forces,
-which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The scalar is the potential
-energy discussed above.  The vector is the total force added to the
-group of atoms.  The scalar and vector values calculated by this fix
-are "extensive".
+which can be accessed by various "output commands"_Howto_output.html.
+The scalar is the potential energy discussed above.  The vector is the
+total force added to the group of atoms.  The scalar and vector values
+calculated by this fix are "extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
diff --git a/doc/src/fix_enforce2d.txt b/doc/src/fix_enforce2d.txt
index 67b351e4b8..b0d8c691b5 100644
--- a/doc/src/fix_enforce2d.txt
+++ b/doc/src/fix_enforce2d.txt
@@ -55,9 +55,9 @@ instructions on how to use the accelerated styles effectively.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.
 
 The forces due to this fix are imposed during an energy minimization,
 invoked by the "minimize"_minimize.html command.
diff --git a/doc/src/fix_evaporate.txt b/doc/src/fix_evaporate.txt
index ed6c6d0377..be8b351986 100644
--- a/doc/src/fix_evaporate.txt
+++ b/doc/src/fix_evaporate.txt
@@ -73,9 +73,9 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix computes a global scalar, which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-cumulative number of deleted atoms.  The scalar value calculated by
-this fix is "intensive".
+"output commands"_Howto_output.html.  The scalar is the cumulative
+number of deleted atoms.  The scalar value calculated by this fix is
+"intensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.  This fix is not invoked during "energy
diff --git a/doc/src/fix_external.txt b/doc/src/fix_external.txt
index 30e34b4858..bf80b1b231 100644
--- a/doc/src/fix_external.txt
+++ b/doc/src/fix_external.txt
@@ -31,10 +31,10 @@ fix 1 all external pf/array 10 :pre
 [Description:]
 
 This fix allows external programs that are running LAMMPS through its
-"library interface"_Section_howto.html#howto_19 to modify certain
-LAMMPS properties on specific timesteps, similar to the way other
-fixes do.  The external driver can be a "C/C++ or Fortran
-program"_Section_howto.html#howto_19 or a "Python script"_Python.html.
+"library interface"_Howto_library.html to modify certain LAMMPS
+properties on specific timesteps, similar to the way other fixes do.
+The external driver can be a "C/C++ or Fortran
+program"_Howto_library.html or a "Python script"_Python.html.
 
 :line
 
@@ -136,9 +136,8 @@ external program to the system's virial as part of "thermodynamic
 output"_thermo_style.html. The default is {virial yes}
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-potential energy discussed above.  The scalar stored by this fix
-is "extensive".
+"output commands"_Howto_output.html.  The scalar is the potential
+energy discussed above.  The scalar stored by this fix is "extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
diff --git a/doc/src/fix_filter_corotate.txt b/doc/src/fix_filter_corotate.txt
index b782d285c7..a75a3b7b44 100644
--- a/doc/src/fix_filter_corotate.txt
+++ b/doc/src/fix_filter_corotate.txt
@@ -63,10 +63,9 @@ No information about these fixes is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to these fixes.  No global or per-atom quantities are
 stored by these fixes for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of these fixes
-can be used with the {start/stop} keywords of the "run"_run.html
-command.  These fixes are not invoked during "energy
-minimization"_minimize.html.
+commands"_Howto_output.html.  No parameter of these fixes can be used
+with the {start/stop} keywords of the "run"_run.html command.  These
+fixes are not invoked during "energy minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_flow_gauss.txt b/doc/src/fix_flow_gauss.txt
index efa58ea65f..0980076062 100644
--- a/doc/src/fix_flow_gauss.txt
+++ b/doc/src/fix_flow_gauss.txt
@@ -128,11 +128,11 @@ integrator the fix computes and adds the external acceleration. Default is the
 outermost level.
 
 This fix computes a global scalar and a global 3-vector of forces,
-which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The scalar is the negative of the
-work done on the system, see above discussion.  The vector is the total force
-that this fix applied to the group of atoms on the current timestep.
-The scalar and vector values calculated by this fix are "extensive".
+which can be accessed by various "output commands"_Howto_output.html.
+The scalar is the negative of the work done on the system, see above
+discussion.  The vector is the total force that this fix applied to
+the group of atoms on the current timestep.  The scalar and vector
+values calculated by this fix are "extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
diff --git a/doc/src/fix_freeze.txt b/doc/src/fix_freeze.txt
index 9619f4120b..43714df802 100644
--- a/doc/src/fix_freeze.txt
+++ b/doc/src/fix_freeze.txt
@@ -60,10 +60,10 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix computes a global 3-vector of forces, which can be accessed
-by various "output commands"_Section_howto.html#howto_15.  This is the
-total force on the group of atoms before the forces on individual
-atoms are changed by the fix.  The vector values calculated by this
-fix are "extensive".
+by various "output commands"_Howto_output.html.  This is the total
+force on the group of atoms before the forces on individual atoms are
+changed by the fix.  The vector values calculated by this fix are
+"extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.  This fix is not invoked during "energy
diff --git a/doc/src/fix_gcmc.txt b/doc/src/fix_gcmc.txt
index 191bc32b14..9630d856be 100644
--- a/doc/src/fix_gcmc.txt
+++ b/doc/src/fix_gcmc.txt
@@ -382,8 +382,8 @@ None of the "fix_modify"_fix_modify.html options are relevant to this
 fix.
 
 This fix computes a global vector of length 8, which can be accessed
-by various "output commands"_Section_howto.html#howto_15.  The vector
-values are the following global cumulative quantities:
+by various "output commands"_Howto_output.html.  The vector values are
+the following global cumulative quantities:
 
 1 = translation attempts
 2 = translation successes
diff --git a/doc/src/fix_gld.txt b/doc/src/fix_gld.txt
index 1425f62e13..06ac5d68cb 100644
--- a/doc/src/fix_gld.txt
+++ b/doc/src/fix_gld.txt
@@ -126,7 +126,7 @@ sense, a restarted simulation should produce the same behavior.
 
 None of the "fix_modify"_fix_modify.html options are relevant to this
 fix.  No global or per-atom quantities are stored by this fix for
-access by various "output commands"_Section_howto.html#howto_15.
+access by various "output commands"_Howto_output.html.
 
 This fix can ramp its target temperature over multiple runs, using the
 {start} and {stop} keywords of the "run"_run.html command.  See the
diff --git a/doc/src/fix_gle.txt b/doc/src/fix_gle.txt
index 6568060f0c..d91dd8dee9 100644
--- a/doc/src/fix_gle.txt
+++ b/doc/src/fix_gle.txt
@@ -116,9 +116,9 @@ system's potential energy as part of "thermodynamic
 output"_thermo_style.html.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-cumulative energy change due to this fix.  The scalar value
-calculated by this fix is "extensive".
+"output commands"_Howto_output.html.  The scalar is the cumulative
+energy change due to this fix.  The scalar value calculated by this
+fix is "extensive".
 
 [Restrictions:]
 
diff --git a/doc/src/fix_gravity.txt b/doc/src/fix_gravity.txt
index f39955d4f8..786f145608 100644
--- a/doc/src/fix_gravity.txt
+++ b/doc/src/fix_gravity.txt
@@ -124,11 +124,11 @@ fix. This allows to set at which level of the "r-RESPA"_run_style.html
 integrator the fix is adding its forces. Default is the outermost level.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  This scalar is the
-gravitational potential energy of the particles in the defined field,
-namely mass * (g dot x) for each particles, where x and mass are the
-particles position and mass, and g is the gravitational field.  The
-scalar value calculated by this fix is "extensive".
+"output commands"_Howto_output.html.  This scalar is the gravitational
+potential energy of the particles in the defined field, namely mass *
+(g dot x) for each particles, where x and mass are the particles
+position and mass, and g is the gravitational field.  The scalar value
+calculated by this fix is "extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.  This fix is not invoked during "energy
diff --git a/doc/src/fix_halt.txt b/doc/src/fix_halt.txt
index 08043eb5fb..55f313e40f 100644
--- a/doc/src/fix_halt.txt
+++ b/doc/src/fix_halt.txt
@@ -133,10 +133,10 @@ files.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:] none
 
diff --git a/doc/src/fix_heat.txt b/doc/src/fix_heat.txt
index 23db87dac2..a0e9b945fc 100644
--- a/doc/src/fix_heat.txt
+++ b/doc/src/fix_heat.txt
@@ -108,12 +108,11 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  This scalar is the
-most recent value by which velocites were scaled.  The scalar value
-calculated by this fix is "intensive".  If {eflux} is specified as
-an atom-style variable, this fix computes the average value by which
-the velocities were scaled for all of the atoms that had their
-velocities scaled.
+"output commands"_Howto_output.html.  This scalar is the most recent
+value by which velocites were scaled.  The scalar value calculated by
+this fix is "intensive".  If {eflux} is specified as an atom-style
+variable, this fix computes the average value by which the velocities
+were scaled for all of the atoms that had their velocities scaled.
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.  This fix is not invoked during "energy
diff --git a/doc/src/fix_imd.txt b/doc/src/fix_imd.txt
index b275612819..1a1f11c2cf 100644
--- a/doc/src/fix_imd.txt
+++ b/doc/src/fix_imd.txt
@@ -136,9 +136,9 @@ No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global scalar or vector or per-atom
 quantities are stored by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+commands"_Howto_output.html.  No parameter of this fix can be used
+with the {start/stop} keywords of the "run"_run.html command.  This
+fix is not invoked during "energy minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_indent.txt b/doc/src/fix_indent.txt
index c9a791ae4e..1f67c0b242 100644
--- a/doc/src/fix_indent.txt
+++ b/doc/src/fix_indent.txt
@@ -180,8 +180,8 @@ integrator the fix is adding its forces. Default is the outermost level.
 
 This fix computes a global scalar energy and a global 3-vector of
 forces (on the indenter), which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The scalar and vector values
-calculated by this fix are "extensive".
+commands"_Howto_output.html.  The scalar and vector values calculated
+by this fix are "extensive".
 
 The forces due to this fix are imposed during an energy minimization,
 invoked by the "minimize"_minimize.html command.  Note that if you
diff --git a/doc/src/fix_langevin.txt b/doc/src/fix_langevin.txt
index 6ab236e572..769b188604 100644
--- a/doc/src/fix_langevin.txt
+++ b/doc/src/fix_langevin.txt
@@ -101,7 +101,7 @@ should not normally be used on atoms that also have their temperature
 controlled by another fix - e.g. by "fix nvt"_fix_nh.html or "fix
 temp/rescale"_fix_temp_rescale.html commands.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
+See the "Howto thermostat"_Howto_thermostat.html doc page for
 a discussion of different ways to compute temperature and perform
 thermostatting.
 
@@ -305,10 +305,10 @@ output"_thermo_style.html.  Note that use of this option requires
 setting the {tally} keyword to {yes}.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-cumulative energy change due to this fix.  The scalar value
-calculated by this fix is "extensive".  Note that calculation of this
-quantity requires setting the {tally} keyword to {yes}.
+"output commands"_Howto_output.html.  The scalar is the cumulative
+energy change due to this fix.  The scalar value calculated by this
+fix is "extensive".  Note that calculation of this quantity requires
+setting the {tally} keyword to {yes}.
 
 This fix can ramp its target temperature over multiple runs, using the
 {start} and {stop} keywords of the "run"_run.html command.  See the
diff --git a/doc/src/fix_langevin_drude.txt b/doc/src/fix_langevin_drude.txt
index c85ff24c96..bda8ec7881 100644
--- a/doc/src/fix_langevin_drude.txt
+++ b/doc/src/fix_langevin_drude.txt
@@ -44,8 +44,9 @@ fix 1 all langevin/drude 298.15 100.0 19377 5.0 10.0 83451 zero yes :pre
 Apply two Langevin thermostats as described in "(Jiang)"_#Jiang1 for
 thermalizing the reduced degrees of freedom of Drude oscillators.
 This link describes how to use the "thermalized Drude oscillator
-model"_tutorial_drude.html in LAMMPS and polarizable models in LAMMPS
-are discussed in "this Section"_Section_howto.html#howto_25.
+model"_Howto_drude.html in LAMMPS and polarizable models in LAMMPS
+are discussed on the "Howto polarizable"_Howto_polarizable.html doc
+page.
 
 Drude oscillators are a way to simulate polarizables atoms, by
 splitting them into a core and a Drude particle bound by a harmonic
@@ -99,8 +100,8 @@ Likewise, this fix should not normally be used on atoms that also have
 their temperature controlled by another fix - e.g. by "fix
 nvt"_fix_nh.html or "fix temp/rescale"_fix_temp_rescale.html commands.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostating.
 
 :line
diff --git a/doc/src/fix_langevin_eff.txt b/doc/src/fix_langevin_eff.txt
index 4a50bfae54..ef22e99bcf 100644
--- a/doc/src/fix_langevin_eff.txt
+++ b/doc/src/fix_langevin_eff.txt
@@ -79,10 +79,10 @@ output"_thermo_style.html.  Note that use of this option requires
 setting the {tally} keyword to {yes}.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-cumulative energy change due to this fix.  The scalar value
-calculated by this fix is "extensive".  Note that calculation of this
-quantity requires setting the {tally} keyword to {yes}.
+"output commands"_Howto_output.html.  The scalar is the cumulative
+energy change due to this fix.  The scalar value calculated by this
+fix is "extensive".  Note that calculation of this quantity requires
+setting the {tally} keyword to {yes}.
 
 This fix can ramp its target temperature over multiple runs, using the
 {start} and {stop} keywords of the "run"_run.html command.  See the
diff --git a/doc/src/fix_latte.txt b/doc/src/fix_latte.txt
index 4edd610546..4f7e99dea8 100644
--- a/doc/src/fix_latte.txt
+++ b/doc/src/fix_latte.txt
@@ -118,9 +118,9 @@ of "thermodynamic output"_thermo_style.html.  The default is {virial
 yes}
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-potential energy discussed above.  The scalar value calculated by this
-fix is "extensive".
+"output commands"_Howto_output.html.  The scalar is the potential
+energy discussed above.  The scalar value calculated by this fix is
+"extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
diff --git a/doc/src/fix_lb_fluid.txt b/doc/src/fix_lb_fluid.txt
index fc6203b0f2..925ca991c4 100644
--- a/doc/src/fix_lb_fluid.txt
+++ b/doc/src/fix_lb_fluid.txt
@@ -299,9 +299,9 @@ is written to the main LAMMPS "binary restart files"_restart.html.
 
 None of the "fix_modify"_fix_modify.html options are relevant to this
 fix.  No global or per-atom quantities are stored by this fix for
-access by various "output commands"_Section_howto.html#howto_15.  No
-parameter of this fix can be used with the {start/stop} keywords of
-the "run"_run.html command.  This fix is not invoked during "energy
+access by various "output commands"_Howto_output.html.  No parameter
+of this fix can be used with the {start/stop} keywords of the
+"run"_run.html command.  This fix is not invoked during "energy
 minimization"_minimize.html.
 
 [Restrictions:]
diff --git a/doc/src/fix_lb_momentum.txt b/doc/src/fix_lb_momentum.txt
index 97965e870d..78a1f497eb 100644
--- a/doc/src/fix_lb_momentum.txt
+++ b/doc/src/fix_lb_momentum.txt
@@ -49,10 +49,10 @@ dimension.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_lb_pc.txt b/doc/src/fix_lb_pc.txt
index d2b6aafaab..f93d02f677 100644
--- a/doc/src/fix_lb_pc.txt
+++ b/doc/src/fix_lb_pc.txt
@@ -34,10 +34,10 @@ algorithm if the force coupling constant has been set by default.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_lb_rigid_pc_sphere.txt b/doc/src/fix_lb_rigid_pc_sphere.txt
index 468ebe1ff5..50e91df849 100644
--- a/doc/src/fix_lb_rigid_pc_sphere.txt
+++ b/doc/src/fix_lb_rigid_pc_sphere.txt
@@ -80,12 +80,12 @@ assumes the constituent atoms are point particles); see
 No information about the {rigid} and {rigid/nve} fixes are written to
 "binary restart files"_restart.html.
 
-Similar to the "fix rigid"_fix_rigid.html command: The rigid
-fix computes a global scalar which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The scalar value calculated by
-these fixes is "intensive".  The scalar is the current temperature of
-the collection of rigid bodies.  This is averaged over all rigid
-bodies and their translational and rotational degrees of freedom.  The
+Similar to the "fix rigid"_fix_rigid.html command: The rigid fix
+computes a global scalar which can be accessed by various "output
+commands"_Howto_output.html.  The scalar value calculated by these
+fixes is "intensive".  The scalar is the current temperature of the
+collection of rigid bodies.  This is averaged over all rigid bodies
+and their translational and rotational degrees of freedom.  The
 translational energy of a rigid body is 1/2 m v^2, where m = total
 mass of the body and v = the velocity of its center of mass.  The
 rotational energy of a rigid body is 1/2 I w^2, where I = the moment
@@ -94,17 +94,17 @@ of freedom constrained by the {force} and {torque} keywords are
 removed from this calculation.
 
 All of these fixes compute a global array of values which can be
-accessed by various "output commands"_Section_howto.html#howto_15.
-The number of rows in the array is equal to the number of rigid
-bodies.  The number of columns is 15.  Thus for each rigid body, 15
-values are stored: the xyz coords of the center of mass (COM), the xyz
-components of the COM velocity, the xyz components of the force acting
-on the COM, the xyz components of the torque acting on the COM, and
-the xyz image flags of the COM, which have the same meaning as image
-flags for atom positions (see the "dump" command).  The force and
-torque values in the array are not affected by the {force} and
-{torque} keywords in the fix rigid command; they reflect values before
-any changes are made by those keywords.
+accessed by various "output commands"_Howto_output.html.  The number
+of rows in the array is equal to the number of rigid bodies.  The
+number of columns is 15.  Thus for each rigid body, 15 values are
+stored: the xyz coords of the center of mass (COM), the xyz components
+of the COM velocity, the xyz components of the force acting on the
+COM, the xyz components of the torque acting on the COM, and the xyz
+image flags of the COM, which have the same meaning as image flags for
+atom positions (see the "dump" command).  The force and torque values
+in the array are not affected by the {force} and {torque} keywords in
+the fix rigid command; they reflect values before any changes are made
+by those keywords.
 
 The ordering of the rigid bodies (by row in the array) is as follows.
 For the {single} keyword there is just one rigid body.  For the
diff --git a/doc/src/fix_lb_viscous.txt b/doc/src/fix_lb_viscous.txt
index fcc69d2b43..27f089496e 100644
--- a/doc/src/fix_lb_viscous.txt
+++ b/doc/src/fix_lb_viscous.txt
@@ -57,9 +57,9 @@ As described in the "fix viscous"_fix_viscous.html documentation:
 "No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.
 
 The forces due to this fix are imposed during an energy minimization,
 invoked by the "minimize"_minimize.html command.  This fix should only
diff --git a/doc/src/fix_lineforce.txt b/doc/src/fix_lineforce.txt
index 65672fc5a5..ad651862f6 100644
--- a/doc/src/fix_lineforce.txt
+++ b/doc/src/fix_lineforce.txt
@@ -35,9 +35,9 @@ it should continue to move along the line thereafter.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.
 
 The forces due to this fix are imposed during an energy minimization,
 invoked by the "minimize"_minimize.html command.
diff --git a/doc/src/fix_manifoldforce.txt b/doc/src/fix_manifoldforce.txt
index 5fc25167a7..fe8a04051b 100644
--- a/doc/src/fix_manifoldforce.txt
+++ b/doc/src/fix_manifoldforce.txt
@@ -36,10 +36,10 @@ I have found that only {hftn} and {quickmin} with a very small time step perform
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is invoked during "energy
+minimization"_minimize.html.
 
 :line
 
diff --git a/doc/src/fix_meso.txt b/doc/src/fix_meso.txt
index 85f5838dd2..95f58bedaa 100644
--- a/doc/src/fix_meso.txt
+++ b/doc/src/fix_meso.txt
@@ -34,10 +34,10 @@ LAMMPS.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_meso_stationary.txt b/doc/src/fix_meso_stationary.txt
index 5b83573bc8..3b197c079f 100644
--- a/doc/src/fix_meso_stationary.txt
+++ b/doc/src/fix_meso_stationary.txt
@@ -35,10 +35,10 @@ LAMMPS.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_momentum.txt b/doc/src/fix_momentum.txt
index aa5199ac14..28fd2addf2 100644
--- a/doc/src/fix_momentum.txt
+++ b/doc/src/fix_momentum.txt
@@ -83,10 +83,10 @@ instructions on how to use the accelerated styles effectively.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:] none
 
diff --git a/doc/src/fix_move.txt b/doc/src/fix_move.txt
index 7cb40ad132..9a1d25b623 100644
--- a/doc/src/fix_move.txt
+++ b/doc/src/fix_move.txt
@@ -203,10 +203,9 @@ None of the "fix_modify"_fix_modify.html options are relevant to this
 fix.
 
 This fix produces a per-atom array which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The number of columns
-for each atom is 3, and the columns store the original unwrapped x,y,z
-coords of each atom.  The per-atom values can be accessed on any
-timestep.
+"output commands"_Howto_output.html.  The number of columns for each
+atom is 3, and the columns store the original unwrapped x,y,z coords
+of each atom.  The per-atom values can be accessed on any timestep.
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.  This fix is not invoked during "energy
diff --git a/doc/src/fix_msst.txt b/doc/src/fix_msst.txt
index 310692669a..d79b549580 100644
--- a/doc/src/fix_msst.txt
+++ b/doc/src/fix_msst.txt
@@ -156,8 +156,8 @@ thermo_style     custom step temp ke pe lz pzz etotal v_dhug v_dray v_lgr_vel v_
 
 These fixes compute a global scalar and a global vector of 4
 quantities, which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The scalar values calculated
-by this fix are "extensive"; the vector values are "intensive".
+commands"_Howto_output.html.  The scalar values calculated by this fix
+are "extensive"; the vector values are "intensive".
 
 [Restrictions:]
 
diff --git a/doc/src/fix_mvv_dpd.txt b/doc/src/fix_mvv_dpd.txt
index fb3c6fe888..7a07642c54 100644
--- a/doc/src/fix_mvv_dpd.txt
+++ b/doc/src/fix_mvv_dpd.txt
@@ -69,10 +69,10 @@ addition to position and velocity, and must be used with the
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_neb.txt b/doc/src/fix_neb.txt
index 5d18c39d99..5cfefbf819 100644
--- a/doc/src/fix_neb.txt
+++ b/doc/src/fix_neb.txt
@@ -43,9 +43,9 @@ Add nudging forces to atoms in the group for a multi-replica
 simulation run via the "neb"_neb.html command to perform a nudged
 elastic band (NEB) calculation for finding the transition state.
 Hi-level explanations of NEB are given with the "neb"_neb.html command
-and in "Section_howto 5"_Section_howto.html#howto_5 of the manual.
-The fix neb command must be used with the "neb" command and defines
-how inter-replica nudging forces are computed.  A NEB calculation is
+and on the "Howto replica"_Howto_replica.html doc page.  The fix neb
+command must be used with the "neb" command and defines how
+inter-replica nudging forces are computed.  A NEB calculation is
 divided in two stages. In the first stage n replicas are relaxed
 toward a MEP until convergence.  In the second stage, the climbing
 image scheme (see "(Henkelman2)"_#Henkelman2) is enabled, so that the
@@ -192,9 +192,9 @@ target energy.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.
 
 The forces due to this fix are imposed during an energy minimization,
 as invoked by the "minimize"_minimize.html command via the
diff --git a/doc/src/fix_nh.txt b/doc/src/fix_nh.txt
index e3a39c6bc6..d18f4a3e16 100644
--- a/doc/src/fix_nh.txt
+++ b/doc/src/fix_nh.txt
@@ -386,9 +386,10 @@ have their temperature controlled by another fix - e.g. by "fix
 langevin"_fix_nh.html or "fix temp/rescale"_fix_temp_rescale.html
 commands.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
-thermostatting and barostatting.
+See the "Howto thermostat"_Howto_thermostat.html and "Howto
+barostat"_Howto_barostat.html doc pages for a discussion of different
+ways to compute temperature and perform thermostatting and
+barostatting.
 
 :line
 
@@ -537,9 +538,9 @@ and barostatting to the system's potential energy as part of
 "thermodynamic output"_thermo_style.html.
 
 These fixes compute a global scalar and a global vector of quantities,
-which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The scalar value calculated by
-these fixes is "extensive"; the vector values are "intensive".
+which can be accessed by various "output commands"_Howto_output.html.
+The scalar value calculated by these fixes is "extensive"; the vector
+values are "intensive".
 
 The scalar is the cumulative energy change due to the fix.
 
diff --git a/doc/src/fix_nphug.txt b/doc/src/fix_nphug.txt
index 4f696e9590..1276a5697d 100644
--- a/doc/src/fix_nphug.txt
+++ b/doc/src/fix_nphug.txt
@@ -192,9 +192,9 @@ included in the definition of internal energy E when calculating the value
 of Delta in the above equation.
 
 These fixes compute a global scalar and a global vector of quantities,
-which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The scalar value calculated by
-these fixes is "extensive"; the vector values are "intensive".
+which can be accessed by various "output commands"_Howto_output.html.
+The scalar value calculated by these fixes is "extensive"; the vector
+values are "intensive".
 
 The scalar is the cumulative energy change due to the fix.
 
diff --git a/doc/src/fix_nve.txt b/doc/src/fix_nve.txt
index ac9cb53b50..8aa4197a60 100644
--- a/doc/src/fix_nve.txt
+++ b/doc/src/fix_nve.txt
@@ -58,10 +58,10 @@ instructions on how to use the accelerated styles effectively.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:] none
 
diff --git a/doc/src/fix_nve_asphere.txt b/doc/src/fix_nve_asphere.txt
index 5be7a7aa68..b9ee48f9dd 100644
--- a/doc/src/fix_nve_asphere.txt
+++ b/doc/src/fix_nve_asphere.txt
@@ -35,10 +35,10 @@ assumes point particles and only updates their position and velocity.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 :line
 
diff --git a/doc/src/fix_nve_asphere_noforce.txt b/doc/src/fix_nve_asphere_noforce.txt
index 5f1b271546..164e3db104 100644
--- a/doc/src/fix_nve_asphere_noforce.txt
+++ b/doc/src/fix_nve_asphere_noforce.txt
@@ -38,10 +38,10 @@ Dynamics, since the velocity and angular momentum are updated by the
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_nve_body.txt b/doc/src/fix_nve_body.txt
index 604b5391cd..3696425374 100644
--- a/doc/src/fix_nve_body.txt
+++ b/doc/src/fix_nve_body.txt
@@ -24,9 +24,9 @@ fix 1 all nve/body :pre
 Perform constant NVE integration to update position, velocity,
 orientation, and angular velocity for body particles in the group each
 timestep.  V is volume; E is energy.  This creates a system trajectory
-consistent with the microcanonical ensemble.  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.
+consistent with the microcanonical ensemble.  See the "Howto
+body"_Howto_body.html doc page for more details on using body
+particles.
 
 This fix differs from the "fix nve"_fix_nve.html command, which
 assumes point particles and only updates their position and velocity.
@@ -36,10 +36,10 @@ assumes point particles and only updates their position and velocity.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_nve_eff.txt b/doc/src/fix_nve_eff.txt
index 156f184dac..608e5e12ad 100644
--- a/doc/src/fix_nve_eff.txt
+++ b/doc/src/fix_nve_eff.txt
@@ -35,10 +35,10 @@ of electrons are also updated.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_nve_limit.txt b/doc/src/fix_nve_limit.txt
index 2ecec83e9c..ffaffd59b7 100644
--- a/doc/src/fix_nve_limit.txt
+++ b/doc/src/fix_nve_limit.txt
@@ -63,14 +63,14 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-count of how many updates of atom's velocity/position were limited by
-the maximum distance criterion.  This should be roughly the number of
-atoms so affected, except that updates occur at both the beginning and
-end of a timestep in a velocity Verlet timestepping algorithm.  This
-is a cumulative quantity for the current run, but is re-initialized to
-zero each time a run is performed.  The scalar value calculated by
-this fix is "extensive".
+"output commands"_Howto_output.html.  The scalar is the count of how
+many updates of atom's velocity/position were limited by the maximum
+distance criterion.  This should be roughly the number of atoms so
+affected, except that updates occur at both the beginning and end of a
+timestep in a velocity Verlet timestepping algorithm.  This is a
+cumulative quantity for the current run, but is re-initialized to zero
+each time a run is performed.  The scalar value calculated by this fix
+is "extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.  This fix is not invoked during "energy
diff --git a/doc/src/fix_nve_line.txt b/doc/src/fix_nve_line.txt
index ac5206aa5c..a919e648e1 100644
--- a/doc/src/fix_nve_line.txt
+++ b/doc/src/fix_nve_line.txt
@@ -24,9 +24,9 @@ fix 1 all nve/line :pre
 Perform constant NVE integration to update position, velocity,
 orientation, and angular velocity for line segment particles in the
 group each timestep.  V is volume; E is energy.  This creates a system
-trajectory consistent with the microcanonical ensemble.  See
-"Section 6.14"_Section_howto.html#howto_14 of the manual for an
-overview of using line segment particles.
+trajectory consistent with the microcanonical ensemble.  See "Howto
+spherical"_Howto_spherical.html doc page for an overview of using line
+segment particles.
 
 This fix differs from the "fix nve"_fix_nve.html command, which
 assumes point particles and only updates their position and velocity.
@@ -36,10 +36,10 @@ assumes point particles and only updates their position and velocity.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_nve_manifold_rattle.txt b/doc/src/fix_nve_manifold_rattle.txt
index e032a7e1cc..89922ea80d 100644
--- a/doc/src/fix_nve_manifold_rattle.txt
+++ b/doc/src/fix_nve_manifold_rattle.txt
@@ -40,7 +40,7 @@ the dynamics of particles constrained to curved surfaces can be
 studied. If combined with "fix langevin"_fix_langevin.html, this
 generates Brownian motion of particles constrained to a curved
 surface. For a list of currently supported manifolds and their
-parameters, see "manifolds"_manifolds.html.
+parameters, see the "Howto manifold"_Howto_manifold.html doc page.
 
 Note that the particles must initially be close to the manifold in
 question. If not, RATTLE will not be able to iterate until the
@@ -68,10 +68,10 @@ conserved.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 :line
 
diff --git a/doc/src/fix_nve_noforce.txt b/doc/src/fix_nve_noforce.txt
index a0dbcc80f1..c1a4f76eaf 100644
--- a/doc/src/fix_nve_noforce.txt
+++ b/doc/src/fix_nve_noforce.txt
@@ -40,10 +40,10 @@ fcm() group function to compute the total force on the group of atoms.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:] none
 
diff --git a/doc/src/fix_nve_sphere.txt b/doc/src/fix_nve_sphere.txt
index cfe73a854d..36c4178de9 100644
--- a/doc/src/fix_nve_sphere.txt
+++ b/doc/src/fix_nve_sphere.txt
@@ -89,10 +89,10 @@ instructions on how to use the accelerated styles effectively.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_nve_tri.txt b/doc/src/fix_nve_tri.txt
index cee27e2fa4..9c03eb872a 100644
--- a/doc/src/fix_nve_tri.txt
+++ b/doc/src/fix_nve_tri.txt
@@ -23,10 +23,10 @@ fix 1 all nve/tri :pre
 
 Perform constant NVE integration to update position, velocity,
 orientation, and angular momentum for triangular particles in the
-group each timestep.  V is volume; E is energy.  This creates a
-system trajectory consistent with the microcanonical ensemble.  See
-"Section 6.14"_Section_howto.html#howto_14 of the manual for an
-overview of using triangular particles.
+group each timestep.  V is volume; E is energy.  This creates a system
+trajectory consistent with the microcanonical ensemble.  See the
+"Howto spherical"_Howto_spherical.html doc page for an overview of
+using triangular particles.
 
 This fix differs from the "fix nve"_fix_nve.html command, which
 assumes point particles and only updates their position and velocity.
@@ -36,10 +36,10 @@ assumes point particles and only updates their position and velocity.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_nvk.txt b/doc/src/fix_nvk.txt
index 49fd8217ab..2106ee5235 100644
--- a/doc/src/fix_nvk.txt
+++ b/doc/src/fix_nvk.txt
@@ -42,10 +42,10 @@ energy prior to this fix.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_nvt_manifold_rattle.txt b/doc/src/fix_nvt_manifold_rattle.txt
index a620648a46..4261f9a4db 100644
--- a/doc/src/fix_nvt_manifold_rattle.txt
+++ b/doc/src/fix_nvt_manifold_rattle.txt
@@ -37,9 +37,13 @@ fix 1 all nvt/manifold/rattle 1e-4 10 cylinder 3.0 temp 1.0 1.0 10.0
 
 [Description:]
 
-This fix combines the RATTLE-based "(Andersen)"_#Andersen2 time integrator of "fix nve/manifold/rattle"_fix_nve_manifold_rattle.html "(Paquay)"_#Paquay3 with a Nose-Hoover-chain thermostat to sample the
-canonical ensemble of particles constrained to a curved surface (manifold). This sampling does suffer from discretization bias of O(dt).
-For a list of currently supported manifolds and their parameters, see "manifolds"_manifolds.html
+This fix combines the RATTLE-based "(Andersen)"_#Andersen2 time
+integrator of "fix nve/manifold/rattle"_fix_nve_manifold_rattle.html
+"(Paquay)"_#Paquay3 with a Nose-Hoover-chain thermostat to sample the
+canonical ensemble of particles constrained to a curved surface
+(manifold). This sampling does suffer from discretization bias of
+O(dt).  For a list of currently supported manifolds and their
+parameters, see the "Howto manifold"_Howto_manifold.html doc page.
 
 :line
 
@@ -48,10 +52,10 @@ For a list of currently supported manifolds and their parameters, see "manifolds
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 :line
 
diff --git a/doc/src/fix_oneway.txt b/doc/src/fix_oneway.txt
index 2d85c581eb..d9217ab14b 100644
--- a/doc/src/fix_oneway.txt
+++ b/doc/src/fix_oneway.txt
@@ -43,10 +43,10 @@ membrane, or as an implementation of Maxwell's demon.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:] none
 
diff --git a/doc/src/fix_orient.txt b/doc/src/fix_orient.txt
index 20ff94866e..c57cccd322 100644
--- a/doc/src/fix_orient.txt
+++ b/doc/src/fix_orient.txt
@@ -135,14 +135,14 @@ fixes. This allows to set at which level of the "r-RESPA"_run_style.html
 integrator a fix is adding its forces. Default is the outermost level.
 
 This fix calculates a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-potential energy change due to this fix.  The scalar value calculated
-by this fix is "extensive".
+"output commands"_Howto_output.html.  The scalar is the potential
+energy change due to this fix.  The scalar value calculated by this
+fix is "extensive".
 
 This fix also calculates a per-atom array which can be accessed by
-various "output commands"_Section_howto.html#howto_15.  The array
-stores the order parameter Xi and normalized order parameter (0 to 1)
-for each atom.  The per-atom values can be accessed on any timestep.
+various "output commands"_Howto_output.html.  The array stores the
+order parameter Xi and normalized order parameter (0 to 1) for each
+atom.  The per-atom values can be accessed on any timestep.
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.  This fix is not invoked during "energy
diff --git a/doc/src/fix_phonon.txt b/doc/src/fix_phonon.txt
index aad6c2bfaa..63df4e6801 100644
--- a/doc/src/fix_phonon.txt
+++ b/doc/src/fix_phonon.txt
@@ -150,7 +150,7 @@ fix. You can use it to change the temperature compute from thermo_temp
 to the one that reflects the true temperature of atoms in the group.
 
 No global scalar or vector or per-atom quantities are stored by this
-fix for access by various "output commands"_Section_howto.html#howto_15.
+fix for access by various "output commands"_Howto_output.html.
 
 Instead, this fix outputs its initialization information (including
 mapping information) and the calculated dynamical matrices to the file
diff --git a/doc/src/fix_pimd.txt b/doc/src/fix_pimd.txt
index 38022e4c7d..8958063d2e 100644
--- a/doc/src/fix_pimd.txt
+++ b/doc/src/fix_pimd.txt
@@ -103,14 +103,13 @@ is appropriate for most situations.
 
 The PIMD algorithm in LAMMPS is implemented as a hyper-parallel scheme
 as described in "(Calhoun)"_#Calhoun.  In LAMMPS this is done by using
-"multi-replica feature"_Section_howto.html#howto_5 in LAMMPS, where
-each quasi-particle system is stored and simulated on a separate
-partition of processors.  The following diagram illustrates this
-approach.  The original system with 2 ring polymers is shown in red.
-Since each ring has 4 quasi-beads (imaginary time slices), there are 4
-replicas of the system, each running on one of the 4 partitions of
-processors.  Each replica (shown in green) owns one quasi-bead in each
-ring.
+"multi-replica feature"_Howto_replica.html in LAMMPS, where each
+quasi-particle system is stored and simulated on a separate partition
+of processors.  The following diagram illustrates this approach.  The
+original system with 2 ring polymers is shown in red.  Since each ring
+has 4 quasi-beads (imaginary time slices), there are 4 replicas of the
+system, each running on one of the 4 partitions of processors.  Each
+replica (shown in green) owns one quasi-bead in each ring.
 
 :c,image(JPG/pimd.jpg)
 
diff --git a/doc/src/fix_planeforce.txt b/doc/src/fix_planeforce.txt
index 67956c8b6d..4a74301066 100644
--- a/doc/src/fix_planeforce.txt
+++ b/doc/src/fix_planeforce.txt
@@ -35,9 +35,9 @@ should continue to move in the plane thereafter.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.
 
 The forces due to this fix are imposed during an energy minimization,
 invoked by the "minimize"_minimize.html command.
diff --git a/doc/src/fix_poems.txt b/doc/src/fix_poems.txt
index 03abc058b8..0690923b45 100644
--- a/doc/src/fix_poems.txt
+++ b/doc/src/fix_poems.txt
@@ -114,9 +114,9 @@ early or late in a timestep, i.e. at the post-force stage or at the
 final-integrate stage, respectively.
 
 No global or per-atom quantities are stored by this fix for access by
-various "output commands"_Section_howto.html#howto_15.  No parameter
-of this fix can be used with the {start/stop} keywords of the
-"run"_run.html command.  This fix is not invoked during "energy
+various "output commands"_Howto_output.html.  No parameter of this fix
+can be used with the {start/stop} keywords of the "run"_run.html
+command.  This fix is not invoked during "energy
 minimization"_minimize.html.
 
 [Restrictions:]
diff --git a/doc/src/fix_pour.txt b/doc/src/fix_pour.txt
index 54f78287e0..4b86405522 100644
--- a/doc/src/fix_pour.txt
+++ b/doc/src/fix_pour.txt
@@ -237,9 +237,9 @@ appropriately.
 
 None of the "fix_modify"_fix_modify.html options are relevant to this
 fix.  No global or per-atom quantities are stored by this fix for
-access by various "output commands"_Section_howto.html#howto_15.  No
-parameter of this fix can be used with the {start/stop} keywords of
-the "run"_run.html command.  This fix is not invoked during "energy
+access by various "output commands"_Howto_output.html.  No parameter
+of this fix can be used with the {start/stop} keywords of the
+"run"_run.html command.  This fix is not invoked during "energy
 minimization"_minimize.html.
 
 [Restrictions:]
diff --git a/doc/src/fix_precession_spin.txt b/doc/src/fix_precession_spin.txt
index 4133d7dd57..bc18fa0e8c 100644
--- a/doc/src/fix_precession_spin.txt
+++ b/doc/src/fix_precession_spin.txt
@@ -67,8 +67,8 @@ to add this magnetic potential energy to the potential energy of the system,
 fix             1 all precession/spin zeeman 1.0 0.0 0.0 1.0
 fix_modify      1 energy yes :pre
 
-This fix computes a global scalar which can be accessed by various 
-"output commands"_Section_howto.html#howto_15. 
+This fix computes a global scalar which can be accessed by various
+"output commands"_Howto_output.html.
 
 No information about this fix is written to "binary restart
 files"_restart.html.
diff --git a/doc/src/fix_press_berendsen.txt b/doc/src/fix_press_berendsen.txt
index 9c9da8ec7b..0e41abd1f8 100644
--- a/doc/src/fix_press_berendsen.txt
+++ b/doc/src/fix_press_berendsen.txt
@@ -58,9 +58,8 @@ to control the temperature, such as "fix nvt"_fix_nh.html or "fix
 langevin"_fix_langevin.html or "fix
 temp/berendsen"_fix_temp_berendsen.html.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
-thermostatting and barostatting.
+See the "Howto baroostat"_Howto_barostat.html doc page for a
+discussion of different ways to perform barostatting.
 
 :line
 
@@ -196,7 +195,7 @@ pressure.  LAMMPS will warn you if you choose to compute temperature
 on a subset of atoms.
 
 No global or per-atom quantities are stored by this fix for access by
-various "output commands"_Section_howto.html#howto_15.
+various "output commands"_Howto_output.html.
 
 This fix can ramp its target pressure over multiple runs, using the
 {start} and {stop} keywords of the "run"_run.html command.  See the
diff --git a/doc/src/fix_print.txt b/doc/src/fix_print.txt
index cf3b542833..f7a7b333c4 100644
--- a/doc/src/fix_print.txt
+++ b/doc/src/fix_print.txt
@@ -73,10 +73,10 @@ where ID is replaced with the fix-ID.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:] none
 
diff --git a/doc/src/fix_property_atom.txt b/doc/src/fix_property_atom.txt
index 95fc2c424d..624fc5f7df 100644
--- a/doc/src/fix_property_atom.txt
+++ b/doc/src/fix_property_atom.txt
@@ -200,18 +200,17 @@ added classes.
 
 :line
 
-:link(isotopes)
-Example for using per-atom masses with TIP4P water to study isotope
-effects. When setting up simulations with the "TIP4P pair
-styles"_Section_howto.html#howto_8 for water, you have to provide
-exactly one atom type each to identify the water oxygen and hydrogen
+:link(isotopes) Example for using per-atom masses with TIP4P water to
+study isotope effects. When setting up simulations with the "TIP4P
+pair styles"_Howto_tip4p.html for water, you have to provide exactly
+one atom type each to identify the water oxygen and hydrogen
 atoms. Since the atom mass is normally tied to the atom type, this
 makes it impossible to study multiple isotopes in the same simulation.
 With {fix property/atom rmass} however, the per-type masses are
 replaced by per-atom masses. Asumming you have a working input deck
-for regular TIP4P water, where water oxygen is atom type 1 and
-water hydrogen is atom type 2, the following lines of input script
-convert this to using per-atom masses:
+for regular TIP4P water, where water oxygen is atom type 1 and water
+hydrogen is atom type 2, the following lines of input script convert
+this to using per-atom masses:
 
 fix Isotopes all property/atom rmass ghost yes
 set type 1 mass 15.9994
@@ -247,12 +246,12 @@ command for info on how to re-specify a fix in an input script that
 reads a restart file, so that the operation of the fix continues in an
 uninterrupted fashion.
 
-None of the "fix_modify"_fix_modify.html options
-are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+None of the "fix_modify"_fix_modify.html options are relevant to this
+fix.  No global or per-atom quantities are stored by this fix for
+access by various "output commands"_Howto_output.html.  No parameter
+of this fix can be used with the {start/stop} keywords of the
+"run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:] none
 
diff --git a/doc/src/fix_python_move.txt b/doc/src/fix_python_move.txt
index f10f607a9b..2f49427a9e 100644
--- a/doc/src/fix_python_move.txt
+++ b/doc/src/fix_python_move.txt
@@ -83,10 +83,10 @@ Examples for how to do this are in the {examples/python} folder.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_qbmsst.txt b/doc/src/fix_qbmsst.txt
index 2c116fb0f8..56ace85e57 100644
--- a/doc/src/fix_qbmsst.txt
+++ b/doc/src/fix_qbmsst.txt
@@ -179,10 +179,10 @@ thermo_style    custom  step temp ke pe lz pzz etotal v_dhug v_dray v_lgr_vel v_
 The global scalar under the entry f_fix_id is the quantity of thermo
 energy as an extra part of <i>etot</i>. This global scalar and the
 vector of 5 quantities can be accessed by various "output
-commands"_Section_howto.html#howto_15. It is worth noting that the
-temp keyword under the "thermo_style"_thermo_style.html command print
-the instantaneous classical temperature <i>T</i><sup>cl</sup> as
-described in the command "fix qtb"_fix_qtb.html.
+commands"_Howto_output.html. It is worth noting that the temp keyword
+under the "thermo_style"_thermo_style.html command print the
+instantaneous classical temperature <i>T</i><sup>cl</sup> as described
+in the command "fix qtb"_fix_qtb.html.
 
 :line
 
diff --git a/doc/src/fix_qeq.txt b/doc/src/fix_qeq.txt
index 194361e990..c142d4a06d 100644
--- a/doc/src/fix_qeq.txt
+++ b/doc/src/fix_qeq.txt
@@ -179,9 +179,8 @@ parameters.  See the examples/qeq directory for some examples.
 No information about these fixes is written to "binary restart
 files"_restart.html.  No global scalar or vector or per-atom
 quantities are stored by these fixes for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of these fixes
-can be used with the {start/stop} keywords of the "run"_run.html
-command.
+commands"_Howto_output.html.  No parameter of these fixes can be used
+with the {start/stop} keywords of the "run"_run.html command.
 
 Thexe fixes are invoked during "energy minimization"_minimize.html.
 
diff --git a/doc/src/fix_qeq_comb.txt b/doc/src/fix_qeq_comb.txt
index 783dc3133c..0eb38fcae6 100644
--- a/doc/src/fix_qeq_comb.txt
+++ b/doc/src/fix_qeq_comb.txt
@@ -92,9 +92,9 @@ integrator the fix is performing charge equilibration. Default is
 the outermost level.
 
 This fix produces a per-atom vector which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The vector stores the
-gradient of the charge on each atom.  The per-atom values be accessed
-on any timestep.
+"output commands"_Howto_output.html.  The vector stores the gradient
+of the charge on each atom.  The per-atom values be accessed on any
+timestep.
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
diff --git a/doc/src/fix_qeq_reax.txt b/doc/src/fix_qeq_reax.txt
index a534a66c09..ea25ddbf57 100644
--- a/doc/src/fix_qeq_reax.txt
+++ b/doc/src/fix_qeq_reax.txt
@@ -70,8 +70,8 @@ the {qeq/reax/omp} style. Otherwise they are processed separately.
 No information about this fix is written to "binary restart
 files"_restart.html.  No global scalar or vector or per-atom
 quantities are stored by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Howto_output.html.  No parameter of this fix can be used
+with the {start/stop} keywords of the "run"_run.html command.
 
 This fix is invoked during "energy minimization"_minimize.html.
 
diff --git a/doc/src/fix_qmmm.txt b/doc/src/fix_qmmm.txt
index 1b4a850a42..5e730ac8af 100644
--- a/doc/src/fix_qmmm.txt
+++ b/doc/src/fix_qmmm.txt
@@ -46,9 +46,9 @@ No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global scalar or vector or per-atom
 quantities are stored by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+commands"_Howto_output.html.  No parameter of this fix can be used
+with the {start/stop} keywords of the "run"_run.html command.  This
+fix is not invoked during "energy minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_reax_bonds.txt b/doc/src/fix_reax_bonds.txt
index 50f0b77d52..2f7c38f815 100644
--- a/doc/src/fix_reax_bonds.txt
+++ b/doc/src/fix_reax_bonds.txt
@@ -62,10 +62,10 @@ version, but will also take longer to write.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 :line
 
diff --git a/doc/src/fix_reaxc_species.txt b/doc/src/fix_reaxc_species.txt
index 75e4598ca5..4f1249744f 100644
--- a/doc/src/fix_reaxc_species.txt
+++ b/doc/src/fix_reaxc_species.txt
@@ -116,8 +116,8 @@ are relevant to this fix.
 
 This fix computes both a global vector of length 2 and a per-atom
 vector, either of which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The values in the global
-vector are "intensive".
+commands"_Howto_output.html.  The values in the global vector are
+"intensive".
 
 The 2 values in the global vector are as follows:
 
diff --git a/doc/src/fix_recenter.txt b/doc/src/fix_recenter.txt
index 342bed4251..a2477d11c7 100644
--- a/doc/src/fix_recenter.txt
+++ b/doc/src/fix_recenter.txt
@@ -94,13 +94,13 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-distance the group is moved by fix recenter.
+"output commands"_Howto_output.html.  The scalar is the distance the
+group is moved by fix recenter.
 
 This fix also computes global 3-vector which can be accessed by
-various "output commands"_Section_howto.html#howto_15.  The 3
-quantities in the vector are xyz components of displacement applied to
-the group of atoms by the fix.
+various "output commands"_Howto_output.html.  The 3 quantities in the
+vector are xyz components of displacement applied to the group of
+atoms by the fix.
 
 The scalar and vector values calculated by this fix are "extensive".
 
diff --git a/doc/src/fix_restrain.txt b/doc/src/fix_restrain.txt
index 9de63defb7..b8cc7c0d45 100644
--- a/doc/src/fix_restrain.txt
+++ b/doc/src/fix_restrain.txt
@@ -187,8 +187,8 @@ added forces to be included in the total potential energy of the
 system (the quantity being minimized), you MUST enable the
 "fix_modify"_fix_modify.html {energy} option for this fix.
 
-This fix computes a global scalar and a global vector of length 3, which
-can be accessed by various "output commands"_Section_howto.html#howto_15.
+This fix computes a global scalar and a global vector of length 3,
+which can be accessed by various "output commands"_Howto_output.html.
 The scalar is the total potential energy for {all} the restraints as
 discussed above. The vector values are the sum of contributions to the
 following individual categories:
diff --git a/doc/src/fix_rigid.txt b/doc/src/fix_rigid.txt
index f3dd20daa3..a5f00c16e9 100644
--- a/doc/src/fix_rigid.txt
+++ b/doc/src/fix_rigid.txt
@@ -745,29 +745,29 @@ computed early or late in a timestep, i.e. at the post-force stage or
 at the final-integrate stage or the timestep, respectively.
 
 The 2 NVE rigid fixes compute a global scalar which can be accessed by
-various "output commands"_Section_howto.html#howto_15.  The scalar
-value calculated by these fixes is "intensive".  The scalar is the
-current temperature of the collection of rigid bodies.  This is
-averaged over all rigid bodies and their translational and rotational
-degrees of freedom.  The translational energy of a rigid body is 1/2 m
-v^2, where m = total mass of the body and v = the velocity of its
-center of mass.  The rotational energy of a rigid body is 1/2 I w^2,
-where I = the moment of inertia tensor of the body and w = its angular
-velocity.  Degrees of freedom constrained by the {force} and {torque}
-keywords are removed from this calculation, but only for the {rigid}
-and {rigid/nve} fixes.
+various "output commands"_Howto_output.html.  The scalar value
+calculated by these fixes is "intensive".  The scalar is the current
+temperature of the collection of rigid bodies.  This is averaged over
+all rigid bodies and their translational and rotational degrees of
+freedom.  The translational energy of a rigid body is 1/2 m v^2, where
+m = total mass of the body and v = the velocity of its center of mass.
+The rotational energy of a rigid body is 1/2 I w^2, where I = the
+moment of inertia tensor of the body and w = its angular velocity.
+Degrees of freedom constrained by the {force} and {torque} keywords
+are removed from this calculation, but only for the {rigid} and
+{rigid/nve} fixes.
 
 The 6 NVT, NPT, NPH rigid fixes compute a global scalar which can be
-accessed by various "output commands"_Section_howto.html#howto_15.
-The scalar value calculated by these fixes is "extensive".  The scalar
-is the cumulative energy change due to the thermostatting and
-barostatting the fix performs.
+accessed by various "output commands"_Howto_output.html.  The scalar
+value calculated by these fixes is "extensive".  The scalar is the
+cumulative energy change due to the thermostatting and barostatting
+the fix performs.
 
 All of the {rigid} styles (not the {rigid/small} styles) compute a
 global array of values which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  Similar information about the
-bodies defined by the {rigid/small} styles can be accessed via the
-"compute rigid/local"_compute_rigid_local.html command.
+commands"_Howto_output.html.  Similar information about the bodies
+defined by the {rigid/small} styles can be accessed via the "compute
+rigid/local"_compute_rigid_local.html command.
 
 The number of rows in the array is equal to the number of rigid
 bodies.  The number of columns is 15.  Thus for each rigid body, 15
diff --git a/doc/src/fix_setforce.txt b/doc/src/fix_setforce.txt
index 0af1c92922..c6a01e5492 100644
--- a/doc/src/fix_setforce.txt
+++ b/doc/src/fix_setforce.txt
@@ -103,10 +103,10 @@ so that setforce values are not counted multiple times. Default is to
 to override forces at the outermost level.
 
 This fix computes a global 3-vector of forces, which can be accessed
-by various "output commands"_Section_howto.html#howto_15.  This is the
-total force on the group of atoms before the forces on individual
-atoms are changed by the fix.  The vector values calculated by this
-fix are "extensive".
+by various "output commands"_Howto_output.html.  This is the total
+force on the group of atoms before the forces on individual atoms are
+changed by the fix.  The vector values calculated by this fix are
+"extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
diff --git a/doc/src/fix_shake.txt b/doc/src/fix_shake.txt
index 7428b30a14..9297bcc87a 100644
--- a/doc/src/fix_shake.txt
+++ b/doc/src/fix_shake.txt
@@ -195,10 +195,9 @@ No information about these fixes is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to these fixes.  No global or per-atom quantities are
 stored by these fixes for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of these fixes
-can be used with the {start/stop} keywords of the "run"_run.html
-command.  These fixes are not invoked during "energy
-minimization"_minimize.html.
+commands"_Howto_output.html.  No parameter of these fixes can be used
+with the {start/stop} keywords of the "run"_run.html command.  These
+fixes are not invoked during "energy minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_smd.txt b/doc/src/fix_smd.txt
index cb4a40f0fd..e9403b22cc 100644
--- a/doc/src/fix_smd.txt
+++ b/doc/src/fix_smd.txt
@@ -111,12 +111,12 @@ this fix. This allows to set at which level of the "r-RESPA"_run_style.html
 integrator the fix is adding its forces. Default is the outermost level.
 
 This fix computes a vector list of 7 quantities, which can be accessed
-by various "output commands"_Section_howto.html#howto_15.  The
-quantities in the vector are in this order: the x-, y-, and
-z-component of the pulling force, the total force in direction of the
-pull, the equilibrium distance of the spring, the distance between the
-two reference points, and finally the accumulated PMF (the sum of
-pulling forces times displacement).
+by various "output commands"_Howto_output.html.  The quantities in the
+vector are in this order: the x-, y-, and z-component of the pulling
+force, the total force in direction of the pull, the equilibrium
+distance of the spring, the distance between the two reference points,
+and finally the accumulated PMF (the sum of pulling forces times
+displacement).
 
 The force is the total force on the group of atoms by the spring.  In
 the case of the {couple} style, it is the force on the fix group
diff --git a/doc/src/fix_smd_setvel.txt b/doc/src/fix_smd_setvel.txt
index f93a7d0965..d64726d9b3 100644
--- a/doc/src/fix_smd_setvel.txt
+++ b/doc/src/fix_smd_setvel.txt
@@ -66,9 +66,9 @@ None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix computes a global 3-vector of forces, which can be accessed
-by various "output commands"_Section_howto.html#howto_15.  This is the
-total force on the group of atoms.  The vector values calculated by this
-fix are "extensive".
+by various "output commands"_Howto_output.html.  This is the total
+force on the group of atoms.  The vector values calculated by this fix
+are "extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
diff --git a/doc/src/fix_spring.txt b/doc/src/fix_spring.txt
index 014a43aacc..047e5a6797 100644
--- a/doc/src/fix_spring.txt
+++ b/doc/src/fix_spring.txt
@@ -105,19 +105,19 @@ fix. This allows to set at which level of the "r-RESPA"_run_style.html
 integrator the fix is adding its forces. Default is the outermost level.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-spring energy = 0.5 * K * r^2.
+"output commands"_Howto_output.html.  The scalar is the spring energy
+= 0.5 * K * r^2.
 
 This fix also computes global 4-vector which can be accessed by
-various "output commands"_Section_howto.html#howto_15.  The first 3
-quantities in the vector are xyz components of the total force added
-to the group of atoms by the spring.  In the case of the {couple}
-style, it is the force on the fix group (group-ID) or the negative of
-the force on the 2nd group (group-ID2).  The 4th quantity in the
-vector is the magnitude of the force added by the spring, as a
-positive value if (r-R0) > 0 and a negative value if (r-R0) < 0.  This
-sign convention can be useful when using the spring force to compute a
-potential of mean force (PMF).
+various "output commands"_Howto_output.html.  The first 3 quantities
+in the vector are xyz components of the total force added to the group
+of atoms by the spring.  In the case of the {couple} style, it is the
+force on the fix group (group-ID) or the negative of the force on the
+2nd group (group-ID2).  The 4th quantity in the vector is the
+magnitude of the force added by the spring, as a positive value if
+(r-R0) > 0 and a negative value if (r-R0) < 0.  This sign convention
+can be useful when using the spring force to compute a potential of
+mean force (PMF).
 
 The scalar and vector values calculated by this fix are "extensive".
 
diff --git a/doc/src/fix_spring_chunk.txt b/doc/src/fix_spring_chunk.txt
index 7630a009dd..e46f299771 100644
--- a/doc/src/fix_spring_chunk.txt
+++ b/doc/src/fix_spring_chunk.txt
@@ -60,8 +60,8 @@ fix. This allows to set at which level of the "r-RESPA"_run_style.html
 integrator the fix is adding its forces. Default is the outermost level.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-energy of all the springs, i.e. 0.5 * K * r^2 per-spring.
+"output commands"_Howto_output.html.  The scalar is the energy of all
+the springs, i.e. 0.5 * K * r^2 per-spring.
 
 The scalar value calculated by this fix is "extensive".
 
diff --git a/doc/src/fix_spring_rg.txt b/doc/src/fix_spring_rg.txt
index bff6b38e7e..4afdc02d5a 100644
--- a/doc/src/fix_spring_rg.txt
+++ b/doc/src/fix_spring_rg.txt
@@ -51,10 +51,10 @@ the time the fix is specified, and that value is used as the target.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 The "fix_modify"_fix_modify.html {respa} option is supported by this
 fix. This allows to set at which level of the "r-RESPA"_run_style.html
diff --git a/doc/src/fix_spring_self.txt b/doc/src/fix_spring_self.txt
index 68961a1512..e5b5c3dfd0 100644
--- a/doc/src/fix_spring_self.txt
+++ b/doc/src/fix_spring_self.txt
@@ -57,10 +57,10 @@ this fix. This allows to set at which level of the "r-RESPA"_run_style.html
 integrator the fix is adding its forces. Default is the outermost level.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is an
-energy which is the sum of the spring energy for each atom, where the
-per-atom energy is 0.5 * K * r^2.  The scalar value calculated by this
-fix is "extensive".
+"output commands"_Howto_output.html.  The scalar is an energy which is
+the sum of the spring energy for each atom, where the per-atom energy
+is 0.5 * K * r^2.  The scalar value calculated by this fix is
+"extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
diff --git a/doc/src/fix_srd.txt b/doc/src/fix_srd.txt
index 4e190234fd..7c5179fb3f 100644
--- a/doc/src/fix_srd.txt
+++ b/doc/src/fix_srd.txt
@@ -341,11 +341,11 @@ are relevant to this fix.
 
 This fix tabulates several SRD statistics which are stored in a vector
 of length 12, which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The vector values calculated
-by this fix are "intensive", meaning they do not scale with the size
-of the simulation.  Technically, the first 8 do scale with the size of
-the simulation, but treating them as intensive means they are not
-scaled when printed as part of thermodynamic output.
+commands"_Howto_output.html.  The vector values calculated by this fix
+are "intensive", meaning they do not scale with the size of the
+simulation.  Technically, the first 8 do scale with the size of the
+simulation, but treating them as intensive means they are not scaled
+when printed as part of thermodynamic output.
 
 These are the 12 quantities.  All are values for the current timestep,
 except for quantity 5 and the last three, each of which are
diff --git a/doc/src/fix_store_force.txt b/doc/src/fix_store_force.txt
index c988431f9d..93437c85b6 100644
--- a/doc/src/fix_store_force.txt
+++ b/doc/src/fix_store_force.txt
@@ -26,7 +26,7 @@ timestep when the fix is invoked, as described below.  This is useful
 for storing forces before constraints or other boundary conditions are
 computed which modify the forces, so that unmodified forces can be
 "written to a dump file"_dump.html or accessed by other "output
-commands"_Section_howto.html#howto_15 that use per-atom quantities.
+commands"_Howto_output.html that use per-atom quantities.
 
 This fix is invoked at the point in the velocity-Verlet timestepping
 immediately after "pair"_pair_style.html, "bond"_bond_style.html,
@@ -54,9 +54,9 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix produces a per-atom array which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The number of columns
-for each atom is 3, and the columns store the x,y,z forces on each
-atom.  The per-atom values be accessed on any timestep.
+"output commands"_Howto_output.html.  The number of columns for each
+atom is 3, and the columns store the x,y,z forces on each atom.  The
+per-atom values be accessed on any timestep.
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.  This fix is not invoked during "energy
diff --git a/doc/src/fix_store_state.txt b/doc/src/fix_store_state.txt
index df694fb97b..dee8070bbd 100644
--- a/doc/src/fix_store_state.txt
+++ b/doc/src/fix_store_state.txt
@@ -68,8 +68,7 @@ Define a fix that stores attributes for each atom in the group at the
 time the fix is defined.  If {N} is 0, then the values are never
 updated, so this is a way of archiving an atom attribute at a given
 time for future use in a calculation or output.  See the discussion of
-"output commands"_Section_howto.html#howto_15 that take fixes as
-inputs.
+"output commands"_Howto_output.html that take fixes as inputs.
 
 If {N} is not zero, then the attributes will be updated every {N}
 steps.
@@ -108,9 +107,8 @@ fix.
 If a single input is specified, this fix produces a per-atom vector.
 If multiple inputs are specified, a per-atom array is produced where
 the number of columns for each atom is the number of inputs.  These
-can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The per-atom values be
-accessed on any timestep.
+can be accessed by various "output commands"_Howto_output.html.  The
+per-atom values be accessed on any timestep.
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.  This fix is not invoked during "energy
diff --git a/doc/src/fix_temp_berendsen.txt b/doc/src/fix_temp_berendsen.txt
index 6944860e14..9092bbd30e 100644
--- a/doc/src/fix_temp_berendsen.txt
+++ b/doc/src/fix_temp_berendsen.txt
@@ -68,8 +68,8 @@ be used on atoms that also have their temperature controlled by
 another fix - e.g. by "fix nvt"_fix_nh.html or "fix
 langevin"_fix_langevin.html commands.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostatting.
 
 This fix computes a temperature each timestep.  To do this, the fix
@@ -126,9 +126,9 @@ system's potential energy as part of "thermodynamic
 output"_thermo_style.html.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-cumulative energy change due to this fix.  The scalar value
-calculated by this fix is "extensive".
+"output commands"_Howto_output.html.  The scalar is the cumulative
+energy change due to this fix.  The scalar value calculated by this
+fix is "extensive".
 
 This fix can ramp its target temperature over multiple runs, using the
 {start} and {stop} keywords of the "run"_run.html command.  See the
diff --git a/doc/src/fix_temp_csvr.txt b/doc/src/fix_temp_csvr.txt
index 4129ad73c8..6ce6ad7d9d 100644
--- a/doc/src/fix_temp_csvr.txt
+++ b/doc/src/fix_temp_csvr.txt
@@ -76,8 +76,8 @@ normally be used on atoms that also have their temperature controlled
 by another fix - e.g. by "fix nvt"_fix_nh.html or "fix
 langevin"_fix_langevin.html commands.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostatting.
 
 These fixes compute a temperature each timestep.  To do this, the fix
@@ -135,9 +135,9 @@ the {start} and {stop} keywords of the "run"_run.html command.  See the
 These fixes are not invoked during "energy minimization"_minimize.html.
 
 These fixes compute a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-cumulative energy change due to the fix.  The scalar value
-calculated by this fix is "extensive".
+"output commands"_Howto_output.html.  The scalar is the cumulative
+energy change due to the fix.  The scalar value calculated by this fix
+is "extensive".
 
 [Restrictions:]
 
diff --git a/doc/src/fix_temp_rescale.txt b/doc/src/fix_temp_rescale.txt
index eff25297c1..89f1777e36 100644
--- a/doc/src/fix_temp_rescale.txt
+++ b/doc/src/fix_temp_rescale.txt
@@ -75,8 +75,8 @@ be used on atoms that also have their temperature controlled by
 another fix - e.g. by "fix nvt"_fix_nh.html or "fix
 langevin"_fix_langevin.html commands.
 
-See "this howto section"_Section_howto.html#howto_16 of the manual for
-a discussion of different ways to compute temperature and perform
+See the "Howto thermostat"_Howto_thermostat.html doc page for a
+discussion of different ways to compute temperature and perform
 thermostatting.
 
 This fix computes a temperature each timestep.  To do this, the fix
@@ -133,9 +133,9 @@ system's potential energy as part of "thermodynamic
 output"_thermo_style.html.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-cumulative energy change due to this fix.  The scalar value
-calculated by this fix is "extensive".
+"output commands"_Howto_output.html.  The scalar is the cumulative
+energy change due to this fix.  The scalar value calculated by this
+fix is "extensive".
 
 This fix can ramp its target temperature over multiple runs, using the
 {start} and {stop} keywords of the "run"_run.html command.  See the
diff --git a/doc/src/fix_temp_rescale_eff.txt b/doc/src/fix_temp_rescale_eff.txt
index f87c1a2192..8a79dc3275 100644
--- a/doc/src/fix_temp_rescale_eff.txt
+++ b/doc/src/fix_temp_rescale_eff.txt
@@ -51,9 +51,9 @@ system's potential energy as part of "thermodynamic
 output"_thermo_style.html.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-cumulative energy change due to this fix.  The scalar value
-calculated by this fix is "extensive".
+"output commands"_Howto_output.html.  The scalar is the cumulative
+energy change due to this fix.  The scalar value calculated by this
+fix is "extensive".
 
 This fix can ramp its target temperature over multiple runs, using the
 {start} and {stop} keywords of the "run"_run.html command.  See the
diff --git a/doc/src/fix_thermal_conductivity.txt b/doc/src/fix_thermal_conductivity.txt
index 0353c095b2..2e10a89738 100644
--- a/doc/src/fix_thermal_conductivity.txt
+++ b/doc/src/fix_thermal_conductivity.txt
@@ -108,9 +108,9 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-cumulative kinetic energy transferred between the bottom and middle
-of the simulation box (in the {edim} direction) is stored as a scalar
+"output commands"_Howto_output.html.  The scalar is the cumulative
+kinetic energy transferred between the bottom and middle of the
+simulation box (in the {edim} direction) is stored as a scalar
 quantity by this fix.  This quantity is zeroed when the fix is defined
 and accumulates thereafter, once every N steps.  The units of the
 quantity are energy; see the "units"_units.html command for details.
diff --git a/doc/src/fix_ti_spring.txt b/doc/src/fix_ti_spring.txt
index 191f9e7c6b..b116d8e8a3 100644
--- a/doc/src/fix_ti_spring.txt
+++ b/doc/src/fix_ti_spring.txt
@@ -121,13 +121,12 @@ fix to add the energy stored in the per-atom springs to the system's
 potential energy as part of "thermodynamic output"_thermo_style.html.
 
 This fix computes a global scalar and a global vector quantities which
-can be accessed by various "output
-commands"_Section_howto.html#howto_15. The scalar is an energy which
-is the sum of the spring energy for each atom, where the per-atom
-energy is 0.5 * k * r^2. The vector has 2 positions, the first one is
-the coupling parameter lambda and the second one is the time
-derivative of lambda. The scalar and vector values calculated by this
-fix are "extensive".
+can be accessed by various "output commands"_Howto_output.html. The
+scalar is an energy which is the sum of the spring energy for each
+atom, where the per-atom energy is 0.5 * k * r^2. The vector has 2
+positions, the first one is the coupling parameter lambda and the
+second one is the time derivative of lambda. The scalar and vector
+values calculated by this fix are "extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
diff --git a/doc/src/fix_tmd.txt b/doc/src/fix_tmd.txt
index 71d8d2c767..e1815e61d3 100644
--- a/doc/src/fix_tmd.txt
+++ b/doc/src/fix_tmd.txt
@@ -90,8 +90,7 @@ For more information about TMD, see "(Schlitter1)"_#Schlitter1 and
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.
+by this fix for access by various "output commands"_Howto_output.html.
 
 This fix can ramp its rho parameter over multiple runs, using the
 {start} and {stop} keywords of the "run"_run.html command.  See the
diff --git a/doc/src/fix_ttm.txt b/doc/src/fix_ttm.txt
index 48dfd254a0..d83118d427 100644
--- a/doc/src/fix_ttm.txt
+++ b/doc/src/fix_ttm.txt
@@ -272,18 +272,17 @@ None of the "fix_modify"_fix_modify.html options are relevant to these
 fixes.
 
 Both fixes compute 2 output quantities stored in a vector of length 2,
-which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The first quantity is the
-total energy of the electronic subsystem. The second quantity is the
-energy transferred from the electronic to the atomic subsystem on that
-timestep. Note that the velocity verlet integrator applies the fix ttm
-forces to the atomic subsystem as two half-step velocity updates: one
-on the current timestep and one on the subsequent timestep.
-Consequently, the change in the atomic subsystem energy is lagged by
-half a timestep relative to the change in the electronic subsystem
-energy. As a result of this, users may notice slight fluctuations in
-the sum of the atomic and electronic subsystem energies reported at
-the end of the timestep.
+which can be accessed by various "output commands"_Howto_output.html.
+The first quantity is the total energy of the electronic
+subsystem. The second quantity is the energy transferred from the
+electronic to the atomic subsystem on that timestep. Note that the
+velocity verlet integrator applies the fix ttm forces to the atomic
+subsystem as two half-step velocity updates: one on the current
+timestep and one on the subsequent timestep.  Consequently, the change
+in the atomic subsystem energy is lagged by half a timestep relative
+to the change in the electronic subsystem energy. As a result of this,
+users may notice slight fluctuations in the sum of the atomic and
+electronic subsystem energies reported at the end of the timestep.
 
 The vector values calculated are "extensive".
 
diff --git a/doc/src/fix_vector.txt b/doc/src/fix_vector.txt
index 385d24cff1..69c999fd1a 100644
--- a/doc/src/fix_vector.txt
+++ b/doc/src/fix_vector.txt
@@ -37,7 +37,7 @@ simply store them.  For a single specified value, the values are
 stored as a global vector of growing length.  For multiple specified
 values, they are stored as rows in a global array, whose number of
 rows is growing.  The resulting vector or array can be used by other
-"output commands"_Section_howto.html#howto_15.
+"output commands"_Howto_output.html.
 
 One way to to use this command is to accumulate a vector that is
 time-integrated using the "variable trap()"_variable.html function.
@@ -127,9 +127,8 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix produces a global vector or global array which can be
-accessed by various "output commands"_Section_howto.html#howto_15.
-The values can only be accessed on timesteps that are multiples of
-{Nevery}.
+accessed by various "output commands"_Howto_output.html.  The values
+can only be accessed on timesteps that are multiples of {Nevery}.
 
 A vector is produced if only a single input value is specified.
 An array is produced if multiple input values are specified.
diff --git a/doc/src/fix_viscosity.txt b/doc/src/fix_viscosity.txt
index f6603be624..8d73deb7c5 100644
--- a/doc/src/fix_viscosity.txt
+++ b/doc/src/fix_viscosity.txt
@@ -100,13 +100,12 @@ accurately infer a viscosity and should try increasing the Nevery
 parameter.
 
 An alternative method for calculating a viscosity is to run a NEMD
-simulation, as described in "Section
-6.13"_Section_howto.html#howto_13 of the manual.  NEMD simulations
-deform the simulation box via the "fix deform"_fix_deform.html
-command.  Thus they cannot be run on a charged system using a "PPPM
-solver"_kspace_style.html since PPPM does not currently support
-non-orthogonal boxes.  Using fix viscosity keeps the box orthogonal;
-thus it does not suffer from this limitation.
+simulation, as described on the "Howto nemd"_Howto_nemd.html doc page.
+NEMD simulations deform the simulation box via the "fix
+deform"_fix_deform.html command.  Thus they cannot be run on a charged
+system using a "PPPM solver"_kspace_style.html since PPPM does not
+currently support non-orthogonal boxes.  Using fix viscosity keeps the
+box orthogonal; thus it does not suffer from this limitation.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
@@ -115,13 +114,13 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#howto_15.  The scalar is the
-cumulative momentum transferred between the bottom and middle of the
-simulation box (in the {pdim} direction) is stored as a scalar
-quantity by this fix.  This quantity is zeroed when the fix is defined
-and accumulates thereafter, once every N steps.  The units of the
-quantity are momentum = mass*velocity.  The scalar value calculated by
-this fix is "intensive".
+"output commands"_Howto_output.html.  The scalar is the cumulative
+momentum transferred between the bottom and middle of the simulation
+box (in the {pdim} direction) is stored as a scalar quantity by this
+fix.  This quantity is zeroed when the fix is defined and accumulates
+thereafter, once every N steps.  The units of the quantity are
+momentum = mass*velocity.  The scalar value calculated by this fix is
+"intensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.  This fix is not invoked during "energy
diff --git a/doc/src/fix_viscous.txt b/doc/src/fix_viscous.txt
index 9c30e40249..7ff517aec1 100644
--- a/doc/src/fix_viscous.txt
+++ b/doc/src/fix_viscous.txt
@@ -82,9 +82,9 @@ easily be used as a thermostat.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.
 
 The "fix_modify"_fix_modify.html {respa} option is supported by this
 fix. This allows to set at which level of the "r-RESPA"_run_style.html
diff --git a/doc/src/fix_wall.txt b/doc/src/fix_wall.txt
index 959a103f02..fcd920934f 100644
--- a/doc/src/fix_wall.txt
+++ b/doc/src/fix_wall.txt
@@ -263,14 +263,14 @@ integrator the fix is adding its forces. Default is the outermost level.
 
 This fix computes a global scalar energy and a global vector of
 forces, which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  Note that the scalar energy is
-the sum of interactions with all defined walls.  If you want the
-energy on a per-wall basis, you need to use multiple fix wall
-commands.  The length of the vector is equal to the number of walls
-defined by the fix.  Each vector value is the normal force on a
-specific wall.  Note that an outward force on a wall will be a
-negative value for {lo} walls and a positive value for {hi} walls.
-The scalar and vector values calculated by this fix are "extensive".
+commands"_Howto_output.html.  Note that the scalar energy is the sum
+of interactions with all defined walls.  If you want the energy on a
+per-wall basis, you need to use multiple fix wall commands.  The
+length of the vector is equal to the number of walls defined by the
+fix.  Each vector value is the normal force on a specific wall.  Note
+that an outward force on a wall will be a negative value for {lo}
+walls and a positive value for {hi} walls.  The scalar and vector
+values calculated by this fix are "extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
diff --git a/doc/src/fix_wall_body_polygon.txt b/doc/src/fix_wall_body_polygon.txt
index 4ba16b56c7..ebd25c2bbc 100644
--- a/doc/src/fix_wall_body_polygon.txt
+++ b/doc/src/fix_wall_body_polygon.txt
@@ -43,8 +43,8 @@ particles in the group interact with the wall when they are close
 enough to touch it.  The nature of the interaction between the wall
 and the polygon particles is the same as that between the polygon
 particles themselves, which is similar to a Hookean potential.  See
-"Section 6.14"_Section_howto.html#howto_14 of the manual and the
-"body"_body.html doc page for more details on using body particles.
+the "Howto body"_Howto_body.html doc page for more details on using
+body particles.
 
 The parameters {k_n}, {c_n}, {c_t} have the same meaning and units as
 those specified with the "pair_style
@@ -83,9 +83,9 @@ to the derivative of this expression.
 
 None of the "fix_modify"_fix_modify.html options are relevant to this
 fix.  No global or per-atom quantities are stored by this fix for
-access by various "output commands"_Section_howto.html#howto_15.  No
-parameter of this fix can be used with the {start/stop} keywords of
-the "run"_run.html command.  This fix is not invoked during "energy
+access by various "output commands"_Howto_output.html.  No parameter
+of this fix can be used with the {start/stop} keywords of the
+"run"_run.html command.  This fix is not invoked during "energy
 minimization"_minimize.html.
 
 [Restrictions:]
diff --git a/doc/src/fix_wall_body_polyhedron.txt b/doc/src/fix_wall_body_polyhedron.txt
index c937cbdbbc..d3d8bc35a3 100644
--- a/doc/src/fix_wall_body_polyhedron.txt
+++ b/doc/src/fix_wall_body_polyhedron.txt
@@ -43,8 +43,8 @@ All particles in the group interact with the wall when they are close
 enough to touch it.  The nature of the interaction between the wall
 and the polygon particles is the same as that between the polygon
 particles themselves, which is similar to a Hookean potential.  See
-"Section 6.14"_Section_howto.html#howto_14 of the manual and the
-"body"_body.html doc page for more details on using body particles.
+the "Howto body"_Howto_body.html doc page for more details on using
+body particles.
 
 The parameters {k_n}, {c_n}, {c_t} have the same meaning and units as
 those specified with the "pair_style
@@ -82,9 +82,9 @@ to the derivative of this expression.
 
 None of the "fix_modify"_fix_modify.html options are relevant to this
 fix.  No global or per-atom quantities are stored by this fix for
-access by various "output commands"_Section_howto.html#howto_15.  No
-parameter of this fix can be used with the {start/stop} keywords of
-the "run"_run.html command.  This fix is not invoked during "energy
+access by various "output commands"_Howto_output.html.  No parameter
+of this fix can be used with the {start/stop} keywords of the
+"run"_run.html command.  This fix is not invoked during "energy
 minimization"_minimize.html.
 
 [Restrictions:]
diff --git a/doc/src/fix_wall_gran.txt b/doc/src/fix_wall_gran.txt
index 5f1679604e..9796c39459 100644
--- a/doc/src/fix_wall_gran.txt
+++ b/doc/src/fix_wall_gran.txt
@@ -148,9 +148,9 @@ uninterrupted fashion.
 
 None of the "fix_modify"_fix_modify.html options are relevant to this
 fix.  No global or per-atom quantities are stored by this fix for
-access by various "output commands"_Section_howto.html#howto_15.  No
-parameter of this fix can be used with the {start/stop} keywords of
-the "run"_run.html command.  This fix is not invoked during "energy
+access by various "output commands"_Howto_output.html.  No parameter
+of this fix can be used with the {start/stop} keywords of the
+"run"_run.html command.  This fix is not invoked during "energy
 minimization"_minimize.html.
 
 [Restrictions:]
diff --git a/doc/src/fix_wall_gran_region.txt b/doc/src/fix_wall_gran_region.txt
index 92fb042194..908bcc3941 100644
--- a/doc/src/fix_wall_gran_region.txt
+++ b/doc/src/fix_wall_gran_region.txt
@@ -180,9 +180,9 @@ region with a different region ID.
 
 None of the "fix_modify"_fix_modify.html options are relevant to this
 fix.  No global or per-atom quantities are stored by this fix for
-access by various "output commands"_Section_howto.html#howto_15.  No
-parameter of this fix can be used with the {start/stop} keywords of
-the "run"_run.html command.  This fix is not invoked during "energy
+access by various "output commands"_Howto_output.html.  No parameter
+of this fix can be used with the {start/stop} keywords of the
+"run"_run.html command.  This fix is not invoked during "energy
 minimization"_minimize.html.
 
 [Restrictions:]
diff --git a/doc/src/fix_wall_piston.txt b/doc/src/fix_wall_piston.txt
index 4d7756c237..26018329eb 100644
--- a/doc/src/fix_wall_piston.txt
+++ b/doc/src/fix_wall_piston.txt
@@ -91,10 +91,10 @@ define the lattice spacings.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_wall_reflect.txt b/doc/src/fix_wall_reflect.txt
index 5380bdf738..2956046e20 100644
--- a/doc/src/fix_wall_reflect.txt
+++ b/doc/src/fix_wall_reflect.txt
@@ -154,10 +154,10 @@ instructions on how to use the accelerated styles effectively.
 No information about this fix is written to "binary restart
 files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.  No global or per-atom quantities are stored
-by this fix for access by various "output
-commands"_Section_howto.html#howto_15.  No parameter of this fix can
-be used with the {start/stop} keywords of the "run"_run.html command.
-This fix is not invoked during "energy minimization"_minimize.html.
+by this fix for access by various "output commands"_Howto_output.html.
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.  This fix is not invoked during "energy
+minimization"_minimize.html.
 
 [Restrictions:]
 
diff --git a/doc/src/fix_wall_region.txt b/doc/src/fix_wall_region.txt
index 9700545dc9..8b3b3ff173 100644
--- a/doc/src/fix_wall_region.txt
+++ b/doc/src/fix_wall_region.txt
@@ -156,12 +156,11 @@ integrator the fix is adding its forces. Default is the outermost level.
 
 This fix computes a global scalar energy and a global 3-length vector
 of forces, which can be accessed by various "output
-commands"_Section_howto.html#howto_15.  The scalar energy is the sum
-of energy interactions for all particles interacting with the wall
-represented by the region surface.  The 3 vector quantities are the
-x,y,z components of the total force acting on the wall due to the
-particles.  The scalar and vector values calculated by this fix are
-"extensive".
+commands"_Howto_output.html.  The scalar energy is the sum of energy
+interactions for all particles interacting with the wall represented
+by the region surface.  The 3 vector quantities are the x,y,z
+components of the total force acting on the wall due to the particles.
+The scalar and vector values calculated by this fix are "extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
diff --git a/doc/src/fix_wall_srd.txt b/doc/src/fix_wall_srd.txt
index c465896d37..3a8c2e41cd 100644
--- a/doc/src/fix_wall_srd.txt
+++ b/doc/src/fix_wall_srd.txt
@@ -166,9 +166,9 @@ files"_restart.html.  None of the "fix_modify"_fix_modify.html options
 are relevant to this fix.
 
 This fix computes a global array of values which can be accessed by
-various "output commands"_Section_howto.html#howto_15.  The number of
-rows in the array is equal to the number of walls defined by the fix.
-The number of columns is 3, for the x,y,z components of force on each
+various "output commands"_Howto_output.html.  The number of rows in
+the array is equal to the number of walls defined by the fix.  The
+number of columns is 3, for the x,y,z components of force on each
 wall.
 
 Note that an outward normal force on a wall will be a negative value
diff --git a/doc/src/improper_umbrella.txt b/doc/src/improper_umbrella.txt
index e72cc7f0ad..59fee0a664 100644
--- a/doc/src/improper_umbrella.txt
+++ b/doc/src/improper_umbrella.txt
@@ -22,7 +22,7 @@ improper_coeff 1 100.0 180.0 :pre
 
 The {umbrella} improper style uses the following potential, which is
 commonly referred to as a classic inversion and used in the
-"DREIDING"_Section_howto.html#howto_4 force field:
+"DREIDING"_Howto_bioFF.html force field:
 
 :c,image(Eqs/improper_umbrella.jpg)
 
diff --git a/doc/src/kspace_modify.txt b/doc/src/kspace_modify.txt
index 6d27bb7076..37c8c5b1d7 100644
--- a/doc/src/kspace_modify.txt
+++ b/doc/src/kspace_modify.txt
@@ -285,15 +285,15 @@ performance and accuracy in the results is obtained when these values
 are different.
 
 The {disp/auto} option controls whether the pppm/disp is allowed to
-generate PPPM parameters automatically. If set to {no}, parameters have
-to be specified using the {gewald/disp}, {mesh/disp},
-{force/disp/real} or {force/disp/kspace} keywords, or
-the code will stop with an error message. When this option is set to
-{yes}, the error message will not appear and the simulation will start.
-For a typical application, using the automatic parameter generation
-will provide simulations that are either inaccurate or slow. Using this
-option is thus not recommended. For guidelines on how to obtain good
-parameters, see the "How-To"_Section_howto.html#howto_24 discussion.
+generate PPPM parameters automatically. If set to {no}, parameters
+have to be specified using the {gewald/disp}, {mesh/disp},
+{force/disp/real} or {force/disp/kspace} keywords, or the code will
+stop with an error message. When this option is set to {yes}, the
+error message will not appear and the simulation will start.  For a
+typical application, using the automatic parameter generation will
+provide simulations that are either inaccurate or slow. Using this
+option is thus not recommended.  For guidelines on how to obtain good
+parameters, see the "Howto dispersion"_Howto_dispersion.html doc page.
 
 [Restrictions:] none
 
diff --git a/doc/src/kspace_style.txt b/doc/src/kspace_style.txt
index 8dbb3dde49..fa717b70ef 100644
--- a/doc/src/kspace_style.txt
+++ b/doc/src/kspace_style.txt
@@ -161,15 +161,16 @@ similar to the {ewald/disp} style. The 1/r^6 capability means
 that Lennard-Jones or Buckingham potentials can be used without a cutoff,
 i.e. they become full long-range potentials.
 
-For these styles, you will possibly want to adjust the default choice of
-parameters by using the "kspace_modify"_kspace_modify.html command.
+For these styles, you will possibly want to adjust the default choice
+of parameters by using the "kspace_modify"_kspace_modify.html command.
 This can be done by either choosing the Ewald and grid parameters, or
 by specifying separate accuracies for the real and kspace
-calculations. When not making any settings, the simulation will stop with
-an error message. Further information on the influence of the parameters
-and how to choose them is described in "(Isele-Holder)"_#Isele-Holder2012,
-"(Isele-Holder2)"_#Isele-Holder2013 and the
-"How-To"_Section_howto.html#howto_24 discussion.
+calculations. When not making any settings, the simulation will stop
+with an error message. Further information on the influence of the
+parameters and how to choose them is described in
+"(Isele-Holder)"_#Isele-Holder2012,
+"(Isele-Holder2)"_#Isele-Holder2013 and the "Howto
+dispersion"_Howto_dispersion.html doc page.
 
 :line
 
diff --git a/doc/src/lammps_tutorials.txt b/doc/src/lammps_tutorials.txt
deleted file mode 100644
index 5ceda65b60..0000000000
--- a/doc/src/lammps_tutorials.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-
-Tutorials :h2
-
-The following pages contain some in-depth tutorials for
-selected topics, that did not fit into any other place
-in the manual.
diff --git a/doc/src/molecule.txt b/doc/src/molecule.txt
index cd9ecce42c..b2ad547cf0 100644
--- a/doc/src/molecule.txt
+++ b/doc/src/molecule.txt
@@ -176,9 +176,8 @@ LAMMPS uses this info to properly exclude or weight bonded pairwise
 interactions between bonded atoms.  See the
 "special_bonds"_special_bonds.html command for more details.  One
 reason to list the special bond info explicitly is for the
-"thermalized Drude oscillator model"_tutorial_drude.html which treats
-the bonds between nuclear cores and Drude electrons in a different
-manner.
+"thermalized Drude oscillator model"_Howto_drude.html which treats the
+bonds between nuclear cores and Drude electrons in a different manner.
 
 NOTE: Whether a section is required depends on how the molecule
 template is used by other LAMMPS commands.  For example, to add a
diff --git a/doc/src/neb.txt b/doc/src/neb.txt
index 56f075c301..5c6053fca0 100644
--- a/doc/src/neb.txt
+++ b/doc/src/neb.txt
@@ -56,9 +56,8 @@ Note that if you have MPI installed, you can run a multi-replica
 simulation with more replicas (partitions) than you have physical
 processors, e.g you can run a 10-replica simulation on just one or two
 processors.  You will simply not get the performance speed-up you
-would see with one or more physical processors per replica.  See
-"Section 6.5"_Section_howto.html#howto_5 of the manual for further
-discussion.
+would see with one or more physical processors per replica.  See the
+"Howto replica"_Howto_replica.html doc page for further discussion.
 
 NOTE: As explained below, a NEB calculation perfoms a damped dynamics
 minimization across all the replicas.  The minimizer uses whatever
diff --git a/doc/src/pair_body_nparticle.txt b/doc/src/pair_body_nparticle.txt
index 8c5b6e155d..78a9f2bb38 100644
--- a/doc/src/pair_body_nparticle.txt
+++ b/doc/src/pair_body_nparticle.txt
@@ -24,15 +24,14 @@ pair_coeff 1 1 1.0 1.5 2.5 :pre
 
 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.
+and point-particles.  See the "Howto body"_Howto_body.html doc page
+for more details on using body particles.
 
 This pair style is designed for use with the "nparticle" body style,
 which is specified as an argument to the "atom-style body" command.
-See the "body"_body.html doc page for more details about the body
-styles LAMMPS supports.  The "nparticle" style treats a body particle
-as a rigid body composed of N sub-particles.
+See the "Howto body"_Howto_body.html doc page for more details about
+the body styles LAMMPS supports.  The "nparticle" style treats a body
+particle as a rigid body composed of N sub-particles.
 
 The coordinates of a body particle are its center-of-mass (COM).  If
 the COMs of a pair of body particles are within the cutoff (global or
diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt
index 9daeb08e9a..19807fbe39 100644
--- a/doc/src/pair_body_rounded_polygon.txt
+++ b/doc/src/pair_body_rounded_polygon.txt
@@ -29,9 +29,8 @@ 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 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
+1-vertex circular disks with a specified diameter.  See the "Howto
+body"_Howto_body.html doc page for more details on using body
 rounded/polygon particles.
 
 This pairwise interaction between rounded polygons is described in
diff --git a/doc/src/pair_body_rounded_polyhedron.txt b/doc/src/pair_body_rounded_polyhedron.txt
index dc559feaaf..d70a86f881 100644
--- a/doc/src/pair_body_rounded_polyhedron.txt
+++ b/doc/src/pair_body_rounded_polyhedron.txt
@@ -29,9 +29,8 @@ 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 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
+1-vertex spheres with a specified diameter.  See the "Howto
+body"_Howto_body.html doc page for more details on using body
 rounded/polyhedron particles.
 
 This pairwise interaction between the rounded polyhedra is described
diff --git a/doc/src/pair_born.txt b/doc/src/pair_born.txt
index 2504fb7e25..143549cf2d 100644
--- a/doc/src/pair_born.txt
+++ b/doc/src/pair_born.txt
@@ -108,10 +108,10 @@ The {born/coul/dsf} style computes the Coulomb contribution with the
 damped shifted force model as in the "coul/dsf"_pair_coul.html style.
 
 Style {born/coul/long/cs} is identical to {born/coul/long} except that
-a term is added for the "core/shell model"_Section_howto.html#howto_25
-to allow charges on core and shell particles to be separated by r =
-0.0.  The same correction is introduced for the {born/coul/dsf/cs}
-style which is identical to {born/coul/dsf}.  And likewise for
+a term is added for the "core/shell model"_Howto_coreshell.html to
+allow charges on core and shell particles to be separated by r = 0.0.
+The same correction is introduced for the {born/coul/dsf/cs} style
+which is identical to {born/coul/dsf}.  And likewise for
 {born/coul/wolf/cs} style which is identical to {born/coul/wolf}.
 
 Note that these potentials are related to the "Buckingham
diff --git a/doc/src/pair_buck.txt b/doc/src/pair_buck.txt
index de247b9c01..2483a6c9e2 100644
--- a/doc/src/pair_buck.txt
+++ b/doc/src/pair_buck.txt
@@ -93,9 +93,8 @@ used as the cutoff for the A,C terms, and the second is the cutoff for
 the Coulombic term.
 
 Style {buck/coul/long/cs} is identical to {buck/coul/long} except that
-a term is added for the "core/shell model"_Section_howto.html#howto_25
-to allow charges on core and shell particles to be separated by r =
-0.0.
+a term is added for the "core/shell model"_Howto_coreshell.html to
+allow charges on core and shell particles to be separated by r = 0.0.
 
 Note that these potentials are related to the "Born-Mayer-Huggins
 potential"_pair_born.html.
diff --git a/doc/src/pair_coul.txt b/doc/src/pair_coul.txt
index 650575d055..e2bc78a2e6 100644
--- a/doc/src/pair_coul.txt
+++ b/doc/src/pair_coul.txt
@@ -205,9 +205,9 @@ pairwise interactions within this distance are computed directly;
 interactions outside that distance are computed in reciprocal space.
 
 Style {coul/long/cs} is identical to {coul/long} except that a term is
-added for the "core/shell model"_Section_howto.html#howto_25 to allow
-charges on core and shell particles to be separated by r = 0.0.  The
-same correction is introduced for the {coul/wolf/cs} style which is
+added for the "core/shell model"_Howto_coreshell.html to allow charges
+on core and shell particles to be separated by r = 0.0.  The same
+correction is introduced for the {coul/wolf/cs} style which is
 identical to {coul/wolf}.
 
 Styles {tip4p/cut} and {tip4p/long} implement the coulomb part of
@@ -226,16 +226,16 @@ is to enable LAMMPS to "find" the 2 H atoms associated with each O
 atom.  For example, if the atom ID of an O atom in a TIP4P water
 molecule is 500, then its 2 H atoms must have IDs 501 and 502.
 
-See the "howto section"_Section_howto.html#howto_8 for more
-information on how to use the TIP4P pair styles and lists of
-parameters to set.  Note that the neighbor list cutoff for Coulomb
-interactions is effectively extended by a distance 2*qdist when using
-the TIP4P pair style, to account for the offset distance of the
-fictitious charges on O atoms in water molecules.  Thus it is
-typically best in an efficiency sense to use a LJ cutoff >= Coulomb
-cutoff + 2*qdist, to shrink the size of the neighbor list.  This leads
-to slightly larger cost for the long-range calculation, so you can
-test the trade-off for your model.
+See the "Howto tip4p"_Howto_tip4p.html doc page for more information
+on how to use the TIP4P pair styles and lists of parameters to set.
+Note that the neighbor list cutoff for Coulomb interactions is
+effectively extended by a distance 2*qdist when using the TIP4P pair
+style, to account for the offset distance of the fictitious charges on
+O atoms in water molecules.  Thus it is typically best in an
+efficiency sense to use a LJ cutoff >= Coulomb cutoff + 2*qdist, to
+shrink the size of the neighbor list.  This leads to slightly larger
+cost for the long-range calculation, so you can test the trade-off for
+your model.
 
 :line
 
diff --git a/doc/src/pair_cs.txt b/doc/src/pair_cs.txt
index c1084c6087..86eb02b0d7 100644
--- a/doc/src/pair_cs.txt
+++ b/doc/src/pair_cs.txt
@@ -54,8 +54,8 @@ pair_coeff 1 1 480.0 0.25 0.00 1.05 0.50 :pre
 
 These pair styles are designed to be used with the adiabatic
 core/shell model of "(Mitchell and Finchham)"_#MitchellFinchham2.  See
-"Section 6.25"_Section_howto.html#howto_25 of the manual for an
-overview of the model as implemented in LAMMPS.
+the "Howto coreshell"_Howto_coreshell.html doc page for an overview of
+the model as implemented in LAMMPS.
 
 The styles with a {coul/long} term are identical to the "pair_style
 born/coul/long"_pair_born.html and "pair_style
diff --git a/doc/src/pair_hbond_dreiding.txt b/doc/src/pair_hbond_dreiding.txt
index 45f852c254..d641cb73ad 100644
--- a/doc/src/pair_hbond_dreiding.txt
+++ b/doc/src/pair_hbond_dreiding.txt
@@ -33,8 +33,8 @@ pair_coeff 1 2 hbond/dreiding/morse 3 i 3.88 1.7241379 2.9 2 9 11 90 :pre
 [Description:]
 
 The {hbond/dreiding} styles compute the Acceptor-Hydrogen-Donor (AHD)
-3-body hydrogen bond interaction for the
-"DREIDING"_Section_howto.html#howto_4 force field, given by:
+3-body hydrogen bond interaction for the "DREIDING"_Howto_bioFF.html
+force field, given by:
 
 :c,image(Eqs/pair_hbond_dreiding.jpg)
 
@@ -65,8 +65,8 @@ potential for the Donor-Acceptor interactions. "(Liu)"_#Liu showed
 that the Morse form gives improved results for Dendrimer simulations,
 when n = 2.
 
-See this "howto section"_Section_howto.html#howto_4 of the manual for
-more information on the DREIDING forcefield.
+See the "Howto bioFF"_Howto_bioFF.html doc page for more information
+on the DREIDING forcefield.
 
 NOTE: Because the Dreiding hydrogen bond potential is only one portion
 of an overall force field which typically includes other pairwise
diff --git a/doc/src/pair_lj.txt b/doc/src/pair_lj.txt
index c2968ffdf3..a0f7effbb1 100644
--- a/doc/src/pair_lj.txt
+++ b/doc/src/pair_lj.txt
@@ -185,9 +185,9 @@ distance are computed directly; interactions outside that distance are
 computed in reciprocal space.
 
 Style {lj/cut/coul/long/cs} is identical to {lj/cut/coul/long} except
-that a term is added for the "core/shell
-model"_Section_howto.html#howto_25 to allow charges on core and shell
-particles to be separated by r = 0.0.
+that a term is added for the "core/shell model"_Howto_coreshell.html
+to allow charges on core and shell particles to be separated by r =
+0.0.
 
 Style {coul/wolf} adds a Coulombic pairwise interaction via the Wolf
 summation method, described in "Wolf"_#Wolf1, given by:
@@ -223,16 +223,16 @@ is to enable LAMMPS to "find" the 2 H atoms associated with each O
 atom.  For example, if the atom ID of an O atom in a TIP4P water
 molecule is 500, then its 2 H atoms must have IDs 501 and 502.
 
-See the "howto section"_Section_howto.html#howto_8 for more
-information on how to use the TIP4P pair styles and lists of
-parameters to set.  Note that the neighbor list cutoff for Coulomb
-interactions is effectively extended by a distance 2*qdist when using
-the TIP4P pair style, to account for the offset distance of the
-fictitious charges on O atoms in water molecules.  Thus it is
-typically best in an efficiency sense to use a LJ cutoff >= Coulomb
-cutoff + 2*qdist, to shrink the size of the neighbor list.  This leads
-to slightly larger cost for the long-range calculation, so you can
-test the trade-off for your model.
+See the "Howto tip4p"_Howto_tip4p.html doc page for more information
+on how to use the TIP4P pair styles and lists of parameters to set.
+Note that the neighbor list cutoff for Coulomb interactions is
+effectively extended by a distance 2*qdist when using the TIP4P pair
+style, to account for the offset distance of the fictitious charges on
+O atoms in water molecules.  Thus it is typically best in an
+efficiency sense to use a LJ cutoff >= Coulomb cutoff + 2*qdist, to
+shrink the size of the neighbor list.  This leads to slightly larger
+cost for the long-range calculation, so you can test the trade-off for
+your model.
 
 For all of the {lj/cut} pair styles, the following coefficients must
 be defined for each pair of atoms types via the
diff --git a/doc/src/pair_lj_long.txt b/doc/src/pair_lj_long.txt
index bc851adb74..0dd55b7e32 100644
--- a/doc/src/pair_lj_long.txt
+++ b/doc/src/pair_lj_long.txt
@@ -90,7 +90,7 @@ is to enable LAMMPS to "find" the 2 H atoms associated with each O
 atom.  For example, if the atom ID of an O atom in a TIP4P water
 molecule is 500, then its 2 H atoms must have IDs 501 and 502.
 
-See the "howto section"_Section_howto.html#howto_8 for more
+See the the "Howto tip4p"_Howto_tip4p.html doc page for more
 information on how to use the TIP4P pair style.  Note that the
 neighbor list cutoff for Coulomb interactions is effectively extended
 by a distance 2*qdist when using the TIP4P pair style, to account for
diff --git a/doc/src/pair_thole.txt b/doc/src/pair_thole.txt
index 11d4b85cff..42c58e9882 100644
--- a/doc/src/pair_thole.txt
+++ b/doc/src/pair_thole.txt
@@ -45,8 +45,8 @@ pair_style lj/cut/thole/long 2.6 12.0 :pre
 The {thole} pair styles are meant to be used with force fields that
 include explicit polarization through Drude dipoles.  This link
 describes how to use the "thermalized Drude oscillator
-model"_tutorial_drude.html in LAMMPS and polarizable models in LAMMPS
-are discussed in "this Section"_Section_howto.html#howto_25.
+model"_Howto_drude.html in LAMMPS and polarizable models in LAMMPS are
+discussed on the "Howto polarizable"_Howto_polarizable.html doc page.
 
 The {thole} pair style should be used as a sub-style within in the
 "pair_hybrid/overlay"_pair_hybrid.html command, in conjunction with a
diff --git a/doc/src/prd.txt b/doc/src/prd.txt
index 3c0305e316..f298d83385 100644
--- a/doc/src/prd.txt
+++ b/doc/src/prd.txt
@@ -69,8 +69,8 @@ simulation with more replicas (partitions) than you have physical
 processors, e.g you can run a 10-replica simulation on one or two
 processors.  However for PRD, this makes little sense, since running a
 replica on virtual instead of physical processors,offers no effective
-parallel speed-up in searching for infrequent events.  See "Section
-6.5"_Section_howto.html#howto_5 of the manual for further discussion.
+parallel speed-up in searching for infrequent events.  See the "Howto
+replica"_Howto_replica.html doc page for further discussion.
 
 When a PRD simulation is performed, it is assumed that each replica is
 running the same model, though LAMMPS does not check for this.
diff --git a/doc/src/read_data.txt b/doc/src/read_data.txt
index fd297e36c1..4f6a3988b9 100644
--- a/doc/src/read_data.txt
+++ b/doc/src/read_data.txt
@@ -322,9 +322,9 @@ with tilt factors that exceed these limits, you can use the "box
 tilt"_box.html command, with a setting of {large}; a setting of
 {small} is the default.
 
-See "Section 6.12"_Section_howto.html#howto_12 of the doc pages
-for a geometric description of triclinic boxes, as defined by LAMMPS,
-and how to transform these parameters to and from other commonly used
+See the "Howto triclinic"_Howto_triclinic.html doc page for a
+geometric description of triclinic boxes, as defined by LAMMPS, and
+how to transform these parameters to and from other commonly used
 triclinic representations.
 
 When a triclinic system is used, the simulation domain should normally
@@ -772,9 +772,9 @@ the "bodies" keyword.
 
 Each body can have a variable number of integer and/or floating-point
 values.  The number and meaning of the values is defined by the body
-style, as described in the "body"_body.html doc page.  The body style
-is given as an argument to the "atom_style body"_atom_style.html
-command.
+style, as described in the "Howto body"_Howto_body.html doc page.  The
+body style is given as an argument to the "atom_style
+body"_atom_style.html command.
 
 The Ninteger and Ndouble values determine how many integer and
 floating-point values are specified for this particle.  Ninteger and
diff --git a/doc/src/region.txt b/doc/src/region.txt
index 1ac3861e67..b32c09ed6f 100644
--- a/doc/src/region.txt
+++ b/doc/src/region.txt
@@ -186,9 +186,9 @@ functions, and include "thermo_style"_thermo_style.html command
 keywords for the simulation box parameters and timestep and elapsed
 time.  Thus it is easy to specify a time-dependent radius.
 
-See "Section 6.12"_Section_howto.html#howto_12 of the doc pages
-for a geometric description of triclinic boxes, as defined by LAMMPS,
-and how to transform these parameters to and from other commonly used
+See the "Howto tricilinc"_Howto_triclinic.html doc page for a
+geometric description of triclinic boxes, as defined by LAMMPS, and
+how to transform these parameters to and from other commonly used
 triclinic representations.
 
 The {union} style creates a region consisting of the volume of all the
diff --git a/doc/src/run.txt b/doc/src/run.txt
index 913d81bb4d..02860c0b97 100644
--- a/doc/src/run.txt
+++ b/doc/src/run.txt
@@ -127,9 +127,9 @@ be redefined, e.g. to reset a thermostat temperature.  Or this could
 be useful for invoking a command you have added to LAMMPS that wraps
 some other code (e.g. as a library) to perform a computation
 periodically during a long LAMMPS run.  See the "Modify"_Modify.html
-doc page for info about how to add new commands to LAMMPS.  See "this
-section"_Section_howto.html#howto_10 of the documentation for ideas
-about how to couple LAMMPS to other codes.
+doc page for info about how to add new commands to LAMMPS.  See the
+"Howto couple"_Howto_couple.html doc page for ideas about how to
+couple LAMMPS to other codes.
 
 With the {every} option, N total steps are simulated, in shorter runs
 of M steps each.  After each M-length run, the specified commands are
diff --git a/doc/src/tad.txt b/doc/src/tad.txt
index f5e7c6d653..9ffa24d012 100644
--- a/doc/src/tad.txt
+++ b/doc/src/tad.txt
@@ -92,9 +92,8 @@ restricts you to having exactly one processor per replica. For more
 information, see the documentation for the "neb"_neb.html command.  In
 the current LAMMPS implementation of TAD, all the non-NEB TAD
 operations are performed on the first partition, while the other
-partitions remain idle. See "Section
-6.5"_Section_howto.html#howto_5 of the manual for further discussion of
-multi-replica simulations.
+partitions remain idle. See the "Howto replica"_Howto_replica.html doc
+page for further discussion of multi-replica simulations.
 
 A TAD run has several stages, which are repeated each time an event is
 performed.  The logic for a TAD run is as follows:
diff --git a/doc/src/temper.txt b/doc/src/temper.txt
index b1c47c8076..e65f59ebed 100644
--- a/doc/src/temper.txt
+++ b/doc/src/temper.txt
@@ -32,14 +32,13 @@ replicas (ensembles) of a system.  Two or more replicas must be used.
 
 Each replica runs on a partition of one or more processors.  Processor
 partitions are defined at run-time using the -partition command-line
-switch; see "Section 2.6"_Section_start.html#start_6 of the
-manual.  Note that if you have MPI installed, you can run a
-multi-replica simulation with more replicas (partitions) than you have
-physical processors, e.g you can run a 10-replica simulation on one or
-two processors.  You will simply not get the performance speed-up you
-would see with one or more physical processors per replica.  See "this
-section"_Section_howto.html#howto_5 of the manual for further
-discussion.
+switch; see "Section 2.6"_Section_start.html#start_6 of the manual.
+Note that if you have MPI installed, you can run a multi-replica
+simulation with more replicas (partitions) than you have physical
+processors, e.g you can run a 10-replica simulation on one or two
+processors.  You will simply not get the performance speed-up you
+would see with one or more physical processors per replica.  See the
+"Howto replica"_Howto_replica.html doc page for further discussion.
 
 Each replica's temperature is controlled at a different value by a fix
 with {fix-ID} that controls temperature. Most thermostat fix styles
diff --git a/doc/src/thermo_style.txt b/doc/src/thermo_style.txt
index 18c5ad5ba1..64e0785586 100644
--- a/doc/src/thermo_style.txt
+++ b/doc/src/thermo_style.txt
@@ -286,11 +286,11 @@ takes place.
 
 The keywords {cella}, {cellb}, {cellc}, {cellalpha}, {cellbeta},
 {cellgamma}, correspond to the usual crystallographic quantities that
-define the periodic unit cell of a crystal.  See "this
-section"_Section_howto.html#howto_12 of the doc pages for a geometric
-description of triclinic periodic cells, including a precise definition
-of these quantities in terms of the internal LAMMPS cell dimensions
-{lx}, {ly}, {lz}, {yz}, {xz}, {xy}.
+define the periodic unit cell of a crystal.  See the "Howto
+triclinic"_Howto_triclinic.html doc page for a geometric description
+of triclinic periodic cells, including a precise definition of these
+quantities in terms of the internal LAMMPS cell dimensions {lx}, {ly},
+{lz}, {yz}, {xz}, {xy}.
 
 :line
 
diff --git a/doc/src/tutorials.txt b/doc/src/tutorials.txt
deleted file mode 100644
index 338439ac8e..0000000000
--- a/doc/src/tutorials.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-Tutorials :h1
-
-<!-- RST
-
-.. toctree::
-   :maxdepth: 1
-
-   tutorial_drude
-   tutorial_github
-   tutorial_pylammps
-   tutorial_bash_on_windows
-   body
-   manifolds
-
-END_RST -->
diff --git a/doc/src/velocity.txt b/doc/src/velocity.txt
index b8299a5acf..057f0054be 100644
--- a/doc/src/velocity.txt
+++ b/doc/src/velocity.txt
@@ -139,10 +139,9 @@ if rot = yes, the angular momentum is zeroed.
 If specified, the {temp} keyword is used by {create} and {scale} to
 specify a "compute"_compute.html that calculates temperature in a
 desired way, e.g. by first subtracting out a velocity bias, as
-discussed in "Section 6.16"_Section_howto.html#howto_16 of the doc
-pages.  If this keyword is not specified, {create} and {scale}
-calculate temperature using a compute that is defined internally as
-follows:
+discussed on the "Howto thermostat"_Howto_thermostat.html doc page.
+If this keyword is not specified, {create} and {scale} calculate
+temperature using a compute that is defined internally as follows:
 
 compute velocity_temp group-ID temp :pre
 
@@ -161,11 +160,11 @@ The {bias} keyword with a {yes} setting is used by {create} and
 If the temperature compute also calculates a velocity bias, the the
 bias is subtracted from atom velocities before the {create} and
 {scale} operations are performed.  After the operations, the bias is
-added back to the atom velocities.  See "Section
-6.16"_Section_howto.html#howto_16 of the doc pages for more discussion
-of temperature computes with biases.  Note that the velocity bias is
-only applied to atoms in the temperature compute specified with the
-{temp} keyword.
+added back to the atom velocities.  See the "Howto
+thermostat"_Howto_thermostat.html doc page for more discussion of
+temperature computes with biases.  Note that the velocity bias is only
+applied to atoms in the temperature compute specified with the {temp}
+keyword.
 
 As an example, assume atoms are currently streaming in a flow
 direction (which could be separately initialized with the {ramp}
-- 
GitLab


From c8be5a3f2d9258a5390e78b4c68a2a842bbf34a9 Mon Sep 17 00:00:00 2001
From: Michael King <michael.king@uni-konstanz.de>
Date: Wed, 1 Aug 2018 11:11:18 +0200
Subject: [PATCH 133/243] change ave/histo to ave/histo/weight

---
 examples/USER/diffraction/BulkNi.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/examples/USER/diffraction/BulkNi.in b/examples/USER/diffraction/BulkNi.in
index a18163175c..0fa9c1b74c 100644
--- a/examples/USER/diffraction/BulkNi.in
+++ b/examples/USER/diffraction/BulkNi.in
@@ -20,7 +20,7 @@ compute         XRD all xrd  1.541838 Ni 2Theta 40 80 c 2 2 2 LP 1 echo
 compute         SAED all saed 0.0251  Ni Kmax 0.85 Zone 1 0 0 c 0.025 0.025 0.025  &
                 dR_Ewald 0.05 echo manual
 
-fix             1 all ave/histo 1 1 1 40 80 200 c_XRD[1] c_XRD[2] &
+fix             1 all ave/histo/weight 1 1 1 40 80 200 c_XRD[1] c_XRD[2] &
                 mode vector file $A.hist.xrd
 
 fix             2 all saed/vtk 1 1 1 c_SAED file $A_001.saed 
-- 
GitLab


From 42948b60ee7ef0cf8028d938ec594e42071e08db Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Wed, 1 Aug 2018 14:37:03 +0200
Subject: [PATCH 134/243] corrections for broken links in the html docs

---
 doc/src/Section_howto.txt | 4 ++--
 doc/src/fixes.txt         | 2 ++
 doc/src/pairs.txt         | 3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/doc/src/Section_howto.txt b/doc/src/Section_howto.txt
index f929d3bdab..337880ccee 100644
--- a/doc/src/Section_howto.txt
+++ b/doc/src/Section_howto.txt
@@ -1158,7 +1158,7 @@ styles"_pair_style.html that generate torque:
 "pair_style lubricate"_pair_lubricate.html
 "pair_style line/lj"_pair_line_lj.html
 "pair_style tri/lj"_pair_tri_lj.html
-"pair_style body"_pair_body.html :ul
+"pair_style body"_pair_body_nparticle.html :ul
 
 The granular pair styles are used with spherical particles.  The
 dipole pair style is used with the dipole atom style, which could be
@@ -1269,7 +1269,7 @@ list of sub-particles.  Individual body partices are typically treated
 as rigid bodies, and their motion integrated with a command like "fix
 nve/body"_fix_nve_body.html.  Interactions between pairs of body
 particles are computed via a command like "pair_style
-body"_pair_body.html.
+body"_pair_body_nparticle.html.
 
 :line
 
diff --git a/doc/src/fixes.txt b/doc/src/fixes.txt
index 9510217d02..7a45ed8086 100644
--- a/doc/src/fixes.txt
+++ b/doc/src/fixes.txt
@@ -168,6 +168,8 @@ Fixes :h1
    fix_viscosity
    fix_viscous
    fix_wall
+   fix_wall_body_polygon
+   fix_wall_body_polyhedron
    fix_wall_ees
    fix_wall_gran
    fix_wall_gran_region
diff --git a/doc/src/pairs.txt b/doc/src/pairs.txt
index 1a5e98a109..4c3eef2cd1 100644
--- a/doc/src/pairs.txt
+++ b/doc/src/pairs.txt
@@ -10,8 +10,9 @@ Pair Styles :h1
    pair_airebo
    pair_awpmd
    pair_beck
-   pair_body
+   pair_body_nparticle
    pair_body_rounded_polygon
+   pair_body_rounded_polyhedron
    pair_bop
    pair_born
    pair_brownian
-- 
GitLab


From d598e7c60efa5f04e98d7ec0523c3db8a356d209 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Wed, 1 Aug 2018 15:54:46 +0200
Subject: [PATCH 135/243] rename preprocessor guard to prevent multiple
 inclusion to be consistent with file name

---
 src/MANYBODY/pair_eam_cd.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/MANYBODY/pair_eam_cd.h b/src/MANYBODY/pair_eam_cd.h
index 15486aed6d..ee84fb09c5 100644
--- a/src/MANYBODY/pair_eam_cd.h
+++ b/src/MANYBODY/pair_eam_cd.h
@@ -18,8 +18,8 @@ PairStyle(eam/cd/old,PairEAMCD_TwoSite)
 
 #else
 
-#ifndef LMP_PAIR_CDEAM_H
-#define LMP_PAIR_CDEAM_H
+#ifndef LMP_PAIR_EAM_CD_H
+#define LMP_PAIR_EAM_CD_H
 
 #include "pair_eam_alloy.h"
 
-- 
GitLab


From 4faeda28ee23ee5505d54bb881c299e6bb38e651 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 2 Aug 2018 06:38:25 -0400
Subject: [PATCH 136/243] allow cross-compiling from linux to windows with
 cmake

---
 cmake/CMakeLists.txt | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index d51108ba7a..f4d3cac5d2 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -138,8 +138,11 @@ set_property(CACHE LAMMPS_SIZE_LIMIT PROPERTY STRINGS LAMMPS_SMALLBIG LAMMPS_BIG
 add_definitions(-D${LAMMPS_SIZE_LIMIT})
 set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -D${LAMMPS_SIZE_LIMIT}")
 
-set(LAMMPS_MEMALIGN "64" CACHE STRING "enables the use of the posix_memalign() call instead of malloc() when large chunks or memory are allocated by LAMMPS")
-add_definitions(-DLAMMPS_MEMALIGN=${LAMMPS_MEMALIGN})
+# posix_memalign is not available on Windows
+if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
+  set(LAMMPS_MEMALIGN "64" CACHE STRING "enables the use of the posix_memalign() call instead of malloc() when large chunks or memory are allocated by LAMMPS")
+  add_definitions(-DLAMMPS_MEMALIGN=${LAMMPS_MEMALIGN})
+endif()
 
 option(LAMMPS_EXCEPTIONS "enable the use of C++ exceptions for error messages (useful for library interface)" OFF)
 if(LAMMPS_EXCEPTIONS)
@@ -467,6 +470,11 @@ if(PKG_COMPRESS)
   list(APPEND LAMMPS_LINK_LIBS ${ZLIB_LIBRARIES})
 endif()
 
+# the windows version of LAMMPS requires a couple extra libraries
+if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
+  list(APPEND LAMMPS_LINK_LIBS -lwsock32 -lpsapi)
+endif()
+
 ########################################################################
 # Basic system tests (standard libraries, headers, functions, types)   #
 ########################################################################
@@ -626,6 +634,10 @@ if(PKG_USER-OMP)
 
     # manually add package dependent source files from USER-OMP that do not provide styles
 
+    if(PKG_ASPHERE)
+      list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_nh_asphere_omp.cpp)
+    endif()
+
     if(PKG_RIGID)
       list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_rigid_nh_omp.cpp)
     endif()
-- 
GitLab


From fb03924e83ed2b78b7bacf4f350fb6e1d67fcd87 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Thu, 2 Aug 2018 11:12:57 -0600
Subject: [PATCH 137/243] patch 2Aug18

---
 doc/src/Manual.txt | 4 ++--
 src/version.h      | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index 31b8a6a1d4..fd31c83c01 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -1,7 +1,7 @@
 <!-- HTML_ONLY -->
 <
 <TITLE>LAMMPS Users Manual</TITLE>
-<META NAME="docnumber" CONTENT="16 Jul 2018 version">
+<META NAME="docnumber" CONTENT="2 Aug 2018 version">
 <META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
 <META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
 </HEAD>
@@ -19,7 +19,7 @@
 :line
 
 LAMMPS Documentation :c,h1
-16 Jul 2018 version :c,h2
+2 Aug 2018 version :c,h2
 
 Version info: :h3
 
diff --git a/src/version.h b/src/version.h
index 90a21631d9..b95c259dd6 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1 +1 @@
-#define LAMMPS_VERSION "16 Jul 2018"
+#define LAMMPS_VERSION "2 Aug 2018"
-- 
GitLab


From c105e21a736f7dbccb1056cc0e0448b9e1dc2865 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Thu, 2 Aug 2018 13:58:25 -0600
Subject: [PATCH 138/243] more mods to Intro section

---
 doc/src/Intro.txt             |  58 +++---
 doc/src/Intro_authors.txt     | 379 ++++++++++++++++++++++++++++++++++
 doc/src/Intro_features.txt    | 202 ++++++++++++++++++
 doc/src/Intro_nonfeatures.txt |  83 ++++++++
 doc/src/Intro_opensource.txt  |  44 ++++
 doc/src/Intro_overview.txt    |  59 ++++++
 doc/src/Intro_website.txt     |  42 ++++
 doc/src/Manual.txt            |  23 ++-
 8 files changed, 848 insertions(+), 42 deletions(-)
 create mode 100644 doc/src/Intro_authors.txt
 create mode 100644 doc/src/Intro_features.txt
 create mode 100644 doc/src/Intro_nonfeatures.txt
 create mode 100644 doc/src/Intro_opensource.txt
 create mode 100644 doc/src/Intro_overview.txt
 create mode 100644 doc/src/Intro_website.txt

diff --git a/doc/src/Intro.txt b/doc/src/Intro.txt
index a634799721..e3eaa40437 100644
--- a/doc/src/Intro.txt
+++ b/doc/src/Intro.txt
@@ -1,6 +1,6 @@
 "Previous Section"_Manual.html - "LAMMPS WWW Site"_lws -
 "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Section_start.html :c
+Section"_Install.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
@@ -10,34 +10,28 @@ Section"_Section_start.html :c
 
 Introduction :h2
 
-The "LAMMPS website"_lws is the best introduction to LAMMPS.
-
-Here is a list of webpages you can browse:
-
-"Brief intro and significant recent features"_lws
-"List of features"_http://lammps.sandia.gov/features.html
-"List of non-features"_http://lammps.sandia.gov/non_features.html
-"Recent bug fixes and new features"_http://lammps.sandia.gov/bug.html :ul
-
-"Download info"_http://lammps.sandia.gov/download.html
-"GitHub site"_https://github.com/lammps/lammps
-"SourceForge site"_https://sourceforge.net/projects/lammps
-"Open source and licensing info"_http://lammps.sandia.gov/open_source.html :ul
-
-"Glossary of MD terms relevant to LAMMPS"_http://lammps.sandia.gov/glossary.html
-"LAMMPS highlights with images"_http://lammps.sandia.gov/pictures.html
-"LAMMPS highlights with movies"_http://lammps.sandia.gov/movies.html
-"Mail list"_http://lammps.sandia.gov/mail.html
-"Workshops"_http://lammps.sandia.gov/workshops.html
-"Tutorials"_http://lammps.sandia.gov/tutorials.html
-"Developer guide"_http://lammps.sandia.gov/Developer.pdf :ul
-
-"Pre- and post-processing tools for LAMMPS"_http://lammps.sandia.gov/prepost.html
-"Other software usable with LAMMPS"_http://lammps.sandia.gov/offsite.html
-"Viz tools usable with LAMMPS"_http://lammps.sandia.gov/viz.html :ul
-
-"Benchmark performance"_http://lammps.sandia.gov/bench.html
-"Publications that have cited LAMMPS"_http://lammps.sandia.gov/papers.html
-"Authors of the LAMMPS code"_http://lammps.sandia.gov/authors.html
-"History of LAMMPS development"_http://lammps.sandia.gov/history.html
-"Funding for LAMMPS"_http://lammps.sandia.gov/funding.html :ul
+These pages provide a brief introduction to LAMMPS.
+
+<!-- RST
+
+.. toctree::
+
+   Intro_overview
+   Intro_features
+   Intro_nonfeatures
+   Intro_opensource
+   Intro_authors
+   Intro_website
+
+END_RST -->
+
+<!-- HTML_ONLY -->
+
+"Overview of LAMMPS"_Intro_overview.html
+"LAMMPS features"_Intro_features.html
+"LAMMPS non-features"_Intro_nonfeatures.html
+"LAMMPS open-source license"_Intro_license.html
+"LAMMPS authors"_Intro_authors.html
+"Additional website links"_Intro_website.html :all(b)
+
+<!-- END_HTML_ONLY -->
diff --git a/doc/src/Intro_authors.txt b/doc/src/Intro_authors.txt
new file mode 100644
index 0000000000..96b4b861ca
--- /dev/null
+++ b/doc/src/Intro_authors.txt
@@ -0,0 +1,379 @@
+"Higher level section"_Intro.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+LAMMPS authors :h3
+
+The primary LAMMPS developers are at Sandia National Labs and Temple
+University:
+
+"Steve Plimpton"_sjp, sjplimp at sandia.gov
+Aidan Thompson, athomps at sandia.gov
+Stan Moore, stamoor at sandia.gov
+Axel Kohlmeyer, akohlmey at gmail.com :ul
+
+:link(sjp,http://www.cs.sandia.gov/~sjplimp)
+
+Past developers include Paul Crozier and Mark Stevens, both at Sandia,
+and Ray Shan, now at Materials Design.
+
+:line
+
+The following folks are responsible for significant contributions to
+the code, or other aspects of the LAMMPS development effort.  Many of
+the packages they have written are somewhat unique to LAMMPS and the
+code would not be as general-purpose as it is without their expertise
+and efforts.
+
+Axel Kohlmeyer (Temple U), akohlmey at gmail.com, SVN and Git repositories, indefatigable mail list responder, USER-CG-CMM, USER-OMP, USER-COLVARS, USER-MOLFILE, USER-QMMM packages
+Roy Pollock (LLNL), Ewald and PPPM solvers
+Mike Brown (ORNL), brownw at ornl.gov, GPU and USER-INTEL packages
+Greg Wagner (Sandia), gjwagne at sandia.gov, MEAM package for MEAM potential
+Mike Parks (Sandia), mlparks at sandia.gov, PERI package for Peridynamics
+Rudra Mukherjee (JPL), Rudranarayan.M.Mukherjee at jpl.nasa.gov, POEMS package for articulated rigid body motion
+Reese Jones (Sandia) and collaborators, rjones at sandia.gov, USER-ATC package for atom/continuum coupling
+Ilya Valuev (JIHT), valuev at physik.hu-berlin.de, USER-AWPMD package for wave-packet MD
+Christian Trott (U Tech Ilmenau), christian.trott at tu-ilmenau.de, USER-CUDA and KOKKOS packages
+Andres Jaramillo-Botero (Caltech), ajaramil at wag.caltech.edu, USER-EFF package for electron force field
+Christoph Kloss (JKU), Christoph.Kloss at jku.at, USER-LIGGGHTS package for granular models and granular/fluid coupling
+Metin Aktulga (LBL), hmaktulga at lbl.gov, USER-REAXC package for C version of ReaxFF
+Georg Gunzenmueller (EMI), georg.ganzenmueller at emi.fhg.de, USER-SMD and USER-SPH packages
+Colin Denniston (U Western Ontario), cdennist at uwo.ca, USER-LB package :ul
+
+:line
+
+As discussed on the "History
+page"_http://lammps.sandia.gov/history.html of the website, LAMMPS
+originated as a cooperative project between DOE labs and industrial
+partners.  Folks involved in the design and testing of the original
+version of LAMMPS were the following:
+    
+John Carpenter (Mayo Clinic, formerly at Cray Research)
+Terry Stouch (Lexicon Pharmaceuticals, formerly at Bristol Myers Squibb)
+Steve Lustig (Dupont)
+Jim Belak and Roy Pollock (LLNL) :ul
+
+:line
+:line
+
+Here is a timeline for when various individuals contributed to a new
+feature or command or tool added to LAMMPS:
+
+Jul18 : DEM polygonal and polyhedron particles : Trung Nguyen (Northwestern U)
+Jun18 : SPIN package : Julien Tranchida (Sandia and CEA)
+Jun18 : compute entropy/atom : Pablo Piaggi (EPLF, Switzerland)
+May18 : fix bond/react : Jake Gissinger (CU Boulder)
+Apr18 : USER-BOCS package : Nicholas Dunn and Michael DeLyser (Penn State U)
+Mar18: pair coul/shield, kolmogorov/crespi/full, ilp/graphene/hbn : Wengen Ouyang (Tel Aviv U) 
+Feb18 : pair lj/cut/coul/wolf : Vishal Boddu (U of Erlangen-Nuremberg)
+Feb18 : USER-MOFFF package : Hendrik Heenen (Technical U of Munich) and Rochus Schmid (Ruhr-University Bochum)
+Feb18 : pair ufm : Rodolfo Paula Leite and Maurice de Koning (Unicamp/Brazil)
+Dec17 : fix python/move : Richard Berger (Temple U)
+Nov17 : pair extep : Jaap Kroes (Radboud U)
+Oct17 : USER-UEF package : David Nicholson (MIT)
+Oct17 : fix rhok : Ulf Pederson (Roskilde U)
+Oct17 : bond gromos : Axel Kohlmeyer (Temple U)
+Oct17 : pair born/coul/wolf/cs and coul/wolf/cs : Vishal Boddu
+Sep17 : fix latte : Christian Negre (LANL)
+Sep17 : temper_npt : Amulya Pervaje and Cody Addington (NCSU)
+Aug17 : USER-MESO package : Zhen Li (Brown University)
+Aug17 : compute aggregate/atom & fragment/atom : Axel Kohlmeyer (Temple U)
+Jul17 : pair meam/c : Sebastian Hutter (Otto-von-Guericke University)
+Jun17 : pair reaxc/omp : Metin Aktulga (MSU) and Axel Kohlmeyer (Temple U)
+Jun17 : pair vashishita/gpu : Anders Hafreager (UiO)
+Jun17 : kspace pppm/disp/intel and pair lj/long/coul/long/intel : Mike Brown (Intel) and William McDoniel (RWTH Aachen U)
+Jun17 : compute cnp/atom : Paulo Branicio (USC)
+May17 : fix python and pair python : Richard Berger (Temple U)
+May17 : pair edip/multi : Chao Jiang (U Wisconsin)
+May17 : pair gw and gw/zbl : German Samolyuk (ORNL)
+Mar17 : pair charmm fsw and fsh : Robert Meissner & Lucio Colombi Ciacchi (Bremen U), Robert Latour (Clemson U)
+Mar17 : pair momb : Ya Zhou, Kristen Fichthorn, and Tonnam Balankura (PSU)
+Mar17 : fix filter/corotate : Lukas Fath (KIT)
+Mar17 : pair kolmogorov/crespi/z : Jaap Kroes (Radboud Universiteit)
+Feb17 : Kokkos versions of the class2 bond/angle/dihedral/improper : Ray Shan (Materials Design)
+Jan17 : USER-CGDNA package : Oliver Henrich (U Edinburgh)
+Jan17 : fix mscg : Lauren Abbott (Sandia)
+Nov16 : temper/grem and fix grem : David Stelter (BU), Edyta Malolepsza (Broad Institute), Tom Keyes (BU)
+Nov16 : pair agni : Axel Kohlmeyer (Temple U) and Venkatesh Botu
+Nov16 : pair tersoff/mod.c : Ganga P Purja Pun (George Mason University)
+Nov16 : pair born/coul/dsf and pair born/coul/dsf/cs : Ariel Lozano
+Nov16 : fix reaxc/species/kk & fix reaxc/bonds/kk : Stan Moore (Sandia)
+Oct16 : fix wall/gran/region : Dan Bolintineanu (Sandia)
+Sep16 : weight options for balance & fix balance : Axel Kohlmeyer (Temple U) & Iain Bethune (EPCC)
+Sep16 : fix cmap : Xiaohu Hu (ORNL), David Hyde-Volpe & Tigran Abramyan & Robert Latour (Clemson U), Chris Lorenz (Kings College, London)
+Sep16 : pair vashishta/table : Anders Hafreager (U Oslo)
+Sep16 : kspace pppm/kk : Stan Moore (Sandia)
+Aug16 : fix flow/gauss : Steve Strong and Joel Eaves (U Colorado)
+Aug16 : fix controller : Aidan Thompson (Sandia)
+Jul16 : dipole integration by DLM method : Iain Bethune (EPCC)
+Jul16 : dihedral spherical : Andrew Jewett
+Jun16 : pair reax/c/kk : Ray Shan (Materials Design), Stan Moore (Sandia)
+Jun16 : fix orient/bcc : Tegar Wicaksono (UBC) 
+Jun16 : fix ehex : Peter Wirnsberger (University of Cambridge)
+Jun16 : reactive DPD extensions to USER-DPD : James Larentzos (ARL), Timothy Mattox (Engility Corp), John Brennan (ARL), Christopher Stone (Computational Science & Engineering, LLC)
+May16 : USER-MANIFOLD package : Stefan Paquay (Eindhoven U of Tech, The Netherlands)
+Apr16 : write_coeff : Axel Kohlmeyer (Temple U)
+Apr16 : pair morse/soft : Stefan Paquay (Eindhoven U of Tech, The Netherlands)
+Apr16 : compute dipole/chunk : Axel Kohlmeyer (Temple U)
+Apr16 : bond write : Axel Kohlmeyer (Temple U)
+Mar16 : pair morse/smooth/linear : Stefan Paquay (Eindhoven U of Tech, The Netherlands)
+Feb16 : pair/bond/angle/dihedral/improper zero : Carsten Svaneborg (SDU)
+Feb16 : dump custom/vtk : Richard Berger (JKU) and Daniel Queteschiner (DCS Computing)
+Feb16 : fix (nvt/npt/nph)/body and compute temp/body : Trung Nguyen
+Feb16 : USER-DPD package : James Larentzos (ARL), Timothy Mattox (Engility Corp), John Brennan (ARL)
+Dec15 : fix qeq/fire : Ray Shan (Sandia)
+Dec15 : pair lj/mdf, pair lennard/mdf, pair buck/mdf, improper distance : Paolo Raiteri (Curtin University)
+Nov15 : compute orientorder/atom : Aidan Thompson (Sandia) and Axel Kohlmeyer (U Temple)
+Nov15 : compute hexorder/atom : Aidan Thompson (Sandia)
+Oct15 : displace_atoms variable option : Reese Jones (Sandia)
+Oct15 : pair mgpt & USER-MGPT package : Tomas Oppelstrup and John Moriarty (LLNL)
+Oct15 : pair smtbq & USER-SMTBQ package : Nicolas Salles, Emile Maras, Olivier Politano, and Robert Tetot (LAAS-CNRS)
+Oct15 : fix ave/correlate/long command : Jorge Ramirez (UPM) and Alexei Likhtman (U Reading)
+Oct15 : pair vashishta command : Aidan Thompson (Sandia) and Yongnan Xiong (HNU)
+Aug15 : USER-TALLY package : Axel Kohlmeyer (Temple U)
+Aug15 : timer command : Axel Kohlmeyer (Temple U)
+Aug15 : USER-H5MD package : Pierre de Buyl (KU Leuven)
+Aug15 : COMPRESS package : Axel Kohlmeyer (Temple U)
+Aug15 : USER-SMD package : Georg Gunzenmueller (EMI)
+Jul15 : new HTML format for "doc pages"_doc/Manual.html with search option : Richard Berger (JKU)
+Jul15 : rRESPA with pair hybrid : Sam Genheden (U of Southampton)
+Jul15 : pair_modify special : Axel Kohlmeyer (Temple U)
+Jul15 : pair polymorphic : Xiaowang Zhou and Reese Jones (Sandia)
+Jul15 : USER-DRUDE package : Alain Dequidt and Agilio Padua (U Blaise Pascal Clermont-Ferrand) and Julien Devemy (CNRS)
+Jul15 : USER-QTB package : Yuan Shen, Tingting Qi, and Evan Reed (Stanford U)
+Jul15 : USER-DIFFRACTION package : Shawn Coleman (ARL)
+Mar15 : fix temp/csld : Axel Kohlmeyer (Temple U)
+Mar15 : CORESHELL package : Hendrik Heenen (Technical University of Munich)
+Feb15 : pair quip for GAP and other potentials : Albert Bartok-Partay (U Cambridge)
+Feb15 : pair coul/streitz for Streitz-Mintmire potential : Ray Shan (Sandia)
+Feb15 : fix tfmc : Kristof Bal (U of Antwerp) 
+Feb15 : fix ttm/mod : Sergey Starikov and Vasily Pisarev (JIHT of RAS)
+Jan15 : fix atom/swap for MC swaps of atom types/charge : Paul Crozier (Sandia)
+Nov14 : fix pimd for path-integral MD : Chris Knight and Yuxing Peng (U Chicago)
+Nov14 : fix gle and fix ipi for path-integral MD : Michele Ceriotti (EPFL)
+Nov14 : pair style srp : Tim Sirk (ARL) and Pieter in 't Veld (BASF) 
+Nov14 : fix ave/spatial/sphere : Niall Jackson (Imperial College)
+Sep14 : QEQ package and several fix qeq/variant styles : Ray Shan (Sandia)
+Sep14 : SNAP package and pair style : Aidan Thompson (Sandia) and collaborators
+Aug14 : USER-INTEL package : Mike Brown (Intel)
+May14 : KOKKOS pacakge : Christian Trott and Carter Edwards (Sandia)
+May14 : USER-FEP pacakge : Agilio Padua (U Blaise Pascal Clermont-Ferrand)
+Apr14 : fix rigid/small NVE/NVT/NPH/NPT : Trung Nguyen (ORNL)
+Apr14 : fix qmmm for QM/MM coupling : Axel Kohlmeyer (Temple U)
+Mar14 : kspace_modify collective for faster FFTs on BG/Q : Paul Coffman (IBM)
+Mar14 : fix temp/csvr and fix oneway : Axel Kohlmeyer (Temple U)
+Feb14 : pair peri/eps, compute dilatation/atom, compute plasticity/atom : Rezwanur Rahman and John Foster (UTSA)
+Jan14 : MPI-IO options for dump and restart files : Paul Coffman (IBM)
+Nov13 : USER-LB package for Lattice Boltzmann : Francis Mackay and Colin Denniston (U Western Ontario)
+Nov13 : fix ti/rs and ti/spring : Rodrigo Freitas (UC Berkeley)
+Nov13 : pair comb3 : Ray Shan (Sandia), Tao Liang and Dundar Yilmaz (U Florida)
+Nov13 : write_dump and dump movie : Axel Kohlmeyer (Temple U)
+Sep13 : xmgrace tool : Vikas Varshney
+Sep13 : pair zbl : Aidan Thompson and Stephen Foiles (Sandia)
+Aug13 : pair nm and variants : Julien Devemy (ICCF)
+Aug13 : fix wall/lj1043 : Jonathan Lee (Sandia)
+Jul13 : pair peri/ves : Rezwan Rahman, JT Foster (U Texas San Antonio)
+Jul13 : pair tersoff/mod : Vitaly Dozhdikov (JIHT of RAS)
+Jul13 : compute basal/atom : Christopher Barrett,(Mississippi State)
+Jul13 : polybond tool : Zachary Kraus (Georgia Tech)
+Jul13 : fix gld : Stephen Bond and Andrew Baczewski (Sandia) 
+Jun13 : pair nb3b/harmonic : Todd Zeitler (Sandia)
+Jun13 : kspace_style pppm/stagger : Stan Moore (Sandia)
+Jun13 : fix tune/kspace : Paul Crozier (Sandia)
+Jun13 : long-range point dipoles : Stan Moore (Sandia) and Pieter in 't Veld (BASF)
+May13 : compute msd/nongauss : Rob Hoy
+May13 : pair list : Axel Kohlmeyer (Temple U)
+May13 : triclinic support for long-range solvers : Stan Moore (Sandia)
+Apr13 : dump_modify nfile and fileper : Christopher Knight
+Mar13 : fix phonon : Ling-Ti Kong (Shanghai Jiao Tong University)
+Mar13 : pair_style lj/cut/tip4p/cut : Pavel Elkind (Gothenburg University)
+Feb13 : immediate variables in input script : Daniel Moller (Autonomous University of Barcelona)
+Feb13 : fix species : Ray Shan (Sandia)
+Jan13 : compute voronoi/atom : Daniel Schwen
+Nov12 : pair_style mie/cut : Cassiano Aimoli Petrobras (U Notre Dame)
+Oct12 : pair_style meam/sw/spline : Robert Rudd (LLNL)
+Oct12 : angle_style fourier and fourier/simple and quartic : Loukas Peristeras (Scienomics)
+Oct12 : dihedral_style fourier and nharmonic and quadratic : Loukas Peristeras (Scienomics)
+Oct12 : improper_style fourier : Loukas Peristeras (Scienomics)
+Oct12 : kspace_style pppm/disp for 1/r^6 : Rolf Isele-Holder (Aachen University)
+Oct12 : moltemplate molecular builder tool : Andrew Jewett (UCSB)
+Sep12 : pair_style lj/cut/coul/dsf and coul/dsf : Trung Nguyen (ORNL)
+Sep12 : multi-level summation long-range solver : Stan Moore, Stephen Bond, and Paul Crozier (Sandia)
+Aug12 : fix rigid/npt and fix rigid/nph : Trung Nguyen (ORNL)
+Aug12 : Fortran wrapper on lib interface : Karl Hammond (UT, Knoxville)
+Aug12 : kspace_modify diff for 2-FFT PPPM : Rolf Isele-Holder (Aachen University), Stan Moore (BYU), Paul Crozier (Sandia)
+Jun12 : pair_style bop : Don Ward and Xiaowang Zhou (Sandia)
+Jun12 : USER-MOLFILE package : Axel Kohlmeyer (U Temple)
+Jun12 : USER-COLVARS package : Axel Kohlmeyer (U Temple)
+May12 : read_dump : Tim Sirk (ARL)
+May12 : improper_style cossq and ring : Georgios Vogiatzis (CoMSE, NTU Athens)
+May12 : pair_style lcbop : Dominik Wojt (Wroclaw University of Technology)
+Feb12 : PPPM per-atom energy/virial : Stan Moore (BYU)
+Feb12 : Ewald per-atom energy/virial : German Samolyuk (ORNL), Stan Moore (BYU)
+Feb12 : minimize forcezero linesearch : Asad Hasan (CMU)
+Feb12 : pair_style beck : Jon Zimmerman (Sandia)
+Feb12 : pair_style meam/spline : Alex Stukowski (LLNL)
+Jan12 : pair_style kim : Valeriu Smirichinski, Ryan Elliott, Ellad Tadmor (U Minn)
+Jan12 : dihedral_style table : Andrew Jewett (UCSB)
+Jan12 : angle_style dipole : Mario Orsi
+Jan12 : pair_style lj/smooth/linear : Jon Zimmerman (Sandia)
+Jan12 : fix reax/c/bond : Tzu-Ray Shan (Sandia)
+Dec11 : pair_style coul/wolf : Yongfeng Zhang (INL)
+Dec11 : run_style verlet/split : Yuxing Peng and Chris Knight (U Chicago)
+Dec11 : pair_style tersoff/table : Luca Ferraro (CASPUR)
+Nov11 : per-atom energy/stress for reax/c : Tzu-Ray Shan (Sandia)
+Oct11 : Fast Lubrication Dynamics (FLD) package: Amit Kumar, Michael Bybee, Jonathan Higdon (UIUC)
+Oct11 : USER-OMP package : Axel Kohlmeyer (Temple U)
+Sep11 : pair_style edip : Luca Ferraro (CASPUR)
+Aug11 : USER-SPH package : Georg Ganzenmuller (FIHSD, EMI, Germany)
+Aug11 : fix restrain : Craig Tenney (Sandia)
+Aug11 : USER-CUDA package : Christian Trott (U Tech Ilmenau)
+Aug11 : pair_style lj/sf : Laurent Joly (U Lyon)
+Aug11 : bond_style harmonic/shift and harmonic/shift/cut : Carsten Svaneborg
+Aug11 : angle_style cosine/shift and cosine/shift/exp : Carsten Svaneborg
+Aug11 : dihedral_style cosine/shift/exp : Carsten Svaneborg
+Aug11 : pair_style dipole/sf : Mario Orsi
+Aug11 : fix addtorque and compute temp/rotate : Laurent Joly (U Lyon)
+Aug11 : FFT support via FFTW3, MKL, ACML, KISSFFT libraries : \
+  Axel Kohlmeyer (Temple U)
+Jun11 : pair_style adp : Chris Weinberger (Sandia), Stephen Foiles (Sandia), \
+  Chandra Veer Singh (Cornell)
+Jun11 : Windows build option via Microsoft Visual Studio : \
+  Ilya Valuev (JIHT, Moscow, Russia)
+Jun11 : antisymmetrized wave packet MD : Ilya Valuev (JIHT, Moscow, Russia)
+Jun11 : dump image : Nathan Fabian (Sandia)
+May11 : pppm GPU single and double : Mike Brown (ORNL)
+May11 : pair_style lj/expand/gpu : Inderaj Bains (NVIDIA)
+2010 : pair_style reax/c and fix qeq/reax : Metin Aktulga (Purdue, now LBNL)
+- : DREIDING force field, pair_style hbond/dreiding, etc : Tod Pascal (Caltech)
+- : fix adapt and compute ti for thermodynamic integration for \
+  free energies : Sai Jayaraman (Sandia)
+- : pair_style born and gauss : Sai Jayaraman (Sandia)
+- : stochastic rotation dynamics (SRD) via fix srd : \
+  Jeremy Lechman (Sandia) and Pieter in 't Veld (BASF)
+- : ipp Perl script tool : Reese Jones (Sandia)
+- : eam_database and createatoms tools : Xiaowang Zhou (Sandia)
+- : electron force field (eFF) : Andres Jaramillo-Botero and Julius Su (Caltech)
+- : embedded ion method (EIM) potential : Xiaowang Zhou (Sandia)
+- : COMB potential with charge equilibration : Tzu-Ray Shan (U Florida)
+- : fix ave/correlate :  Benoit Leblanc, Dave Rigby, \
+  Paul Saxe (Materials Design) and Reese Jones (Sandia)
+- : pair_style peri/lps : Mike Parks (Sandia)
+- : fix msst : Lawrence Fried (LLNL), Evan Reed (LLNL, Stanford)
+- : thermo_style custom tpcpu & spcpu keywords : Axel Kohlmeyer (Temple U) 
+- : fix rigid/nve, fix rigid/nvt : Tony Sheh and Trung Dac Nguyen (U Michigan)
+- : public SVN & Git repositories for LAMMPS : \
+  Axel Kohlmeyer (Temple U) and Bill Goldman (Sandia)
+- : compute heat/flux : German Samolyuk (ORNL) and \
+  Mario Pinto (Computational Research Lab, Pune, India)
+- : pair_style yukawa/colloid : Randy Schunk (Sandia)
+- : fix wall/colloid : Jeremy Lechman (Sandia)
+2009 : fix imd for real-time viz and interactive MD : Axel Kohlmeyer (Temple Univ)
+- : concentration-dependent EAM potential : \
+  Alexander Stukowski (Technical University of Darmstadt)
+- : parallel replica dymamics (PRD) : Mike Brown (Sandia)
+- : min_style hftn : Todd Plantenga (Sandia)
+- : fix atc : Reese Jones, Jon Zimmerman, Jeremy Templeton (Sandia)
+- : dump cfg : Liang Wan (Chinese Academy of Sciences)
+- : fix nvt with Nose/Hoover chains : Andy Ballard (U Maryland)
+- : pair_style lj/cut/gpu, pair_style gayberne/gpu : Mike Brown (Sandia)
+- : pair_style lj96/cut, bond_style table, angle_style table : Chuanfu Luo
+- : fix langevin tally : Carolyn Phillips (U Michigan)
+- : compute heat/flux for Green-Kubo : Reese Jones (Sandia), \
+  Philip Howell (Siemens), Vikas Varsney (AFRL)
+- : region cone : Pim Schravendijk
+- : pair_style born/coul/long : Ahmed Ismail (Sandia)
+- : fix ttm : Paul Crozier (Sandia) and Carolyn Phillips (U Michigan)
+- : fix box/relax : Aidan Thompson and David Olmsted (Sandia)
+- : ReaxFF potential : Aidan Thompson (Sandia) and Hansohl Cho (MIT)
+- : compute cna/atom : Liang Wan (Chinese Academy of Sciences)
+2008 : Tersoff/ZBL potential : Dave Farrell (Northwestern U)
+- : peridynamics : Mike Parks (Sandia)
+- : fix smd for steered MD : Axel Kohlmeyer (U Penn)
+- : GROMACS pair potentials : Mark Stevens (Sandia)
+- : lmp2vmd tool : Axel Kohlmeyer (U Penn)
+- : compute group/group : Naveen Michaud-Agrawal (Johns Hopkins U)
+- : USER-CG-CMM package for coarse-graining : Axel Kohlmeyer (U Penn)
+- : cosine/delta angle potential : Axel Kohlmeyer (U Penn)
+- : VIM editor add-ons for LAMMPS input scripts : Gerolf Ziegenhain
+- : pair_style lubricate : Randy Schunk (Sandia)
+- : compute ackland/atom : Gerolf Ziegenhain
+- : kspace_style ewald/n, pair_style lj/coul, pair_style buck/coul : \
+  Pieter in 't Veld (Sandia)
+- : AI-REBO bond-order potential : Ase Henry (MIT)
+- : making LAMMPS a true "object" that can be instantiated \
+  multiple times, e.g. as a library : Ben FrantzDale (RPI)
+- : pymol_asphere viz tool : Mike Brown (Sandia)
+2007 : NEMD SLLOD integration : Pieter in 't Veld (Sandia)
+- : tensile and shear deformations : Pieter in 't Veld (Sandia)
+- : GayBerne potential : Mike Brown (Sandia)
+- : ellipsoidal particles : Mike Brown (Sandia)
+- : colloid potentials : Pieter in 't Veld (Sandia)
+- : fix heat : Paul Crozier and Ed Webb (Sandia)
+- : neighbor multi and communicate multi : Pieter in 't Veld (Sandia)
+- : MATLAB post-processing scripts : Arun Subramaniyan (Purdue)
+- : triclinic (non-orthogonal) simulation domains : Pieter in 't Veld (Sandia)
+- : thermo_extract tool: Vikas Varshney (Wright Patterson AFB)
+- : fix ave/time and fix ave/spatial : Pieter in 't Veld (Sandia)
+- : MEAM potential : Greg Wagner (Sandia)
+- : optimized pair potentials for lj/cut, charmm/long, eam, morse : \
+  James Fischer (High Performance Technologies), \
+  David Richie and Vincent Natoli (Stone Ridge Technologies)
+2006 : fix wall/lj126 : Mark Stevens (Sandia)
+- : Stillinger-Weber and Tersoff potentials : \
+  Aidan Thompson and Xiaowang Zhou (Sandia)
+- : region prism : Pieter in 't Veld (Sandia)
+- : fix momentum and recenter : Naveen Michaud-Agrawal (Johns Hopkins U)
+- : multi-letter variable names : Naveen Michaud-Agrawal (Johns Hopkins U)
+- : OPLS dihedral potential: Mark Stevens (Sandia)
+- : POEMS coupled rigid body integrator: Rudranarayan Mukherjee (RPI)
+- : faster pair hybrid potential: James Fischer \
+    (High Performance Technologies, Inc), Vincent Natoli and \
+    David Richie (Stone Ridge Technology)
+- : breakable bond quartic potential: Chris Lorenz and Mark Stevens (Sandia)
+- : DCD and XTC dump styles: Naveen Michaud-Agrawal (Johns Hopkins U)
+- : grain boundary orientation fix : Koenraad Janssens and \
+  David Olmsted (Sandia)
+- : pair_style lj/smooth potential : Craig Maloney (UCSB) 
+- : radius-of-gyration spring fix : Naveen Michaud-Agrawal \
+  (Johns Hopkins U) and Paul Crozier (Sandia)
+- : self spring fix : Naveen Michaud-Agrawal (Johns Hopkins U)
+- : EAM CoAl and AlCu potentials : Kwang-Reoul Lee (KIST, Korea)
+- : cosine/squared angle potential : Naveen Michaud-Agrawal (Johns Hopkins U)
+- : helix dihedral potential : Naveen Michaud-Agrawal (Johns Hopkins U) and \
+    Mark Stevens (Sandia)
+- : Finnis/Sinclair EAM: Tim Lau (MIT)
+- : dissipative particle dynamics (DPD) potentials: Kurt Smith (U Pitt) and \
+    Frank van Swol (Sandia)
+- : TIP4P potential (4-site water): Ahmed Ismail and \
+  Amalie Frischknecht (Sandia)
+2005 : uniaxial strain fix: Carsten Svaneborg (Max Planck Institute)
+- : compressed dump files: Erik Luijten (U Illinois)
+- : cylindrical indenter fix: Ravi Agrawal (Northwestern U)
+- : electric field fix: Christina Payne (Vanderbilt U)
+- : AMBER <-> LAMMPS tool: Keir Novik (Univ College London) and \
+  Vikas Varshney (U Akron)
+- : CHARMM <-> LAMMPS tool: Pieter in 't Veld and Paul Crozier (Sandia)
+- : Morse bond potential: Jeff Greathouse (Sandia)
+- : radial distribution functions: Paul Crozier & Jeff Greathouse (Sandia)
+- : force tables for long-range Coulombics: Paul Crozier (Sandia)
+2004 : targeted molecular dynamics (TMD): Paul Crozier (Sandia) and \
+  Christian Burisch (Bochum University, Germany)
+- : FFT support for SGI SCLS (Altix): Jim Shepherd (Ga Tech)
+- : lmp2cfg and lmp2traj tools: Ara Kooser, Jeff Greathouse, \
+    Andrey Kalinichev (Sandia)
+- : parallel tempering: Mark Sears (Sandia)
+earlier : granular force fields and BC: Leo Silbert & Gary Grest (Sandia)
+- : multi-harmonic dihedral potential: Mathias Putz (Sandia)
+- : embedded atom method (EAM) potential: Stephen Foiles (Sandia)
+- : msi2lmp tool: Steve Lustig (Dupont), Mike Peachey & John Carpenter (Cray)
+- : HTFN energy minimizer: Todd Plantenga (Sandia)
+- : class 2 force fields: Eric Simon (Cray)
+- : NVT/NPT integrators: Mark Stevens (Sandia)
+- : rRESPA: Mark Stevens & Paul Crozier (Sandia)
+- : Ewald and PPPM solvers: Roy Pollock (LLNL) : :tb(s=:,ca1=c)
diff --git a/doc/src/Intro_features.txt b/doc/src/Intro_features.txt
new file mode 100644
index 0000000000..2a405ebf77
--- /dev/null
+++ b/doc/src/Intro_features.txt
@@ -0,0 +1,202 @@
+"Higher level section"_Intro.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+LAMMPS features :h3
+
+LAMMPS is a classical molecular dynamics (MD) code with these general
+classes of functionality:
+
+"General features"_#general
+"Particle and model types"_#particle
+"Interatomic potentials (force fields)"_#ff
+"Atom creation"_#create
+"Ensembles, constraints, and boundary conditions"_#ensemble
+"Integrators"_#integrate
+"Diagnostics"_#diag
+"Output"_#output
+"Multi-replica models"_#replica
+"Pre- and post-processing"_#prepost
+"Specialized features (beyond MD itself)"_#special :ul
+
+:line
+
+General features :h4,link(general)
+
+  runs on a single processor or in parallel
+  distributed-memory message-passing parallelism (MPI)
+  spatial-decomposition of simulation domain for parallelism
+  open-source distribution
+  highly portable C++
+  optional libraries used: MPI and single-processor FFT
+  GPU (CUDA and OpenCL), Intel Xeon Phi, and OpenMP support for many code features
+  easy to extend with new features and functionality
+  runs from an input script
+  syntax for defining and using variables and formulas
+  syntax for looping over runs and breaking out of loops
+  run one or multiple simulations simultaneously (in parallel) from one script
+  build as library, invoke LAMMPS thru library interface or provided Python wrapper
+  couple with other codes: LAMMPS calls other code, other code calls LAMMPS, umbrella code calls both :ul
+
+Particle and model types :h4,link(particle)
+("atom style"_atom_style.html command)
+
+  atoms
+  coarse-grained particles (e.g. bead-spring polymers)
+  united-atom polymers or organic molecules
+  all-atom polymers, organic molecules, proteins, DNA
+  metals
+  granular materials
+  coarse-grained mesoscale models
+  finite-size spherical and ellipsoidal particles
+  finite-size  line segment (2d) and triangle (3d) particles
+  point dipole particles
+  rigid collections of particles
+  hybrid combinations of these :ul
+
+Interatomic potentials (force fields) :h4,link(ff)
+("pair style"_pair_style.html, "bond style"_bond_style.html,
+"angle style"_angle_style.html, "dihedral style"_dihedral_style.html,
+"improper style"_improper_style.html, "kspace style"_kspace_style.html
+commands)
+
+  pairwise potentials: Lennard-Jones, Buckingham, Morse, Born-Mayer-Huggins, \
+    Yukawa, soft, class 2 (COMPASS), hydrogen bond, tabulated
+  charged pairwise potentials: Coulombic, point-dipole
+  manybody potentials: EAM, Finnis/Sinclair EAM, modified EAM (MEAM), \
+    embedded ion method (EIM), EDIP, ADP, Stillinger-Weber, Tersoff, \
+    REBO, AIREBO, ReaxFF, COMB, SNAP, Streitz-Mintmire, 3-body polymorphic
+  long-range interactions for charge, point-dipoles, and LJ dispersion: \
+    Ewald, Wolf, PPPM (similar to particle-mesh Ewald)
+  polarization models: "QEq"_fix_qeq.html, \
+    "core/shell model"_Section_howto.html#howto_26, \
+    "Drude dipole model"_Section_howto.html#howto_27
+  charge equilibration (QEq via dynamic, point, shielded, Slater methods)
+  coarse-grained potentials: DPD, GayBerne, REsquared, colloidal, DLVO
+  mesoscopic potentials: granular, Peridynamics, SPH
+  electron force field (eFF, AWPMD)
+  bond potentials: harmonic, FENE, Morse, nonlinear, class 2, \
+    quartic (breakable)
+  angle potentials: harmonic, CHARMM, cosine, cosine/squared, cosine/periodic, \
+    class 2 (COMPASS)
+  dihedral potentials: harmonic, CHARMM, multi-harmonic, helix, \
+    class 2 (COMPASS), OPLS
+  improper potentials: harmonic, cvff, umbrella, class 2 (COMPASS)
+  polymer potentials: all-atom, united-atom, bead-spring, breakable
+  water potentials: TIP3P, TIP4P, SPC
+  implicit solvent potentials: hydrodynamic lubrication, Debye
+  force-field compatibility with common CHARMM, AMBER, DREIDING, \
+    OPLS, GROMACS, COMPASS options
+  access to "KIM archive"_http://openkim.org of potentials via \
+    "pair kim"_pair_kim.html
+  hybrid potentials: multiple pair, bond, angle, dihedral, improper \
+    potentials can be used in one simulation
+  overlaid potentials: superposition of multiple pair potentials :ul
+
+Atom creation :h4,link(create)
+("read_data"_read_data.html, "lattice"_lattice.html,
+"create_atoms"_create_atoms.html, "delete_atoms"_delete_atoms.html,
+"displace_atoms"_displace_atoms.html, "replicate"_replicate.html commands)
+
+  read in atom coords from files
+  create atoms on one or more lattices (e.g. grain boundaries)
+  delete geometric or logical groups of atoms (e.g. voids)
+  replicate existing atoms multiple times
+  displace atoms :ul
+
+Ensembles, constraints, and boundary conditions :h4,link(ensemble)
+("fix"_fix.html command) 
+
+  2d or 3d systems
+  orthogonal or non-orthogonal (triclinic symmetry) simulation domains
+  constant NVE, NVT, NPT, NPH, Parinello/Rahman integrators
+  thermostatting options for groups and geometric regions of atoms
+  pressure control via Nose/Hoover or Berendsen barostatting in 1 to 3 dimensions
+  simulation box deformation (tensile and shear)
+  harmonic (umbrella) constraint forces
+  rigid body constraints
+  SHAKE bond and angle constraints
+  Monte Carlo bond breaking, formation, swapping
+  atom/molecule insertion and deletion
+  walls of various kinds
+  non-equilibrium molecular dynamics (NEMD)
+  variety of additional boundary conditions and constraints :ul
+
+Integrators :h4,link(integrate)
+("run"_run.html, "run_style"_run_style.html, "minimize"_minimize.html commands) 
+
+  velocity-Verlet integrator
+  Brownian dynamics
+  rigid body integration
+  energy minimization via conjugate gradient or steepest descent relaxation
+  rRESPA hierarchical timestepping
+  rerun command for post-processing of dump files :ul
+
+Diagnostics :h4,link(diag)
+
+  see various flavors of the "fix"_fix.html and "compute"_compute.html commands :ul
+
+Output :h4,link(output)
+("dump"_dump.html, "restart"_restart.html commands) 
+
+  log file of thermodynamic info
+  text dump files of atom coords, velocities, other per-atom quantities
+  binary restart files
+  parallel I/O of dump and restart files
+  per-atom quantities (energy, stress, centro-symmetry parameter, CNA, etc)
+  user-defined system-wide (log file) or per-atom (dump file) calculations
+  spatial and time averaging of per-atom quantities
+  time averaging of system-wide quantities
+  atom snapshots in native, XYZ, XTC, DCD, CFG formats :ul
+
+Multi-replica models :h4,link(replica)
+
+"nudged elastic band"_neb.html
+"parallel replica dynamics"_prd.html
+"temperature accelerated dynamics"_tad.html
+"parallel tempering"_temper.html :ul
+
+Pre- and post-processing :h4,link(prepost)
+
+A handful of pre- and post-processing tools are packaged with LAMMPS,
+some of which can convert input and output files to/from formats used
+by other codes; see the "Toos"_Tools.html doc page. :ulb,l
+
+Our group has also written and released a separate toolkit called
+"Pizza.py"_pizza which provides tools for doing setup, analysis,
+plotting, and visualization for LAMMPS simulations.  Pizza.py is
+written in "Python"_python and is available for download from "the
+Pizza.py WWW site"_pizza. :l,ule
+
+:link(pizza,http://www.sandia.gov/~sjplimp/pizza.html)
+:link(python,http://www.python.org)
+
+Specialized features :h4,link(special)
+
+LAMMPS can be built with optional packages which implement a variety
+of additional capabilities.  See the "Packages"_Packages.html doc
+page for details.
+
+These are LAMMPS capabilities which you may not think of as typical
+classical MD options:
+
+"static"_balance.html and "dynamic load-balancing"_fix_balance.html
+"generalized aspherical particles"_body.html
+"stochastic rotation dynamics (SRD)"_fix_srd.html
+"real-time visualization and interactive MD"_fix_imd.html
+calculate "virtual diffraction patterns"_compute_xrd.html
+"atom-to-continuum coupling"_fix_atc.html with finite elements
+coupled rigid body integration via the "POEMS"_fix_poems.html library
+"QM/MM coupling"_fix_qmmm.html
+Monte Carlo via "GCMC"_fix_gcmc.html and "tfMC"_fix_tfmc.html and "atom swapping"_fix_swap.html
+"path-integral molecular dynamics (PIMD)"_fix_ipi.html and "this as well"_fix_pimd.html
+"Direct Simulation Monte Carlo"_pair_dsmc.html for low-density fluids
+"Peridynamics mesoscale modeling"_pair_peri.html
+"Lattice Boltzmann fluid"_fix_lb_fluid.html
+"targeted"_fix_tmd.html and "steered"_fix_smd.html molecular dynamics
+"two-temperature electron model"_fix_ttm.html :ul
diff --git a/doc/src/Intro_nonfeatures.txt b/doc/src/Intro_nonfeatures.txt
new file mode 100644
index 0000000000..29b2eacf08
--- /dev/null
+++ b/doc/src/Intro_nonfeatures.txt
@@ -0,0 +1,83 @@
+"Higher level section"_Intro.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+LAMMPS non-features :h3
+
+LAMMPS is designed to be a fast, parallel engine for molecular
+dynamics (MD) simulations.  It provides only a modest amount of
+functionality for setting up simulations and analyzing their output.
+
+Specifically, LAMMPS does not:
+
+run thru a GUI
+build molecular systems
+assign force-field coefficients automagically
+perform sophisticated analyses of your MD simulation
+visualize your MD simulation interactively
+plot your output data :ul
+
+Here are suggestions on how to perform these tasks:
+
+GUI: LAMMPS can be built as a library and a Python wrapper that wraps
+the library interface is provided.  Thus, GUI interfaces can be
+written in Python (or C or C++ if desired) that run LAMMPS and
+visualize or plot its output.  Examples of this are provided in the
+python directory and described on the "Python"_Python.html doc
+page. :ulb,l
+
+Builder: Several pre-processing tools are packaged with LAMMPS.  Some
+of them convert input files in formats produced by other MD codes such
+as CHARMM, AMBER, or Insight into LAMMPS input formats.  Some of them
+are simple programs that will build simple molecular systems, such as
+linear bead-spring polymer chains.  The moltemplate program is a true
+molecular builder that will generate complex molecular models.  See
+the "Tools"_Tools.html doc page for details on tools packaged with
+LAMMPS.  The "Pre/post processing
+page"_http:/lammps.sandia.gov/prepost.html of the LAMMPS website
+describes a variety of 3rd party tools for this task. :l
+
+Force-field assignment: The conversion tools described in the previous
+bullet for CHARMM, AMBER, and Insight will also assign force field
+coefficients in the LAMMPS format, assuming you provide CHARMM, AMBER,
+or Accelerys force field files. :l
+
+Simulation analyses: If you want to perform analyses on-the-fly as
+your simulation runs, see the "compute"_compute.html and
+"fix"_fix.html doc pages, which list commands that can be used in a
+LAMMPS input script.  Also see the "Modify"_Modify.html doc page for
+info on how to add your own analysis code or algorithms to LAMMPS.
+For post-processing, LAMMPS output such as "dump file
+snapshots"_dump.html can be converted into formats used by other MD or
+post-processing codes.  Some post-processing tools packaged with
+LAMMPS will do these conversions.  Scripts provided with the {python}
+tool in the tools directory can extract and massage data in dump files
+to make it easier to import into other programs.  See the
+"Tools"_Tools.html doc page for details on these various options. :l
+
+Visualization: LAMMPS can produce JPG or PNG snapshot images
+on-the-fly via its "dump image"_dump_image.html command.  For
+high-quality, interactive visualization there are many excellent and
+free tools available.  See the "Other Codes
+page"_http://lammps.sandia.gov/viz.html page of the LAMMPS website for
+visualization packages that can use LAMMPS output data. :l
+
+Plotting: See the next bullet about Pizza.py as well as the
+"Python"_Python.html doc page for examples of plotting LAMMPS output.
+Scripts provided with the {python} tool in the tools directory will
+extract and massage data in log and dump files to make it easier to
+analyze and plot.  See the "Tools"_Tools.html doc page for more
+discussion of the various tools. :l
+
+Pizza.py: Our group has also written a separate toolkit called
+"Pizza.py"_http://pizza.sandia.gov which can do certain kinds of
+setup, analysis, plotting, and visualization (via OpenGL) for LAMMPS
+simulations.  It thus provides some functionality for several of the
+above bullets.  Pizza.py is written in "Python"_http://www.python.org
+and is available for download from "this
+page"_http://www.cs.sandia.gov/~sjplimp/download.html. :l,ule
diff --git a/doc/src/Intro_opensource.txt b/doc/src/Intro_opensource.txt
new file mode 100644
index 0000000000..83384a22a2
--- /dev/null
+++ b/doc/src/Intro_opensource.txt
@@ -0,0 +1,44 @@
+"Higher level section"_Intro.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+LAMMPS open-source license :h3
+
+LAMMPS is a freely-available open-source code, distributed under the
+terms of the "GNU Public License"_gnu, which means you can use or
+modify the code however you wish.
+
+LAMMPS comes with no warranty of any kind.  As each source file states
+in its header, it is a copyrighted code that is distributed free-of-
+charge, under the terms of the "GNU Public License"_gnu (GPL).  This
+is often referred to as open-source distribution - see
+"www.gnu.org"_gnuorg or "www.opensource.org"_opensource.  The legal
+text of the GPL is in the LICENSE file included in the LAMMPS
+distribution.
+
+:link(gnu,http://www.gnu.org/copyleft/gpl.html)
+:link(gnuorg,http://www.gnu.org)
+:link(opensource,http://www.opensource.org)
+
+Here is a summary of what the GPL means for LAMMPS users:
+
+(1) Anyone is free to use, modify, or extend LAMMPS in any way they
+choose, including for commercial purposes.
+
+(2) If you distribute a modified version of LAMMPS, it must remain
+open-source, meaning you distribute it under the terms of the GPL.
+You should clearly annotate such a code as a derivative version of
+LAMMPS.
+
+(3) If you release any code that includes LAMMPS source code, then it
+must also be open-sourced, meaning you distribute it under the terms
+of the GPL.
+
+(4) If you give LAMMPS files to someone else, the GPL LICENSE file and
+source file headers (including the copyright and GPL notices) should
+remain part of the code.
diff --git a/doc/src/Intro_overview.txt b/doc/src/Intro_overview.txt
new file mode 100644
index 0000000000..97489b4867
--- /dev/null
+++ b/doc/src/Intro_overview.txt
@@ -0,0 +1,59 @@
+"Higher level section"_Intro.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Overview of LAMMPS :h3
+
+LAMMPS is a classical molecular dynamics (MD) code that models
+ensembles of particles in a liquid, solid, or gaseous state.  It can
+model atomic, polymeric, biological, solid-state (metals, ceramics,
+oxides), granular, coarse-grained, or macroscopic systems using a
+variety of interatomic potentials (force fields) and boundary
+conditions.  The majority of these models are for materials of various
+kinds.  It can model 2d or 3d systems with only a few particles up to
+millions or billions.
+
+LAMMPS can be built and run on a laptop or destop machine, but is
+designed for parallel computers.  It will run on any parallel machine
+that supports the "MPI"_mpi message-passing library.  This includes
+shared-memory boxes and distributed-memory clusters and
+supercomputers.
+
+:link(mpi,http://www-unix.mcs.anl.gov/mpi)
+
+LAMMPS is written in C++.  Earlier versions were written in F77 and
+F90.  See the "History page"_http://lammps.sandia.gov/history.html of
+the website for details.  All versions can be downloaded from the
+"LAMMPS website"_lws.
+
+LAMMPS is designed to be easy to modify or extend with new
+capabilities, such as new force fields, atom types, boundary
+conditions, or diagnostics.  See the "Modify"_Modify.html doc page for
+more details.
+
+In the most general sense, LAMMPS integrates Newton's equations of
+motion for a collection of interacting particles.  A single particle
+can be an atom or molecule or electron, a coarse-grained cluster of
+atoms, or a mesoscopic or macroscopic clump of material.  The
+interaction models that LAMMPS includes are mostly short-range in
+nature; some long-range models are included as well.
+
+LAMMPS uses neighbor lists to keep track of nearby particles.  The
+lists are optimized for systems with particles that are repulsive at
+short distances, so that the local density of particles never becomes
+too large.  This is in contrast to methods used for modeling plasmas
+or gravitational bodies (e.g. galaxy formation).
+
+On parallel machines, LAMMPS uses spatial-decomposition techniques to
+partition the simulation domain into small sub-domains of equal
+computational cost, one of which is assigned to each processor.
+Processors communicate and store "ghost" atom information for atoms
+that border their sub-domain.
+
+
+
diff --git a/doc/src/Intro_website.txt b/doc/src/Intro_website.txt
new file mode 100644
index 0000000000..61c9babe1c
--- /dev/null
+++ b/doc/src/Intro_website.txt
@@ -0,0 +1,42 @@
+"Higher level section"_Intro.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+Additional website links :h3
+
+The "LAMMPS website"_lws has a variety of additional info about
+LAMMPS, beyond what is in this manual.  Some of the other pages in
+this Intr are included in this list.
+
+"Brief intro and recently added significant features"_lws
+"List of features"_http://lammps.sandia.gov/features.html
+"List of non-features"_http://lammps.sandia.gov/non_features.html
+"Recent bug fixes and new features"_http://lammps.sandia.gov/bug.html :ul
+
+"Download info"_http://lammps.sandia.gov/download.html
+"GitHub site"_https://github.com/lammps/lammps
+"SourceForge site"_https://sourceforge.net/projects/lammps
+"LAMMPS open-source license"_http://lammps.sandia.gov/open_source.html :ul
+
+"Glossary of MD terms relevant to LAMMPS"_http://lammps.sandia.gov/glossary.html
+"LAMMPS highlights with images"_http://lammps.sandia.gov/pictures.html
+"LAMMPS highlights with movies"_http://lammps.sandia.gov/movies.html
+"Mail list"_http://lammps.sandia.gov/mail.html
+"Workshops"_http://lammps.sandia.gov/workshops.html
+"Tutorials"_http://lammps.sandia.gov/tutorials.html
+"Developer guide"_http://lammps.sandia.gov/Developer.pdf :ul
+
+"Pre- and post-processing tools for LAMMPS"_http://lammps.sandia.gov/prepost.html
+"Other software usable with LAMMPS"_http://lammps.sandia.gov/offsite.html
+"Viz tools usable with LAMMPS"_http://lammps.sandia.gov/viz.html :ul
+
+"Benchmark performance"_http://lammps.sandia.gov/bench.html
+"Publications that have cited LAMMPS"_http://lammps.sandia.gov/papers.html
+"Authors of LAMMPS"_http://lammps.sandia.gov/authors.html
+"History of LAMMPS development"_http://lammps.sandia.gov/history.html
+"Funding for LAMMPS"_http://lammps.sandia.gov/funding.html :ul
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index 3fe5a25fbb..4e4332a05a 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -21,7 +21,7 @@
 <H1></H1>
 
 LAMMPS Documentation :c,h1
-16 Mar 2018 version :c,h2
+16 Jul 2018 version :c,h2
 
 "What is a LAMMPS version?"_Manual_version.html
 
@@ -29,15 +29,18 @@ LAMMPS stands for Large-scale Atomic/Molecular Massively Parallel
 Simulator.
 
 LAMMPS is a classical molecular dynamics simulation code designed to
-run efficiently on parallel computers.  It was developed originally at
-Sandia National Laboratories, a US Department of Energy facility, with
-funding from the DOE.  It is an open-source code, distributed freely
-under the terms of the GNU Public License (GPL).
-
-The "LAMMPS website"_lws has information about the code authors, a
-"mail list"_http://lammps.sandia.gov where users can post questions,
-and a "GitHub site"https://github.com/lammps/lammps where all LAMMPS
-development is coordinated.
+run efficiently on parallel computers.  It is primarily used for
+materials modeling of various kinds.  It was developed originally at
+Sandia National Laboratories, a US Department of Energy facility.  The
+majority of funding for LAMMPS has come from the US Department of
+Energy (DOE).  LAMMPS is an open-source code, distributed freely under
+the terms of the GNU Public License (GPL).
+
+The "LAMMPS website"_lws has a variety of information about the code.
+It includes links to an on-line version of this manual, a "mail
+list"_http://lammps.sandia.gov/mail.html where users can post
+questions, and a "GitHub site"https://github.com/lammps/lammps where
+all LAMMPS development is coordinated.
 
 :line
 
-- 
GitLab


From 39f61a78f26308dc844a8b25f98c600566a463bb Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Thu, 2 Aug 2018 14:09:00 -0600
Subject: [PATCH 139/243] couple more doc page tweaks

---
 doc/src/Intro_overview.txt |  5 ++---
 doc/src/Manual.txt         | 14 +++++++-------
 2 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/doc/src/Intro_overview.txt b/doc/src/Intro_overview.txt
index 97489b4867..51ad218216 100644
--- a/doc/src/Intro_overview.txt
+++ b/doc/src/Intro_overview.txt
@@ -14,9 +14,8 @@ ensembles of particles in a liquid, solid, or gaseous state.  It can
 model atomic, polymeric, biological, solid-state (metals, ceramics,
 oxides), granular, coarse-grained, or macroscopic systems using a
 variety of interatomic potentials (force fields) and boundary
-conditions.  The majority of these models are for materials of various
-kinds.  It can model 2d or 3d systems with only a few particles up to
-millions or billions.
+conditions.  It can model 2d or 3d systems with only a few particles
+up to millions or billions.
 
 LAMMPS can be built and run on a laptop or destop machine, but is
 designed for parallel computers.  It will run on any parallel machine
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index 4e4332a05a..b38eb39560 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -28,13 +28,13 @@ LAMMPS Documentation :c,h1
 LAMMPS stands for Large-scale Atomic/Molecular Massively Parallel
 Simulator.
 
-LAMMPS is a classical molecular dynamics simulation code designed to
-run efficiently on parallel computers.  It is primarily used for
-materials modeling of various kinds.  It was developed originally at
-Sandia National Laboratories, a US Department of Energy facility.  The
-majority of funding for LAMMPS has come from the US Department of
-Energy (DOE).  LAMMPS is an open-source code, distributed freely under
-the terms of the GNU Public License (GPL).
+LAMMPS is a classical molecular dynamics simulation code with a focus
+on materials modeling.  It was designed to run efficiently on parallel
+computers.  It was developed originally at Sandia National
+Laboratories, a US Department of Energy facility.  The majority of
+funding for LAMMPS has come from the US Department of Energy (DOE).
+LAMMPS is an open-source code, distributed freely under the terms of
+the GNU Public License (GPL).
 
 The "LAMMPS website"_lws has a variety of information about the code.
 It includes links to an on-line version of this manual, a "mail
-- 
GitLab


From f3300135849de9ffaa657ffd7da795e2431706d9 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Thu, 2 Aug 2018 14:26:02 -0600
Subject: [PATCH 140/243] lost SPIN in package list

---
 doc/src/Packages_details.txt  | 33 +++++++++++++++++++++++++++++++++
 doc/src/Packages_standard.txt |  2 +-
 2 files changed, 34 insertions(+), 1 deletion(-)

diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt
index 543578054c..e27c67633b 100644
--- a/doc/src/Packages_details.txt
+++ b/doc/src/Packages_details.txt
@@ -53,6 +53,7 @@ as contained in the file name.
 "RIGID"_#RIGID,
 "SHOCK"_#SHOCK,
 "SNAP"_#SNAP,
+"SPIN"_#SPIN,
 "SRD"_#SRD,
 "VORONOI"_#VORONOI :tb(c=6,ea=c)
 
@@ -1352,6 +1353,38 @@ examples/snap :ul
 
 :line
 
+SPIN package :link(SPIN),h4
+
+[Contents:]
+
+Model atomic magnetic spins classically, coupled to atoms moving in
+the usual manner via MD.  Various pair, fix, and compute styles.
+
+[Author:] Julian Tranchida (Sandia).
+
+[Install or un-install:]
+
+make yes-spin
+make machine :pre
+
+make no-spin
+make machine :pre
+
+[Supporting info:]
+
+src/SPIN: filenames -> commands
+"Howto spin"_Howto_spin.html
+"pair_style spin/dmi"_pair_spin_dmi.html
+"pair_style spin/exchange"_pair_spin_exchange.html
+"pair_style spin/magelec"_pair_spin_magelec.html
+"pair_style spin/neel"_pair_spin_neel.html
+"fix nve/spin"_fix_nve_spin.html
+"fix precession/spin"_fix_precession_spin.html
+"compute spin"_compute_spin.html
+examples/SPIN :ul
+
+:line
+
 SRD package :link(SRD),h4
 
 [Contents:]
diff --git a/doc/src/Packages_standard.txt b/doc/src/Packages_standard.txt
index b2c06eebfd..cff2d38273 100644
--- a/doc/src/Packages_standard.txt
+++ b/doc/src/Packages_standard.txt
@@ -61,5 +61,5 @@ Package, Description, Doc page, Example, Library
 "RIGID"_Packages_details.html#RIGID, rigid bodies and constraints, "fix rigid"_fix_rigid.html, rigid, -
 "SHOCK"_Packages_details.html#SHOCK, shock loading methods, "fix msst"_fix_msst.html, -, -
 "SNAP"_Packages_details.html#SNAP, quantum-fitted potential, "pair_style snap"_pair_snap.html, snap, -
-"SRD"_Packages_details.html#SRD, stochastic rotation dynamics, "fix srd"_fix_srd.html, srd, -
+"SPIN"_#SPIN, magnetic atomic spin dynamics, "Howto spin"_Howto_spin.html, SPIN, -"SRD"_Packages_details.html#SRD, stochastic rotation dynamics, "fix srd"_fix_srd.html, srd, -
 "VORONOI"_Packages_details.html#VORONOI, Voronoi tesselation, "compute voronoi/atom"_compute_voronoi_atom.html, -, ext :tb(ea=c,ca1=l)
-- 
GitLab


From 9cc75792d690014555b52f8a0876bbcfb04d81ab Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Thu, 2 Aug 2018 23:29:29 -0400
Subject: [PATCH 141/243] Update lammps.book

---
 doc/src/lammps.book | 53 +++++++++++++++++++++++++++++++++++++--------
 1 file changed, 44 insertions(+), 9 deletions(-)

diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index f9798da227..a25d6e0629 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -1,7 +1,13 @@
 #HTMLDOC 1.8.28
 -t pdf14 -f "../Manual.pdf" --book --toclevels 4 --no-numbered --toctitle "Table of Contents" --title --textcolor #000000 --linkcolor #0000ff --linkstyle plain --bodycolor #ffffff --size Universal --left 1.00in --right 0.50in --top 0.50in --bottom 0.50in --header .t. --header1 ... --footer ..1 --nup 1 --tocheader .t. --tocfooter ..i --portrait --color --no-pscommands --no-xrxcomments --compression=9 --jpeg=0 --fontsize 11.0 --fontspacing 1.2 --headingfont Sans --bodyfont Serif --headfootsize 11.0 --headfootfont Sans-Bold --charset iso-8859-15 --links --embedfonts --pagemode document --pagelayout single --firstpage c1 --pageeffect none --pageduration 10 --effectduration 1.0 --no-encryption --permissions all  --owner-password ""  --user-password "" --browserwidth 680 --no-strict --no-overflow
 Manual.html
-Section_intro.html
+Intro.html
+Intro_overview.html
+Intro_features.html
+Intro_nonfeatures.html
+Intro_opensource.html
+Intro_authors.html
+Intro_website.html
 Section_start.html
 Section_commands.html
 Packages.html
@@ -19,7 +25,43 @@ Speed_kokkos.html
 Speed_omp.html
 Speed_opt.html
 Speed_compare.html
-Section_howto.html
+Howto.html
+Howto_github.html
+Howto_pylammps.html
+Howto_bash.html
+Howto_restart.html
+Howto_viz.html
+Howto_multiple.html
+Howto_replica.html
+Howto_library.html
+Howto_couple.html
+Howto_output.html
+Howto_chunk.html
+Howto_2d.html
+Howto_triclinic.html
+Howto_walls.html
+Howto_nemd.html
+Howto_granular.html
+Howto_spherical.html
+Howto_dispersion.html
+Howto_temperature.html
+Howto_thermostat.html
+Howto_barostat.html
+Howto_elastic.html
+Howto_kappa.html
+Howto_viscosity.html
+Howto_diffusion.html
+Howto_bioFF.html
+Howto_tip3p.html
+Howto_tip4p.html
+Howto_spc.html
+Howto_body.html
+Howto_polarizable.html
+Howto_coreshell.html
+Howto_drude.html
+Howto_drude2.html
+Howto_manifold.html
+Howto_spins.html
 Examples.html
 Tools.html
 Modify.html
@@ -54,13 +96,6 @@ Errors_common.html
 Errors_bugs.html
 Errors_messages.html
 Errors_warnings.html
-Section_history.html
-
-lammps_tutorials.html
-tutorial_bash_on_windows.html
-tutorial_drude.html
-tutorial_github.html
-tutorial_pylammps.html
 
 lammps_support.html
 body.html
-- 
GitLab


From 5789ef91283b353753573cdee492ca758ec1837b Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Fri, 3 Aug 2018 10:08:02 -0600
Subject: [PATCH 142/243] bug-fix for slope() function in variable

---
 examples/DIFFUSE/README                       |   4 +-
 examples/DIFFUSE/log.13Oct16.msd.2d.g++.8     | 245 -----------------
 examples/DIFFUSE/log.3Aug18.msd.2d.g++.8      | 251 ++++++++++++++++++
 ...vacf.2d.g++.8 => log.3Aug18.vacf.2d.g++.8} |  54 ++--
 src/variable.cpp                              | 189 ++++++++-----
 5 files changed, 401 insertions(+), 342 deletions(-)
 delete mode 100644 examples/DIFFUSE/log.13Oct16.msd.2d.g++.8
 create mode 100644 examples/DIFFUSE/log.3Aug18.msd.2d.g++.8
 rename examples/DIFFUSE/{log.13Oct16.vacf.2d.g++.8 => log.3Aug18.vacf.2d.g++.8} (84%)

diff --git a/examples/DIFFUSE/README b/examples/DIFFUSE/README
index df2a675f73..e78ca2eacf 100644
--- a/examples/DIFFUSE/README
+++ b/examples/DIFFUSE/README
@@ -47,7 +47,7 @@ compute the diffusion coefficient.  You can see that both measures
 give roughly the same answer and rapidly become roughly constant for
 the 100K step simulation.
 
-Dcoeff = 0.36
+Dcoeff = 0.33
 
 (2) in.vacf.2d
 
@@ -58,4 +58,4 @@ that point in time, converted into the diffusion coefficient.  You can
 see the VACF approach gives a more noise, fluctuating value for the
 diffusion coefficient, compared to the MSD approach.
 
-Dcoeff = 0.25 to 0.45
+Dcoeff = ~0.25
diff --git a/examples/DIFFUSE/log.13Oct16.msd.2d.g++.8 b/examples/DIFFUSE/log.13Oct16.msd.2d.g++.8
deleted file mode 100644
index 473aa56527..0000000000
--- a/examples/DIFFUSE/log.13Oct16.msd.2d.g++.8
+++ /dev/null
@@ -1,245 +0,0 @@
-LAMMPS (13 Oct 2016)
-# sample LAMMPS input script for diffusion of 2d LJ liquid
-# mean-squared displacement via compute msd
-
-# settings
-
-variable	x equal 40
-variable	y equal 40
-
-variable	rho equal 0.6
-variable        t equal 1.0
-variable	rc equal 2.5
-
-# problem setup
-
-units		lj
-dimension	2
-atom_style	atomic
-neigh_modify	delay 0 every 1
-
-lattice         sq2 ${rho}
-lattice         sq2 0.6
-Lattice spacing in x,y,z = 1.82574 1.82574 1.82574
-region          simbox block 0 $x 0 $y -0.1 0.1
-region          simbox block 0 40 0 $y -0.1 0.1
-region          simbox block 0 40 0 40 -0.1 0.1
-create_box      1 simbox
-Created orthogonal box = (0 0 -0.182574) to (73.0297 73.0297 0.182574)
-  4 by 2 by 1 MPI processor grid
-create_atoms    1 box
-Created 3200 atoms
-
-pair_style      lj/cut ${rc}
-pair_style      lj/cut 2.5
-pair_coeff      * * 1 1
-
-mass            * 1.0
-velocity        all create $t 97287
-velocity        all create 1 97287
-
-fix             1 all nve
-fix	        2 all langevin $t $t 0.1 498094
-fix	        2 all langevin 1 $t 0.1 498094
-fix	        2 all langevin 1 1 0.1 498094
-fix	        3 all enforce2d
-
-# equilibration run
-
-thermo          1000
-run	        5000
-Neighbor list info ...
-  1 neighbor list requests
-  update every 1 steps, delay 0 steps, check yes
-  max neighbors/atom: 2000, page size: 100000
-  master list distance cutoff = 2.8
-  ghost atom cutoff = 2.8
-  binsize = 1.4 -> bins = 53 53 1
-Memory usage per processor = 2.478 Mbytes
-Step Temp E_pair E_mol TotEng Press 
-       0            1     -1.56492            0   -0.5652325   -1.5346995 
-    1000   0.97537833   -1.5723957            0   -0.5973222   0.92877783 
-    2000   0.99008371   -1.5748206            0  -0.58504633    1.0809416 
-    3000    1.0111412   -1.5848987            0  -0.57407352    1.0174297 
-    4000    1.0055417   -1.5857581            0  -0.58053054   0.95647691 
-    5000   0.97069905   -1.5851114            0  -0.61471567   0.90108287 
-Loop time of 0.554412 on 8 procs for 5000 steps with 3200 atoms
-
-Performance: 3896017.421 tau/day, 9018.559 timesteps/s
-98.9% CPU use with 8 MPI tasks x no OpenMP threads
-
-MPI task timing breakdown:
-Section |  min time  |  avg time  |  max time  |%varavg| %total
----------------------------------------------------------------
-Pair    | 0.23992    | 0.24608    | 0.25161    |   0.7 | 44.39
-Neigh   | 0.063106   | 0.064417   | 0.066279   |   0.4 | 11.62
-Comm    | 0.072465   | 0.085066   | 0.094837   |   2.3 | 15.34
-Output  | 0.00013208 | 0.00013691 | 0.00014591 |   0.0 |  0.02
-Modify  | 0.11441    | 0.11621    | 0.11769    |   0.3 | 20.96
-Other   |            | 0.04251    |            |       |  7.67
-
-Nlocal:    400 ave 406 max 394 min
-Histogram: 1 1 0 1 0 2 1 0 1 1
-Nghost:    202.5 ave 212 max 191 min
-Histogram: 1 0 0 0 3 1 0 2 0 1
-Neighs:    2800.88 ave 2903 max 2690 min
-Histogram: 1 1 0 0 1 2 1 0 1 1
-
-Total # of neighbors = 22407
-Ave neighs/atom = 7.00219
-Neighbor list builds = 599
-Dangerous builds = 0
-
-unfix		2
-
-# data gathering run
-
-reset_timestep  0
-
-# factor of 4 in 2 variables is for 2d
-
-compute         msd all msd com yes
-variable        twopoint equal c_msd[4]/4/(step*dt+1.0e-6)
-fix             9 all vector 10 c_msd[4]
-variable        fitslope equal slope(f_9)/4/(10*dt)
-
-thermo_style	custom step temp c_msd[4] v_twopoint v_fitslope
-
-# only need to run for 10K steps to make a good 100-frame movie
-
-#dump	        1 all custom 1 tmp.dump id type vx vy vz
-
-#dump		2 all image 100 image.*.jpg type type zoom 1.6 adiam 1.2
-
-thermo          1000
-run	        100000
-Memory usage per processor = 2.853 Mbytes
-Step Temp c_msd[4] v_twopoint v_fitslope 
-       0   0.97069905            0            0        5e+20 
-    1000   0.98138076    4.0484996   0.20242494   0.18046446 
-    2000   0.97606079    9.2121392   0.23030346    0.2091528 
-    3000   0.97924866    14.815034   0.24691721   0.22619184 
-    4000   0.98568451    20.516817   0.25646019   0.23715506 
-    5000   0.97551815     27.33922   0.27339219   0.24709999 
-    6000   0.98482252     34.37734   0.28647782   0.25735178 
-    7000    0.9672559    41.696689   0.29783348   0.26654059 
-    8000    0.9836541    48.340277   0.30212673   0.27440308 
-    9000   0.99087147    56.042692   0.31134828   0.28113047 
-   10000   0.99663166     63.69663   0.31848314   0.28767921 
-   11000   0.97776688    71.144109   0.32338231   0.29344527 
-   12000   0.98246011    78.301774   0.32625739   0.29849471 
-   13000   0.98788732    85.061923   0.32716124    0.3026655 
-   14000   0.96872483      91.1658   0.32559214   0.30601023 
-   15000   0.98955796    97.278388   0.32426129    0.3084275 
-   16000   0.99855196    104.23997    0.3257499   0.31049883 
-   17000   0.98600861    110.66055    0.3254722   0.31220348 
-   18000   0.98696963    116.90111   0.32472531   0.31352676 
-   19000    0.9881192    124.21305   0.32687644   0.31480062 
-   20000   0.98527319    131.09874   0.32774685   0.31596198 
-   21000   0.99015191    137.89263   0.32831579   0.31705324 
-   22000   0.97972418    146.68982   0.33338595   0.31833889 
-   23000   0.98911012     155.1264   0.33723129   0.31979515 
-   24000   0.98810498    162.88634   0.33934653   0.32131187 
-   25000   0.96961962    170.37907   0.34075814   0.32276215 
-   26000   0.99118408    179.26511   0.34474059   0.32427111 
-   27000   0.98515159    185.90764    0.3442734   0.32574529 
-   28000   0.98951677    192.12183   0.34307469   0.32700292 
-   29000    0.9832026    196.99457   0.33964581   0.32799023 
-   30000   0.98449493    203.48475   0.33914124    0.3287171 
-   31000   0.96585993    210.06193   0.33880956   0.32935775 
-   32000   0.98758117    218.94174   0.34209646   0.33001591 
-   33000   0.98875584    225.96489   0.34237104   0.33072947 
-   34000   0.98007229     233.5792   0.34349882    0.3314385 
-   35000   0.98415295    241.98148   0.34568783   0.33216634 
-   36000   0.98101154    250.30876   0.34765106   0.33295272 
-   37000   0.97606878     258.2127   0.34893608   0.33377673 
-   38000   0.97220293    266.40464   0.35053242   0.33459273 
-   39000     0.979783     272.8578   0.34981769   0.33539728 
-   40000   0.98375673    279.87598   0.34984497   0.33609699 
-   41000   0.97506523    288.07676   0.35131312   0.33677708 
-   42000   0.97106749    296.11647    0.3525196   0.33751312 
-   43000   0.97717259    304.46747   0.35403194   0.33823441 
-   44000   0.98541435    312.57228   0.35519578    0.3389771 
-   45000   0.97678287    321.82674   0.35758527   0.33973306 
-   46000   0.98169719    329.78197   0.35845866   0.34051748 
-   47000   0.99471466    337.11283   0.35863066   0.34127239 
-   48000   0.98332437     346.0754    0.3604952   0.34202442 
-   49000   0.98126947    356.11859   0.36338631   0.34282132 
-   50000   0.98809751    365.65248   0.36565248   0.34368171 
-   51000   0.95919516    373.91833   0.36658659   0.34454516 
-   52000   0.98097913    381.26492   0.36660089   0.34538506 
-   53000   0.97774072    388.81031   0.36680218   0.34618232 
-   54000   0.99096915    395.56767   0.36626636    0.3469296 
-   55000   0.97652739    401.72735   0.36520668   0.34760374 
-   56000   0.99185306    407.28834    0.3636503   0.34819906 
-   57000   0.96289342    414.75298    0.3638184   0.34871992 
-   58000   0.97871716    424.69443   0.36611588   0.34927986 
-   59000   0.98637393    433.14205   0.36706953   0.34986296 
-   60000   0.98009845    438.14533   0.36512111   0.35040349 
-   61000   0.99416712    446.08007    0.3656394   0.35088379 
-   62000   0.97612483    450.90846   0.36363585   0.35132647 
-   63000   0.97786531    455.36749   0.36140277   0.35167458 
-   64000   0.99080668    458.04873   0.35785057    0.3519105 
-   65000   0.97952497    461.31241    0.3548557    0.3520506 
-   66000   0.98095955    463.91727   0.35145248   0.35207764 
-   67000   0.98370788       468.93   0.34994776   0.35204043 
-   68000   0.96931818    471.07765   0.34638063   0.35192685 
-   69000   0.98512552    474.59146   0.34390685   0.35174053 
-   70000   0.98065743    478.66071    0.3419005   0.35149002 
-   71000   0.98971283    482.57357   0.33984054   0.35119434 
-   72000   0.99890324    485.32018    0.3370279   0.35084345 
-   73000   0.98649924    490.19497   0.33574998   0.35043722 
-   74000   0.98723422    496.04991   0.33516886   0.35003351 
-   75000    1.0025633     501.6313   0.33442087   0.34962094 
-   76000   0.97859959    505.97813   0.33288035   0.34921013 
-   77000   0.97973006    510.55334   0.33152814    0.3487692 
-   78000    0.9903944    515.06966   0.33017286   0.34830833 
-   79000   0.96847518    518.76483   0.32833217    0.3478214 
-   80000   0.99171112    524.18127   0.32761329   0.34733349 
-   81000   0.97202573    529.09959   0.32660468    0.3468315 
-   82000   0.99368438    535.80271   0.32670897   0.34633058 
-   83000   0.97932483    543.08233   0.32715803   0.34586259 
-   84000   0.99078651    547.57861   0.32593965   0.34540839 
-   85000   0.98973457    552.24581   0.32485048   0.34493584 
-   86000    0.9835873     557.3493   0.32404029   0.34446152 
-   87000   0.97180564    564.93434   0.32467491   0.34400358 
-   88000   0.99743353    571.39837   0.32465817    0.3435667 
-   89000   0.98993437    577.81703   0.32461631    0.3431411 
-   90000    0.9926071    583.39378   0.32410765     0.342724 
-   91000   0.98800458    591.08741    0.3247733   0.34232767 
-   92000   0.98501879    596.10133   0.32396811   0.34193949 
-   93000   0.98810082    604.02652   0.32474544    0.3415681 
-   94000   0.97563748    609.43676   0.32416849     0.341209 
-   95000   0.97283448    615.15754   0.32376713   0.34084828 
-   96000    0.9883071    622.30912   0.32411933   0.34049871 
-   97000   0.97717678    628.84457   0.32414669   0.34016355 
-   98000   0.97190208    634.37377   0.32366009    0.3398341 
-   99000   0.98687379    640.66666   0.32356902   0.33950845 
-  100000   0.97559757    646.96406   0.32348203   0.33919036 
-Loop time of 9.58779 on 8 procs for 100000 steps with 3200 atoms
-
-Performance: 4505729.040 tau/day, 10429.928 timesteps/s
-99.4% CPU use with 8 MPI tasks x no OpenMP threads
-
-MPI task timing breakdown:
-Section |  min time  |  avg time  |  max time  |%varavg| %total
----------------------------------------------------------------
-Pair    | 4.8572     | 4.9363     | 4.9822     |   1.7 | 51.49
-Neigh   | 1.3583     | 1.376      | 1.3991     |   1.2 | 14.35
-Comm    | 1.5192     | 1.7079     | 1.8264     |   7.2 | 17.81
-Output  | 0.0085125  | 0.0086059  | 0.0089455  |   0.1 |  0.09
-Modify  | 0.77663    | 0.7903     | 0.81378    |   1.3 |  8.24
-Other   |            | 0.7686     |            |       |  8.02
-
-Nlocal:    400 ave 413 max 391 min
-Histogram: 2 1 0 2 0 0 1 1 0 1
-Nghost:    204.75 ave 213 max 197 min
-Histogram: 1 1 0 1 0 3 0 1 0 1
-Neighs:    2800.62 ave 2959 max 2661 min
-Histogram: 1 1 1 2 0 0 0 1 1 1
-
-Total # of neighbors = 22405
-Ave neighs/atom = 7.00156
-Neighbor list builds = 12728
-Dangerous builds = 0
-Total wall time: 0:00:10
diff --git a/examples/DIFFUSE/log.3Aug18.msd.2d.g++.8 b/examples/DIFFUSE/log.3Aug18.msd.2d.g++.8
new file mode 100644
index 0000000000..113da9040d
--- /dev/null
+++ b/examples/DIFFUSE/log.3Aug18.msd.2d.g++.8
@@ -0,0 +1,251 @@
+LAMMPS (2 Aug 2018)
+# sample LAMMPS input script for diffusion of 2d LJ liquid
+# mean-squared displacement via compute msd
+
+# settings
+
+variable	x equal 40
+variable	y equal 40
+
+variable	rho equal 0.6
+variable        t equal 1.0
+variable	rc equal 2.5
+
+# problem setup
+
+units		lj
+dimension	2
+atom_style	atomic
+neigh_modify	delay 0 every 1
+
+lattice         sq2 ${rho}
+lattice         sq2 0.6
+Lattice spacing in x,y,z = 1.82574 1.82574 1.82574
+region          simbox block 0 $x 0 $y -0.1 0.1
+region          simbox block 0 40 0 $y -0.1 0.1
+region          simbox block 0 40 0 40 -0.1 0.1
+create_box      1 simbox
+Created orthogonal box = (0 0 -0.182574) to (73.0297 73.0297 0.182574)
+  4 by 2 by 1 MPI processor grid
+create_atoms    1 box
+Created 3200 atoms
+  Time spent = 0.000706911 secs
+
+pair_style      lj/cut ${rc}
+pair_style      lj/cut 2.5
+pair_coeff      * * 1 1
+
+mass            * 1.0
+velocity        all create $t 97287
+velocity        all create 1 97287
+
+fix             1 all nve
+fix	        2 all langevin $t $t 0.1 498094
+fix	        2 all langevin 1 $t 0.1 498094
+fix	        2 all langevin 1 1 0.1 498094
+fix	        3 all enforce2d
+
+# equilibration run
+
+thermo          1000
+run	        5000
+Neighbor list info ...
+  update every 1 steps, delay 0 steps, check yes
+  max neighbors/atom: 2000, page size: 100000
+  master list distance cutoff = 2.8
+  ghost atom cutoff = 2.8
+  binsize = 1.4, bins = 53 53 1
+  1 neighbor lists, perpetual/occasional/extra = 1 0 0
+  (1) pair lj/cut, 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) = 3.052 | 3.052 | 3.052 Mbytes
+Step Temp E_pair E_mol TotEng Press 
+       0            1     -1.56492            0   -0.5652325   -1.5346995 
+    1000   0.97537833   -1.5723957            0   -0.5973222   0.92877783 
+    2000   0.99008371   -1.5748206            0  -0.58504633    1.0809416 
+    3000    1.0111412   -1.5848987            0  -0.57407352    1.0174297 
+    4000    1.0055417   -1.5857581            0  -0.58053054   0.95647691 
+    5000   0.97069905   -1.5851114            0  -0.61471567   0.90108287 
+Loop time of 0.667446 on 8 procs for 5000 steps with 3200 atoms
+
+Performance: 3236214.756 tau/day, 7491.238 timesteps/s
+99.9% CPU use with 8 MPI tasks x no OpenMP threads
+
+MPI task timing breakdown:
+Section |  min time  |  avg time  |  max time  |%varavg| %total
+---------------------------------------------------------------
+Pair    | 0.22913    | 0.24877    | 0.28382    |   3.6 | 37.27
+Neigh   | 0.064419   | 0.071256   | 0.080013   |   1.7 | 10.68
+Comm    | 0.103      | 0.14054    | 0.17204    |   5.5 | 21.06
+Output  | 0.00010705 | 0.00013995 | 0.00021911 |   0.0 |  0.02
+Modify  | 0.13457    | 0.14973    | 0.16887    |   2.6 | 22.43
+Other   |            | 0.05701    |            |       |  8.54
+
+Nlocal:    400 ave 406 max 394 min
+Histogram: 1 1 0 1 0 2 1 0 1 1
+Nghost:    202.5 ave 212 max 191 min
+Histogram: 1 0 0 0 3 1 0 2 0 1
+Neighs:    2800.88 ave 2903 max 2690 min
+Histogram: 1 1 0 0 1 2 1 0 1 1
+
+Total # of neighbors = 22407
+Ave neighs/atom = 7.00219
+Neighbor list builds = 599
+Dangerous builds = 0
+
+unfix		2
+
+# data gathering run
+
+reset_timestep  0
+
+# factor of 4 in 2 variables is for 2d
+
+compute         msd all msd com yes
+variable        twopoint equal c_msd[4]/4/(step*dt+1.0e-6)
+fix             9 all vector 10 c_msd[4]
+variable        fitslope equal slope(f_9)/4/(10*dt)
+
+thermo_style	custom step temp c_msd[4] v_twopoint v_fitslope
+
+# only need to run for 10K steps to make a good 100-frame movie
+
+#dump	        1 all custom 1 tmp.dump id type vx vy vz
+
+#dump		2 all image 100 image.*.jpg type type zoom 1.6 adiam 1.2
+
+thermo          1000
+run	        100000
+Per MPI rank memory allocation (min/avg/max) = 3.427 | 3.427 | 3.427 Mbytes
+Step Temp c_msd[4] v_twopoint v_fitslope 
+       0   0.97069905            0            0        5e+20 
+    1000   0.98138076    4.0484996   0.20242494   0.20685564 
+    2000   0.97606079    9.2121392   0.23030346   0.23687918 
+    3000   0.97924866    14.815034   0.24691721   0.25405247 
+    4000   0.98568451    20.516817   0.25646019   0.26353644 
+    5000   0.97551815     27.33922   0.27339219   0.27544492 
+    6000   0.98482252     34.37734   0.28647782   0.28966619 
+    7000    0.9672559    41.696689   0.29783348   0.30165524 
+    8000    0.9836541    48.340277   0.30212673   0.31085371 
+    9000   0.99087147    56.042692   0.31134828   0.31811489 
+   10000   0.99663166     63.69663   0.31848314   0.32589374 
+   11000   0.97776688    71.144109   0.32338231   0.33219745 
+   12000   0.98246011    78.301774   0.32625739      0.33723 
+   13000   0.98788732    85.061923   0.32716124   0.34053027 
+   14000   0.96872483      91.1658   0.32559214   0.34231162 
+   15000   0.98955796    97.278388   0.32426129   0.34229511 
+   16000   0.99855196    104.23997    0.3257499   0.34217252 
+   17000   0.98600861    110.66055    0.3254722   0.34172446 
+   18000   0.98696963    116.90111   0.32472531    0.3408227 
+   19000    0.9881192    124.21305   0.32687644   0.34036538 
+   20000   0.98527319    131.09874   0.32774685   0.34003478 
+   21000   0.99015191    137.89263   0.32831579   0.33987868 
+   22000   0.97972418    146.68982   0.33338595   0.34060035 
+   23000   0.98911012     155.1264   0.33723129   0.34201036 
+   24000   0.98810498    162.88634   0.33934653   0.34371488 
+   25000   0.96961962    170.37907   0.34075814   0.34531409 
+   26000   0.99118408    179.26511   0.34474059   0.34717195 
+   27000   0.98515159    185.90764    0.3442734   0.34898035 
+   28000   0.98951677    192.12183   0.34307469   0.35021808 
+   29000    0.9832026    196.99457   0.33964581   0.35075459 
+   30000   0.98449493    203.48475   0.33914124   0.35066186 
+   31000   0.96585993    210.06193   0.33880956   0.35046715 
+   32000   0.98758117    218.94174   0.34209646   0.35046623 
+   33000   0.98875584    225.96489   0.34237104   0.35073944 
+   34000   0.98007229     233.5792   0.34349882   0.35109188 
+   35000   0.98415295    241.98148   0.34568783   0.35157879 
+   36000   0.98101154    250.30876   0.34765106    0.3523013 
+   37000   0.97606878     258.2127   0.34893608   0.35318097 
+   38000   0.97220293    266.40464   0.35053242    0.3540743 
+   39000     0.979783     272.8578   0.34981769   0.35496561 
+   40000   0.98375673    279.87598   0.34984497   0.35558182 
+   41000   0.97506523    288.07676   0.35131312   0.35618259 
+   42000   0.97106749    296.11647    0.3525196   0.35698571 
+   43000   0.97717259    304.46747   0.35403194    0.3577736 
+   44000   0.98541435    312.57228   0.35519578   0.35865003 
+   45000   0.97678287    321.82674   0.35758527   0.35958623 
+   46000   0.98169719    329.78197   0.35845866   0.36062236 
+   47000   0.99471466    337.11283   0.35863066   0.36158322 
+   48000   0.98332437     346.0754    0.3604952   0.36255042 
+   49000   0.98126947    356.11859   0.36338631    0.3636628 
+   50000   0.98809751    365.65248   0.36565248   0.36496809 
+   51000   0.95919516    373.91833   0.36658659   0.36628073 
+   52000   0.98097913    381.26492   0.36660089   0.36752237 
+   53000   0.97774072    388.81031   0.36680218   0.36863962 
+   54000   0.99096915    395.56767   0.36626636   0.36961521 
+   55000   0.97652739    401.72735   0.36520668   0.37038579 
+   56000   0.99185306    407.28834    0.3636503   0.37094092 
+   57000   0.96289342    414.75298    0.3638184   0.37130039 
+   58000   0.97871716    424.69443   0.36611588   0.37180428 
+   59000   0.98637393    433.14205   0.36706953   0.37239862 
+   60000   0.98009845    438.14533   0.36512111   0.37288487 
+   61000   0.99416712    446.08007    0.3656394   0.37321496 
+   62000   0.97612483    450.90846   0.36363585   0.37345792 
+   63000   0.97786531    455.36749   0.36140277   0.37344803 
+   64000   0.99080668    458.04873   0.35785057   0.37313914 
+   65000   0.97952497    461.31241    0.3548557    0.3725875 
+   66000   0.98095955    463.91727   0.35145248   0.37174735 
+   67000   0.98370788       468.93   0.34994776   0.37076942 
+   68000   0.96931818    471.07765   0.34638063   0.36961868 
+   69000   0.98512552    474.59146   0.34390685   0.36830908 
+   70000   0.98065743    478.66071    0.3419005   0.36686789 
+   71000   0.98971283    482.57357   0.33984054   0.36535224 
+   72000   0.99890324    485.32018    0.3370279   0.36373174 
+   73000   0.98649924    490.19497   0.33574998   0.36200692 
+   74000   0.98723422    496.04991   0.33516886   0.36034919 
+   75000    1.0025633     501.6313   0.33442087   0.35872052 
+   76000   0.97859959    505.97813   0.33288035   0.35714939 
+   77000   0.97973006    510.55334   0.33152814   0.35553808 
+   78000    0.9903944    515.06966   0.33017286   0.35391584 
+   79000   0.96847518    518.76483   0.32833217   0.35226287 
+   80000   0.99171112    524.18127   0.32761329   0.35065267 
+   81000   0.97202573    529.09959   0.32660468   0.34904364 
+   82000   0.99368438    535.80271   0.32670897   0.34747913 
+   83000   0.97932483    543.08233   0.32715803   0.34605097 
+   84000   0.99078651    547.57861   0.32593965   0.34469765 
+   85000   0.98973457    552.24581   0.32485048   0.34332115 
+   86000    0.9835873     557.3493   0.32404029   0.34197018 
+   87000   0.97180564    564.93434   0.32467491   0.34069702 
+   88000   0.99743353    571.39837   0.32465817   0.33951258 
+   89000   0.98993437    577.81703   0.32461631   0.33838511 
+   90000    0.9926071    583.39378   0.32410765   0.33730429 
+   91000   0.98800458    591.08741    0.3247733   0.33630505 
+   92000   0.98501879    596.10133   0.32396811   0.33534725 
+   93000   0.98810082    604.02652   0.32474544   0.33445545 
+   94000   0.97563748    609.43676   0.32416849   0.33361404 
+   95000   0.97283448    615.15754   0.32376713   0.33278044 
+   96000    0.9883071    622.30912   0.32411933   0.33199212 
+   97000   0.97717678    628.84457   0.32414669   0.33125729 
+   98000   0.97190208    634.37377   0.32366009   0.33054877 
+   99000   0.98687379    640.66666   0.32356902   0.32986014 
+  100000   0.97559757    646.96406   0.32348203   0.32920186 
+Loop time of 7.61838 on 8 procs for 100000 steps with 3200 atoms
+
+Performance: 5670494.518 tau/day, 13126.145 timesteps/s
+100.0% CPU use with 8 MPI tasks x no OpenMP threads
+
+MPI task timing breakdown:
+Section |  min time  |  avg time  |  max time  |%varavg| %total
+---------------------------------------------------------------
+Pair    | 3.5458     | 3.6709     | 3.8234     |   4.3 | 48.19
+Neigh   | 1.1363     | 1.1513     | 1.1753     |   1.0 | 15.11
+Comm    | 1.5901     | 1.7017     | 1.8664     |   6.9 | 22.34
+Output  | 0.0041966  | 0.0043583  | 0.0050626  |   0.4 |  0.06
+Modify  | 0.63816    | 0.65537    | 0.68918    |   2.0 |  8.60
+Other   |            | 0.4348     |            |       |  5.71
+
+Nlocal:    400 ave 413 max 391 min
+Histogram: 2 1 0 2 0 0 1 1 0 1
+Nghost:    204.75 ave 213 max 197 min
+Histogram: 1 1 0 1 0 3 0 1 0 1
+Neighs:    2800.62 ave 2959 max 2661 min
+Histogram: 1 1 1 2 0 0 0 1 1 1
+
+Total # of neighbors = 22405
+Ave neighs/atom = 7.00156
+Neighbor list builds = 12728
+Dangerous builds = 0
+Total wall time: 0:00:08
diff --git a/examples/DIFFUSE/log.13Oct16.vacf.2d.g++.8 b/examples/DIFFUSE/log.3Aug18.vacf.2d.g++.8
similarity index 84%
rename from examples/DIFFUSE/log.13Oct16.vacf.2d.g++.8
rename to examples/DIFFUSE/log.3Aug18.vacf.2d.g++.8
index 458315bc29..80c57ada9c 100644
--- a/examples/DIFFUSE/log.13Oct16.vacf.2d.g++.8
+++ b/examples/DIFFUSE/log.3Aug18.vacf.2d.g++.8
@@ -1,4 +1,4 @@
-LAMMPS (13 Oct 2016)
+LAMMPS (2 Aug 2018)
 # sample LAMMPS input script for diffusion of 2d LJ liquid
 # mean-squared displacement via compute msd
 
@@ -29,6 +29,7 @@ Created orthogonal box = (0 0 -0.182574) to (73.0297 73.0297 0.182574)
   4 by 2 by 1 MPI processor grid
 create_atoms    1 box
 Created 3200 atoms
+  Time spent = 0.000712872 secs
 
 pair_style      lj/cut ${rc}
 pair_style      lj/cut 2.5
@@ -49,13 +50,18 @@ fix	        3 all enforce2d
 thermo          1000
 run	        5000
 Neighbor list info ...
-  1 neighbor list requests
   update every 1 steps, delay 0 steps, check yes
   max neighbors/atom: 2000, page size: 100000
   master list distance cutoff = 2.8
   ghost atom cutoff = 2.8
-  binsize = 1.4 -> bins = 53 53 1
-Memory usage per processor = 2.478 Mbytes
+  binsize = 1.4, bins = 53 53 1
+  1 neighbor lists, perpetual/occasional/extra = 1 0 0
+  (1) pair lj/cut, 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) = 3.052 | 3.052 | 3.052 Mbytes
 Step Temp E_pair E_mol TotEng Press 
        0            1     -1.56492            0   -0.5652325   -1.5346995 
     1000   0.97537833   -1.5723957            0   -0.5973222   0.92877783 
@@ -63,20 +69,20 @@ Step Temp E_pair E_mol TotEng Press
     3000    1.0111412   -1.5848987            0  -0.57407352    1.0174297 
     4000    1.0055417   -1.5857581            0  -0.58053054   0.95647691 
     5000   0.97069905   -1.5851114            0  -0.61471567   0.90108287 
-Loop time of 0.557588 on 8 procs for 5000 steps with 3200 atoms
+Loop time of 0.648098 on 8 procs for 5000 steps with 3200 atoms
 
-Performance: 3873826.669 tau/day, 8967.191 timesteps/s
-99.1% CPU use with 8 MPI tasks x no OpenMP threads
+Performance: 3332829.949 tau/day, 7714.884 timesteps/s
+99.9% CPU use with 8 MPI tasks x no OpenMP threads
 
 MPI task timing breakdown:
 Section |  min time  |  avg time  |  max time  |%varavg| %total
 ---------------------------------------------------------------
-Pair    | 0.23784    | 0.24683    | 0.25594    |   1.0 | 44.27
-Neigh   | 0.062975   | 0.06439    | 0.0662     |   0.4 | 11.55
-Comm    | 0.083826   | 0.092564   | 0.1035     |   2.1 | 16.60
-Output  | 0.00011778 | 0.00012615 | 0.00014257 |   0.1 |  0.02
-Modify  | 0.11466    | 0.11648    | 0.1187     |   0.4 | 20.89
-Other   |            | 0.0372     |            |       |  6.67
+Pair    | 0.22614    | 0.24602    | 0.27481    |   2.8 | 37.96
+Neigh   | 0.066875   | 0.07135    | 0.077825   |   1.2 | 11.01
+Comm    | 0.098293   | 0.12744    | 0.1569     |   5.6 | 19.66
+Output  | 0.0001049  | 0.00012228 | 0.00014496 |   0.0 |  0.02
+Modify  | 0.13725    | 0.14919    | 0.16903    |   2.4 | 23.02
+Other   |            | 0.05398    |            |       |  8.33
 
 Nlocal:    400 ave 406 max 394 min
 Histogram: 1 1 0 1 0 2 1 0 1 1
@@ -114,7 +120,7 @@ thermo_style	custom step temp c_vacf[4] v_vacf
 
 thermo          1000
 run	        100000
-Memory usage per processor = 2.853 Mbytes
+Per MPI rank memory allocation (min/avg/max) = 3.427 | 3.427 | 3.427 Mbytes
 Step Temp c_vacf[4] v_vacf 
        0   0.97069905    1.9407914            0 
     1000   0.98138076  0.029239763   0.22157396 
@@ -217,20 +223,20 @@ Step Temp c_vacf[4] v_vacf
    98000   0.97190208  0.015065013   0.20906937 
    99000   0.98687379 -0.036869401   0.22993959 
   100000   0.97559757  0.045464091   0.23369283 
-Loop time of 10.8346 on 8 procs for 100000 steps with 3200 atoms
+Loop time of 8.16691 on 8 procs for 100000 steps with 3200 atoms
 
-Performance: 3987213.825 tau/day, 9229.662 timesteps/s
-99.5% CPU use with 8 MPI tasks x no OpenMP threads
+Performance: 5289636.190 tau/day, 12244.528 timesteps/s
+100.0% CPU use with 8 MPI tasks x no OpenMP threads
 
 MPI task timing breakdown:
 Section |  min time  |  avg time  |  max time  |%varavg| %total
 ---------------------------------------------------------------
-Pair    | 4.8486     | 4.9469     | 5.0248     |   2.8 | 45.66
-Neigh   | 1.3613     | 1.374      | 1.3916     |   0.8 | 12.68
-Comm    | 1.8181     | 1.9534     | 2.0665     |   5.7 | 18.03
-Output  | 0.016565   | 0.016701   | 0.017039   |   0.1 |  0.15
-Modify  | 1.8395     | 1.9053     | 1.9704     |   2.8 | 17.59
-Other   |            | 0.6383     |            |       |  5.89
+Pair    | 3.5668     | 3.6612     | 3.7867     |   4.0 | 44.83
+Neigh   | 1.1409     | 1.1555     | 1.1804     |   1.4 | 14.15
+Comm    | 1.581      | 1.711      | 1.8239     |   7.1 | 20.95
+Output  | 0.016626   | 0.016831   | 0.017569   |   0.2 |  0.21
+Modify  | 1.225      | 1.2594     | 1.3008     |   2.0 | 15.42
+Other   |            | 0.363      |            |       |  4.45
 
 Nlocal:    400 ave 413 max 391 min
 Histogram: 2 1 0 2 0 0 1 1 0 1
@@ -243,4 +249,4 @@ Total # of neighbors = 22405
 Ave neighs/atom = 7.00156
 Neighbor list builds = 12728
 Dangerous builds = 0
-Total wall time: 0:00:11
+Total wall time: 0:00:08
diff --git a/src/variable.cpp b/src/variable.cpp
index 86296b4b40..f005221400 100644
--- a/src/variable.cpp
+++ b/src/variable.cpp
@@ -1576,7 +1576,8 @@ double Variable::evaluate(char *str, Tree **tree, int ivar)
           newtree->nextra = 0;
           treestack[ntreestack++] = newtree;
 
-        } else print_var_error(FLERR,"Mismatched compute in variable formula",ivar);
+        } else print_var_error(FLERR,
+                               "Mismatched compute in variable formula",ivar);
 
       // ----------------
       // fix
@@ -1584,7 +1585,8 @@ double Variable::evaluate(char *str, Tree **tree, int ivar)
 
       } else if (strncmp(word,"f_",2) == 0 || strncmp(word,"F_",2) == 0) {
         if (domain->box_exist == 0)
-          print_var_error(FLERR,"Variable evaluation before simulation box is defined",ivar);
+          print_var_error(FLERR,"Variable evaluation before "
+                          "simulation box is defined",ivar);
 
         // uppercase used to force access of
         // global vector vs global scalar, and global array vs global vector
@@ -1667,11 +1669,14 @@ double Variable::evaluate(char *str, Tree **tree, int ivar)
 
           if (index1 > fix->size_array_rows &&
               fix->size_array_rows_variable == 0)
-            print_var_error(FLERR,"Variable formula fix array is accessed out-of-range",ivar);
+            print_var_error(FLERR,"Variable formula fix array is "
+                            "accessed out-of-range",ivar);
           if (index2 > fix->size_array_cols)
-            print_var_error(FLERR,"Variable formula fix array is accessed out-of-range",ivar);
+            print_var_error(FLERR,"Variable formula fix array is "
+                            "accessed out-of-range",ivar);
           if (update->whichflag > 0 && update->ntimestep % fix->global_freq)
-            print_var_error(FLERR,"Fix in variable not computed at a compatible time",ivar);
+            print_var_error(FLERR,"Fix in variable not computed at a "
+                            "compatible time",ivar);
 
           value1 = fix->compute_array(index1-1,index2-1);
           if (tree) {
@@ -1688,13 +1693,17 @@ double Variable::evaluate(char *str, Tree **tree, int ivar)
         } else if (nbracket == 0 && fix->vector_flag) {
 
           if (update->whichflag > 0 && update->ntimestep % fix->global_freq)
-            print_var_error(FLERR,"Fix in variable not computed at compatible time",ivar);
+            print_var_error(FLERR,"Fix in variable not computed at "
+                            "compatible time",ivar);
           if (tree == NULL)
-            print_var_error(FLERR,"Fix global vector in ""equal-style variable formula",ivar);
+            print_var_error(FLERR,"Fix global vector in "
+                            "equal-style variable formula",ivar);
           if (treetype == ATOM)
-            print_var_error(FLERR,"Fix global vector in ""atom-style variable formula",ivar);
+            print_var_error(FLERR,"Fix global vector in "
+                            "atom-style variable formula",ivar);
           if (fix->size_vector == 0)
-            print_var_error(FLERR,"Variable formula fix vector is zero length",ivar);
+            print_var_error(FLERR,"Variable formula "
+                            "fix vector is zero length",ivar);
 
           int nvec = fix->size_vector;
           double *vec;
@@ -1726,7 +1735,8 @@ double Variable::evaluate(char *str, Tree **tree, int ivar)
             print_var_error(FLERR,"Fix global vector in "
                             "atom-style variable formula",ivar);
           if (fix->size_array_rows == 0)
-            print_var_error(FLERR,"Variable formula fix array is zero length",ivar);
+            print_var_error(FLERR,"Variable formula fix array is "
+                            "zero length",ivar);
 
           int nvec = fix->size_array_rows;
           double *vec;
@@ -1785,10 +1795,12 @@ double Variable::evaluate(char *str, Tree **tree, int ivar)
                    fix->size_peratom_cols == 0) {
 
           if (tree == NULL)
-            print_var_error(FLERR,"Per-atom fix in equal-style variable formula",ivar);
+            print_var_error(FLERR,"Per-atom fix in "
+                            "equal-style variable formula",ivar);
           if (update->whichflag > 0 &&
               update->ntimestep % fix->peratom_freq)
-            print_var_error(FLERR,"Fix in variable not computed at compatible time",ivar);
+            print_var_error(FLERR,"Fix in variable not computed at "
+                            "compatible time",ivar);
 
           Tree *newtree = new Tree();
           newtree->type = ATOMARRAY;
@@ -1805,13 +1817,15 @@ double Variable::evaluate(char *str, Tree **tree, int ivar)
                    fix->size_peratom_cols > 0) {
 
           if (tree == NULL)
-            print_var_error(FLERR,"Per-atom fix in equal-style variable formula",ivar);
+            print_var_error(FLERR,"Per-atom fix in "
+                            "equal-style variable formula",ivar);
           if (index1 > fix->size_peratom_cols)
             print_var_error(FLERR,"Variable formula fix array "
                             "is accessed out-of-range",ivar);
           if (update->whichflag > 0 &&
               update->ntimestep % fix->peratom_freq)
-            print_var_error(FLERR,"Fix in variable not computed at compatible time",ivar);
+            print_var_error(FLERR,"Fix in variable not computed at "
+                            "compatible time",ivar);
 
           Tree *newtree = new Tree();
           newtree->type = ATOMARRAY;
@@ -1878,7 +1892,8 @@ double Variable::evaluate(char *str, Tree **tree, int ivar)
 
           char *var = retrieve(word+2);
           if (var == NULL)
-            print_var_error(FLERR,"Invalid variable evaluation in variable formula",ivar);
+            print_var_error(FLERR,"Invalid variable evaluation in "
+                            "variable formula",ivar);
           if (tree) {
             Tree *newtree = new Tree();
             newtree->type = VALUE;
@@ -1977,7 +1992,8 @@ double Variable::evaluate(char *str, Tree **tree, int ivar)
           double *vec;
           int nvec = compute_vector(ivar,&vec);
           if (index <= 0 || index > nvec)
-            print_var_error(FLERR,"Invalid index into vector-style variable",ivar);
+            print_var_error(FLERR,"Invalid index into "
+                            "vector-style variable",ivar);
           int m = index;   // convert from tagint to int
 
           if (tree) {
@@ -1989,7 +2005,8 @@ double Variable::evaluate(char *str, Tree **tree, int ivar)
             treestack[ntreestack++] = newtree;
           } else argstack[nargstack++] = vec[m-1];
 
-        } else print_var_error(FLERR,"Mismatched variable in variable formula",ivar);
+        } else print_var_error(FLERR,"Mismatched variable in "
+                               "variable formula",ivar);
 
       // ----------------
       // math/group/special function or atom value/vector or
@@ -2194,7 +2211,8 @@ double Variable::evaluate(char *str, Tree **tree, int ivar)
             if (value2 == 0.0)
               argstack[nargstack++] = 1.0;
             else if ((value1 == 0.0) && (value2 < 0.0))
-              print_var_error(FLERR,"Invalid power expression in variable formula",ivar);
+              print_var_error(FLERR,"Invalid power expression in "
+                              "variable formula",ivar);
             else argstack[nargstack++] = pow(value1,value2);
           } else if (opprevious == UNARY) {
             argstack[nargstack++] = -value2;
@@ -3368,7 +3386,8 @@ int Variable::math_function(char *word, char *contents, Tree **tree,
     if (tree) newtree->type = LN;
     else {
       if (value1 <= 0.0)
-        print_var_error(FLERR,"Log of zero/negative value in variable formula",ivar);
+        print_var_error(FLERR,"Log of zero/negative value in "
+                        "variable formula",ivar);
       argstack[nargstack++] = log(value1);
     }
   } else if (strcmp(word,"log") == 0) {
@@ -3377,7 +3396,8 @@ int Variable::math_function(char *word, char *contents, Tree **tree,
     if (tree) newtree->type = LOG;
     else {
       if (value1 <= 0.0)
-        print_var_error(FLERR,"Log of zero/negative value in variable formula",ivar);
+        print_var_error(FLERR,"Log of zero/negative value in "
+                        "variable formula",ivar);
       argstack[nargstack++] = log10(value1);
     }
   } else if (strcmp(word,"abs") == 0) {
@@ -3482,7 +3502,8 @@ int Variable::math_function(char *word, char *contents, Tree **tree,
     if (narg != 2)
       print_var_error(FLERR,"Invalid math function in variable formula",ivar);
     if (update->whichflag == 0)
-      print_var_error(FLERR,"Cannot use ramp in variable formula between runs",ivar);
+      print_var_error(FLERR,"Cannot use ramp in "
+                      "variable formula between runs",ivar);
     if (tree) newtree->type = RAMP;
     else {
       double delta = update->ntimestep - update->beginstep;
@@ -3617,7 +3638,8 @@ int Variable::math_function(char *word, char *contents, Tree **tree,
     if (narg != 2)
       print_var_error(FLERR,"Invalid math function in variable formula",ivar);
     if (update->whichflag == 0)
-      print_var_error(FLERR,"Cannot use vdisplace in variable formula between runs",ivar);
+      print_var_error(FLERR,"Cannot use vdisplace in "
+                      "variable formula between runs",ivar);
     if (tree) newtree->type = VDISPLACE;
     else {
       double delta = update->ntimestep - update->beginstep;
@@ -3629,7 +3651,8 @@ int Variable::math_function(char *word, char *contents, Tree **tree,
     if (narg != 3)
       print_var_error(FLERR,"Invalid math function in variable formula",ivar);
     if (update->whichflag == 0)
-      print_var_error(FLERR,"Cannot use swiggle in variable formula between runs",ivar);
+      print_var_error(FLERR,"Cannot use swiggle in "
+                      "variable formula between runs",ivar);
     if (tree) newtree->type = CWIGGLE;
     else {
       if (values[0] == 0.0)
@@ -3644,7 +3667,8 @@ int Variable::math_function(char *word, char *contents, Tree **tree,
     if (narg != 3)
       print_var_error(FLERR,"Invalid math function in variable formula",ivar);
     if (update->whichflag == 0)
-      print_var_error(FLERR,"Cannot use cwiggle in variable formula between runs",ivar);
+      print_var_error(FLERR,"Cannot use cwiggle in "
+                      "variable formula between runs",ivar);
     if (tree) newtree->type = CWIGGLE;
     else {
       if (values[0] == 0.0)
@@ -3709,7 +3733,8 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
 
   if (strcmp(word,"count") == 0) {
     if (narg == 1) value = group->count(igroup);
-    else if (narg == 2) value = group->count(igroup,region_function(args[1],ivar));
+    else if (narg == 2) 
+      value = group->count(igroup,region_function(args[1],ivar));
     else print_var_error(FLERR,"Invalid group function in variable formula",ivar);
 
   } else if (strcmp(word,"mass") == 0) {
@@ -3719,7 +3744,8 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
 
   } else if (strcmp(word,"charge") == 0) {
     if (narg == 1) value = group->charge(igroup);
-    else if (narg == 2) value = group->charge(igroup,region_function(args[1],ivar));
+    else if (narg == 2) 
+      value = group->charge(igroup,region_function(args[1],ivar));
     else print_var_error(FLERR,"Invalid group function in variable formula",ivar);
 
   } else if (strcmp(word,"xcm") == 0) {
@@ -3732,7 +3758,8 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
       int iregion = region_function(args[2],ivar);
       double masstotal = group->mass(igroup,iregion);
       group->xcm(igroup,masstotal,xcm,iregion);
-    } else print_var_error(FLERR,"Invalid group function in variable formula",ivar);
+    } else print_var_error(FLERR,"Invalid group function in "
+                           "variable formula",ivar);
     if (strcmp(args[1],"x") == 0) value = xcm[0];
     else if (strcmp(args[1],"y") == 0) value = xcm[1];
     else if (strcmp(args[1],"z") == 0) value = xcm[2];
@@ -3748,7 +3775,8 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
       int iregion = region_function(args[2],ivar);
       double masstotal = group->mass(igroup,iregion);
       group->vcm(igroup,masstotal,vcm,iregion);
-    } else print_var_error(FLERR,"Invalid group function in variable formula",ivar);
+    } else print_var_error(FLERR,"Invalid group function in "
+                           "variable formula",ivar);
     if (strcmp(args[1],"x") == 0) value = vcm[0];
     else if (strcmp(args[1],"y") == 0) value = vcm[1];
     else if (strcmp(args[1],"z") == 0) value = vcm[2];
@@ -3767,7 +3795,8 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
   } else if (strcmp(word,"bound") == 0) {
     double minmax[6];
     if (narg == 2) group->bounds(igroup,minmax);
-    else if (narg == 3) group->bounds(igroup,minmax,region_function(args[2],ivar));
+    else if (narg == 3) 
+      group->bounds(igroup,minmax,region_function(args[2],ivar));
     else print_var_error(FLERR,"Invalid group function in variable formula",ivar);
     if (strcmp(args[1],"xmin") == 0) value = minmax[0];
     else if (strcmp(args[1],"xmax") == 0) value = minmax[1];
@@ -3789,7 +3818,8 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
       double masstotal = group->mass(igroup,iregion);
       group->xcm(igroup,masstotal,xcm,iregion);
       value = group->gyration(igroup,masstotal,xcm,iregion);
-    } else print_var_error(FLERR,"Invalid group function in variable formula",ivar);
+    } else print_var_error(FLERR,"Invalid group function in "
+                           "variable formula",ivar);
 
   } else if (strcmp(word,"ke") == 0) {
     if (narg == 1) value = group->ke(igroup);
@@ -3808,7 +3838,8 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
       double masstotal = group->mass(igroup,iregion);
       group->xcm(igroup,masstotal,xcm,iregion);
       group->angmom(igroup,xcm,lmom,iregion);
-    } else print_var_error(FLERR,"Invalid group function in variable formula",ivar);
+    } else print_var_error(FLERR,"Invalid group function in "
+                           "variable formula",ivar);
     if (strcmp(args[1],"x") == 0) value = lmom[0];
     else if (strcmp(args[1],"y") == 0) value = lmom[1];
     else if (strcmp(args[1],"z") == 0) value = lmom[2];
@@ -3826,7 +3857,8 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
       double masstotal = group->mass(igroup,iregion);
       group->xcm(igroup,masstotal,xcm,iregion);
       group->torque(igroup,xcm,tq,iregion);
-    } else print_var_error(FLERR,"Invalid group function in variable formula",ivar);
+    } else print_var_error(FLERR,"Invalid group function in "
+                           "variable formula",ivar);
     if (strcmp(args[1],"x") == 0) value = tq[0];
     else if (strcmp(args[1],"y") == 0) value = tq[1];
     else if (strcmp(args[1],"z") == 0) value = tq[2];
@@ -3844,7 +3876,8 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
       double masstotal = group->mass(igroup,iregion);
       group->xcm(igroup,masstotal,xcm,iregion);
       group->inertia(igroup,xcm,inertia,iregion);
-    } else print_var_error(FLERR,"Invalid group function in variable formula",ivar);
+    } else print_var_error(FLERR,"Invalid group function in "
+                           "variable formula",ivar);
     if (strcmp(args[1],"xx") == 0) value = inertia[0][0];
     else if (strcmp(args[1],"yy") == 0) value = inertia[1][1];
     else if (strcmp(args[1],"zz") == 0) value = inertia[2][2];
@@ -3869,7 +3902,8 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
       group->angmom(igroup,xcm,angmom,iregion);
       group->inertia(igroup,xcm,inertia,iregion);
       group->omega(angmom,inertia,omega);
-    } else print_var_error(FLERR,"Invalid group function in variable formula",ivar);
+    } else print_var_error(FLERR,"Invalid group function in "
+                           "variable formula",ivar);
     if (strcmp(args[1],"x") == 0) value = omega[0];
     else if (strcmp(args[1],"y") == 0) value = omega[1];
     else if (strcmp(args[1],"z") == 0) value = omega[2];
@@ -3924,7 +3958,8 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
                                Tree **treestack, int &ntreestack,
                                double *argstack, int &nargstack, int ivar)
 {
-  double value,xvalue,sx,sy,sxx,sxy;
+  bigint sx,sxx;
+  double value,xvalue,sy,sxy;
 
   // word not a match to any special function
 
@@ -4020,11 +4055,13 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
       } else index = 0;
 
       int ifix = modify->find_fix(&args[0][2]);
-      if (ifix < 0) print_var_error(FLERR,"Invalid fix ID in variable formula",ivar);
+      if (ifix < 0) 
+        print_var_error(FLERR,"Invalid fix ID in variable formula",ivar);
       fix = modify->fix[ifix];
       if (index == 0 && fix->vector_flag) {
         if (update->whichflag > 0 && update->ntimestep % fix->global_freq)
-          print_var_error(FLERR,"Fix in variable not computed at compatible time",ivar);
+          print_var_error(FLERR,"Fix in variable not computed at "
+                          "compatible time",ivar);
         nvec = fix->size_vector;
         nstride = 1;
       } else if (index && fix->array_flag) {
@@ -4032,7 +4069,8 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
           print_var_error(FLERR,"Variable formula fix array "
                           "is accessed out-of-range",ivar);
         if (update->whichflag > 0 && update->ntimestep % fix->global_freq)
-          print_var_error(FLERR,"Fix in variable not computed at compatible time",ivar);
+          print_var_error(FLERR,"Fix in variable not computed at "
+                          "compatible time",ivar);
         nvec = fix->size_array_rows;
         nstride = fix->size_array_cols;
       } else print_var_error(FLERR,"Mismatched fix in variable formula",ivar);
@@ -4048,10 +4086,12 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
       } else index = 0;
 
       if (index)
-        print_var_error(FLERR,"Invalid special function in variable formula",ivar);
+        print_var_error(FLERR,"Invalid special function in "
+                        "variable formula",ivar);
       ivar = find(&args[0][2]);
       if (ivar < 0)
-        print_var_error(FLERR,"Invalid special function in variable formula",ivar);
+        print_var_error(FLERR,"Invalid special function in "
+                        "variable formula",ivar);
       if (style[ivar] != VECTOR)
         print_var_error(FLERR,"Mis-matched special function variable "
                         "in variable formula",ivar);
@@ -4062,12 +4102,16 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
       nvec = compute_vector(ivar,&vec);
       nstride = 1;
 
-    } else print_var_error(FLERR,"Invalid special function in variable formula",ivar);
+    } else print_var_error(FLERR,"Invalid special function in "
+                           "variable formula",ivar);
 
     value = 0.0;
-    if (method == SLOPE) sx = sy = sxx = sxy = 0.0;
-    if (method == XMIN) value = BIG;
-    if (method == XMAX) value = -BIG;
+    if (method == SLOPE) {
+      sx = sxx = 0;
+      sy = sxy = 0.0;
+    }
+    else if (method == XMIN) value = BIG;
+    else if (method == XMAX) value = -BIG;
 
     if (compute) {
       double *vec;
@@ -4084,12 +4128,10 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
         else if (method == AVE) value += vec[j];
         else if (method == TRAP) value += vec[j];
         else if (method == SLOPE) {
-          if (nvec > 1) xvalue = (double) i / (nvec-1);
-          else xvalue = 0.0;
-          sx += xvalue;
+          sx += i;
           sy += vec[j];
-          sxx += xvalue*xvalue;
-          sxy += xvalue*vec[j];
+          sxx += i*i;
+          sxy += i*vec[j];
         }
         j += nstride;
       }
@@ -4107,12 +4149,10 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
         else if (method == AVE) value += one;
         else if (method == TRAP) value += one;
         else if (method == SLOPE) {
-          if (nvec > 1) xvalue = (double) i / (nvec-1);
-          else xvalue = 0.0;
-          sx += xvalue;
+          sx += i;
           sy += one;
-          sxx += xvalue*xvalue;
-          sxy += xvalue*one;
+          sxx += i*i;
+          sxy += i*one;
         }
       }
       if (method == TRAP) {
@@ -4134,12 +4174,10 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
         else if (method == AVE) value += one;
         else if (method == TRAP) value += one;
         else if (method == SLOPE) {
-          if (nvec > 1) xvalue = (double) i / (nvec-1);
-          else xvalue = 0.0;
-          sx += xvalue;
+          sx += i;
           sy += one;
-          sxx += xvalue*xvalue;
-          sxy += xvalue*one;
+          sxx += i*i;
+          sxy += i*one;
         }
       }
       if (method == TRAP) value -= 0.5*vec[0] + 0.5*vec[nvec-1];
@@ -4148,9 +4186,9 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
     if (method == AVE) value /= nvec;
 
     if (method == SLOPE) {
-      double numerator = sxy - sx*sy;
-      double denominator = sxx - sx*sx;
-      if (denominator != 0.0) value = numerator/denominator / nvec;
+      double numerator = nvec*sxy - sx*sy;
+      double denominator = nvec*sxx - sx*sx;
+      if (denominator != 0.0) value = numerator/denominator;
       else value = BIG;
     }
 
@@ -4169,7 +4207,8 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
 
   } else if (strcmp(word,"gmask") == 0) {
     if (tree == NULL)
-      print_var_error(FLERR,"Gmask function in equal-style variable formula",ivar);
+      print_var_error(FLERR,"Gmask function in equal-style "
+                      "variable formula",ivar);
     if (narg != 1)
       print_var_error(FLERR,"Invalid special function in variable formula",ivar);
 
@@ -4186,7 +4225,8 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
 
   } else if (strcmp(word,"rmask") == 0) {
     if (tree == NULL)
-      print_var_error(FLERR,"Rmask function in equal-style variable formula",ivar);
+      print_var_error(FLERR,"Rmask function in equal-style "
+                      "variable formula",ivar);
     if (narg != 1)
       print_var_error(FLERR,"Invalid special function in variable formula",ivar);
 
@@ -4202,7 +4242,8 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
 
   } else if (strcmp(word,"grmask") == 0) {
     if (tree == NULL)
-      print_var_error(FLERR,"Grmask function in equal-style variable formula",ivar);
+      print_var_error(FLERR,"Grmask function in equal-style "
+                      "variable formula",ivar);
     if (narg != 2)
       print_var_error(FLERR,"Invalid special function in variable formula",ivar);
 
@@ -4228,7 +4269,8 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
 
     int ivar = find(args[0]);
     if (ivar < 0)
-      print_var_error(FLERR,"Variable ID in variable formula does not exist",ivar);
+      print_var_error(FLERR,"Variable ID in "
+                      "variable formula does not exist",ivar);
 
     // SCALARFILE has single current value, read next one
     // save value in tree or on argstack
@@ -4253,7 +4295,8 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
 
     } else if (style[ivar] == ATOMFILE) {
       if (tree == NULL)
-        print_var_error(FLERR,"Atomfile variable in equal-style variable formula",ivar);
+        print_var_error(FLERR,"Atomfile variable in "
+                        "equal-style variable formula",ivar);
 
       double *result;
       memory->create(result,atom->nlocal,"variable:result");
@@ -4271,11 +4314,13 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
       newtree->nextra = 0;
       treestack[ntreestack++] = newtree;
 
-    } else print_var_error(FLERR,"Invalid variable style in special function next",ivar);
+    } else print_var_error(FLERR,"Invalid variable style in "
+                           "special function next",ivar);
 
   } else if (strcmp(word,"is_active") == 0) {
     if (narg != 2)
-      print_var_error(FLERR,"Invalid is_active() function in variable formula",ivar);
+      print_var_error(FLERR,"Invalid is_active() function in "
+                      "variable formula",ivar);
 
     Info info(lmp);
     value = (info.is_active(args[0],args[1])) ? 1.0 : 0.0;
@@ -4293,7 +4338,8 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
 
   } else if (strcmp(word,"is_available") == 0) {
     if (narg != 2)
-      print_var_error(FLERR,"Invalid is_available() function in variable formula",ivar);
+      print_var_error(FLERR,"Invalid is_available() function in "
+                      "variable formula",ivar);
 
     Info info(lmp);
     value = (info.is_available(args[0],args[1])) ? 1.0 : 0.0;
@@ -4311,7 +4357,8 @@ int Variable::special_function(char *word, char *contents, Tree **tree,
 
   } else if (strcmp(word,"is_defined") == 0) {
     if (narg != 2)
-      print_var_error(FLERR,"Invalid is_defined() function in variable formula",ivar);
+      print_var_error(FLERR,"Invalid is_defined() function in "
+                      "variable formula",ivar);
 
     Info info(lmp);
     value = (info.is_defined(args[0],args[1])) ? 1.0 : 0.0;
-- 
GitLab


From 82744773b33a5d372687ba26f5edd68249d2a85e Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Fri, 3 Aug 2018 16:04:54 -0600
Subject: [PATCH 143/243] replace Section_commands.txt file

---
 doc/src/Commands.txt                          |   51 +
 doc/src/Commands_all.txt                      |  128 ++
 doc/src/Commands_bond.txt                     |  124 ++
 doc/src/Commands_category.txt                 |  141 ++
 doc/src/Commands_compute.txt                  |  153 ++
 doc/src/Commands_fix.txt                      |  229 +++
 doc/src/Commands_input.txt                    |   60 +
 doc/src/Commands_kspace.txt                   |   36 +
 doc/src/Commands_pair.txt                     |  231 +++
 doc/src/Commands_parse.txt                    |  136 ++
 doc/src/Commands_structure.txt                |   95 ++
 doc/src/Errors.txt                            |    2 +-
 doc/src/Errors_bugs.txt                       |    2 +-
 doc/src/Errors_common.txt                     |    2 +-
 doc/src/Errors_messages.txt                   |    2 +-
 doc/src/Errors_warnings.txt                   |    2 +-
 doc/src/Examples.txt                          |    2 +-
 doc/src/Howto_2d.txt                          |    2 +-
 doc/src/Howto_barostat.txt                    |    2 +-
 doc/src/Howto_bash.txt                        |    2 +-
 doc/src/Howto_bioFF.txt                       |    2 +-
 doc/src/Howto_body.txt                        |    8 +-
 doc/src/Howto_chunk.txt                       |    2 +-
 doc/src/Howto_coreshell.txt                   |    2 +-
 doc/src/Howto_couple.txt                      |    2 +-
 doc/src/Howto_diffusion.txt                   |    2 +-
 doc/src/Howto_dispersion.txt                  |    2 +-
 doc/src/Howto_drude.txt                       |    2 +-
 doc/src/Howto_drude2.txt                      |    2 +-
 doc/src/Howto_elastic.txt                     |    2 +-
 doc/src/Howto_github.txt                      |    2 +-
 doc/src/Howto_granular.txt                    |    2 +-
 doc/src/Howto_kappa.txt                       |    2 +-
 doc/src/Howto_library.txt                     |    2 +-
 doc/src/Howto_manifold.txt                    |    2 +-
 doc/src/Howto_multiple.txt                    |    2 +-
 doc/src/Howto_nemd.txt                        |    2 +-
 doc/src/Howto_output.txt                      |    2 +-
 doc/src/Howto_polarizable.txt                 |    2 +-
 doc/src/Howto_pylammps.txt                    |    2 +-
 doc/src/Howto_replica.txt                     |    2 +-
 doc/src/Howto_restart.txt                     |    2 +-
 doc/src/Howto_spc.txt                         |    2 +-
 doc/src/Howto_spherical.txt                   |    2 +-
 doc/src/Howto_spins.txt                       |    2 +-
 doc/src/Howto_temperature.txt                 |    2 +-
 doc/src/Howto_thermostat.txt                  |    2 +-
 doc/src/Howto_tip3p.txt                       |    2 +-
 doc/src/Howto_tip4p.txt                       |    2 +-
 doc/src/Howto_triclinic.txt                   |    2 +-
 doc/src/Howto_viscosity.txt                   |    2 +-
 doc/src/Howto_viz.txt                         |    2 +-
 doc/src/Howto_walls.txt                       |    2 +-
 doc/src/Intro_authors.txt                     |    2 +-
 doc/src/Intro_features.txt                    |    6 +-
 doc/src/Intro_nonfeatures.txt                 |    2 +-
 doc/src/Intro_opensource.txt                  |    2 +-
 doc/src/Intro_overview.txt                    |    2 +-
 doc/src/Intro_website.txt                     |    2 +-
 doc/src/Manual.txt                            |   17 +-
 doc/src/Manual_version.txt                    |    2 +-
 doc/src/Modify.txt                            |    2 +-
 doc/src/Modify_atom.txt                       |    2 +-
 doc/src/Modify_body.txt                       |    2 +-
 doc/src/Modify_bond.txt                       |    2 +-
 doc/src/Modify_command.txt                    |    2 +-
 doc/src/Modify_compute.txt                    |    2 +-
 doc/src/Modify_contribute.txt                 |    2 +-
 doc/src/Modify_dump.txt                       |    2 +-
 doc/src/Modify_fix.txt                        |    2 +-
 doc/src/Modify_kspace.txt                     |    2 +-
 doc/src/Modify_min.txt                        |    2 +-
 doc/src/Modify_overview.txt                   |    2 +-
 doc/src/Modify_pair.txt                       |    2 +-
 doc/src/Modify_region.txt                     |    2 +-
 doc/src/Modify_thermo.txt                     |    2 +-
 doc/src/Modify_variable.txt                   |    2 +-
 doc/src/Packages.txt                          |    4 +-
 doc/src/Packages_details.txt                  |   20 +-
 doc/src/Packages_standard.txt                 |    2 +-
 doc/src/Packages_user.txt                     |    2 +-
 doc/src/Python.txt                            |    2 +-
 doc/src/Python_call.txt                       |    2 +-
 doc/src/Python_examples.txt                   |    2 +-
 doc/src/Python_install.txt                    |    2 +-
 doc/src/Python_library.txt                    |    2 +-
 doc/src/Python_mpi.txt                        |    2 +-
 doc/src/Python_pylammps.txt                   |    2 +-
 doc/src/Python_run.txt                        |    2 +-
 doc/src/Python_shlib.txt                      |    2 +-
 doc/src/Python_test.txt                       |    2 +-
 doc/src/Section_commands.txt                  | 1292 -----------------
 doc/src/Section_start.txt                     |   12 +-
 doc/src/Speed.txt                             |    2 +-
 doc/src/Speed_bench.txt                       |    2 +-
 doc/src/Speed_compare.txt                     |    2 +-
 doc/src/Speed_gpu.txt                         |    2 +-
 doc/src/Speed_intel.txt                       |    2 +-
 doc/src/Speed_kokkos.txt                      |  317 ++--
 doc/src/Speed_measure.txt                     |    2 +-
 doc/src/Speed_omp.txt                         |    2 +-
 doc/src/Speed_opt.txt                         |    2 +-
 doc/src/Speed_packages.txt                    |   13 +-
 doc/src/Speed_tips.txt                        |    2 +-
 doc/src/Tools.txt                             |    2 +-
 doc/src/angle_charmm.txt                      |    2 +-
 doc/src/angle_class2.txt                      |    2 +-
 doc/src/angle_coeff.txt                       |    8 +-
 doc/src/angle_cosine.txt                      |    2 +-
 doc/src/angle_cosine_buck6d.txt               |    2 +-
 doc/src/angle_cosine_delta.txt                |    2 +-
 doc/src/angle_cosine_periodic.txt             |    2 +-
 doc/src/angle_cosine_shift.txt                |    2 +-
 doc/src/angle_cosine_shift_exp.txt            |    2 +-
 doc/src/angle_cosine_squared.txt              |    2 +-
 doc/src/angle_dipole.txt                      |    2 +-
 doc/src/angle_fourier.txt                     |    2 +-
 doc/src/angle_fourier_simple.txt              |    2 +-
 doc/src/angle_harmonic.txt                    |    2 +-
 doc/src/angle_hybrid.txt                      |    2 +-
 doc/src/angle_none.txt                        |    2 +-
 doc/src/angle_quartic.txt                     |    2 +-
 doc/src/angle_sdk.txt                         |    2 +-
 doc/src/angle_style.txt                       |    8 +-
 doc/src/angle_table.txt                       |    2 +-
 doc/src/angle_zero.txt                        |    2 +-
 doc/src/atom_modify.txt                       |    2 +-
 doc/src/atom_style.txt                        |    2 +-
 doc/src/balance.txt                           |    2 +-
 doc/src/body.txt                              |    2 +-
 doc/src/bond_class2.txt                       |    2 +-
 doc/src/bond_coeff.txt                        |    7 +-
 doc/src/bond_fene.txt                         |    2 +-
 doc/src/bond_fene_expand.txt                  |    2 +-
 doc/src/bond_gromos.txt                       |    2 +-
 doc/src/bond_harmonic.txt                     |    2 +-
 doc/src/bond_harmonic_shift.txt               |    2 +-
 doc/src/bond_harmonic_shift_cut.txt           |    2 +-
 doc/src/bond_hybrid.txt                       |    2 +-
 doc/src/bond_morse.txt                        |    2 +-
 doc/src/bond_none.txt                         |    2 +-
 doc/src/bond_nonlinear.txt                    |    2 +-
 doc/src/bond_oxdna.txt                        |    2 +-
 doc/src/bond_quartic.txt                      |    2 +-
 doc/src/bond_style.txt                        |    7 +-
 doc/src/bond_table.txt                        |    2 +-
 doc/src/bond_write.txt                        |    2 +-
 doc/src/bond_zero.txt                         |    2 +-
 doc/src/boundary.txt                          |    2 +-
 doc/src/box.txt                               |    2 +-
 doc/src/change_box.txt                        |    2 +-
 doc/src/clear.txt                             |    2 +-
 doc/src/comm_modify.txt                       |    2 +-
 doc/src/comm_style.txt                        |    2 +-
 doc/src/compute.txt                           |   28 +-
 doc/src/compute_ackland_atom.txt              |    2 +-
 doc/src/compute_angle.txt                     |    2 +-
 doc/src/compute_angle_local.txt               |    2 +-
 doc/src/compute_angmom_chunk.txt              |    2 +-
 doc/src/compute_basal_atom.txt                |    2 +-
 doc/src/compute_body_local.txt                |    2 +-
 doc/src/compute_bond.txt                      |    2 +-
 doc/src/compute_bond_local.txt                |    2 +-
 doc/src/compute_centro_atom.txt               |    2 +-
 doc/src/compute_chunk_atom.txt                |    2 +-
 doc/src/compute_cluster_atom.txt              |    2 +-
 doc/src/compute_cna_atom.txt                  |    2 +-
 doc/src/compute_cnp_atom.txt                  |    2 +-
 doc/src/compute_com.txt                       |    2 +-
 doc/src/compute_com_chunk.txt                 |    2 +-
 doc/src/compute_contact_atom.txt              |    2 +-
 doc/src/compute_coord_atom.txt                |    2 +-
 doc/src/compute_damage_atom.txt               |    2 +-
 doc/src/compute_dihedral.txt                  |    2 +-
 doc/src/compute_dihedral_local.txt            |    2 +-
 doc/src/compute_dilatation_atom.txt           |    2 +-
 doc/src/compute_dipole_chunk.txt              |    2 +-
 doc/src/compute_displace_atom.txt             |    2 +-
 doc/src/compute_dpd.txt                       |    2 +-
 doc/src/compute_dpd_atom.txt                  |    2 +-
 doc/src/compute_edpd_temp_atom.txt            |    2 +-
 doc/src/compute_entropy_atom.txt              |    2 +-
 doc/src/compute_erotate_asphere.txt           |    2 +-
 doc/src/compute_erotate_rigid.txt             |    2 +-
 doc/src/compute_erotate_sphere.txt            |    2 +-
 doc/src/compute_erotate_sphere_atom.txt       |    2 +-
 doc/src/compute_event_displace.txt            |    2 +-
 doc/src/compute_fep.txt                       |    2 +-
 doc/src/compute_global_atom.txt               |    2 +-
 doc/src/compute_group_group.txt               |    2 +-
 doc/src/compute_gyration.txt                  |    2 +-
 doc/src/compute_gyration_chunk.txt            |    2 +-
 doc/src/compute_heat_flux.txt                 |    2 +-
 doc/src/compute_hexorder_atom.txt             |    2 +-
 doc/src/compute_improper.txt                  |    2 +-
 doc/src/compute_improper_local.txt            |    2 +-
 doc/src/compute_inertia_chunk.txt             |    2 +-
 doc/src/compute_ke.txt                        |    2 +-
 doc/src/compute_ke_atom.txt                   |    2 +-
 doc/src/compute_ke_atom_eff.txt               |    2 +-
 doc/src/compute_ke_eff.txt                    |    2 +-
 doc/src/compute_ke_rigid.txt                  |    2 +-
 doc/src/compute_meso_e_atom.txt               |    2 +-
 doc/src/compute_meso_rho_atom.txt             |    2 +-
 doc/src/compute_meso_t_atom.txt               |    2 +-
 doc/src/compute_modify.txt                    |    2 +-
 doc/src/compute_msd.txt                       |    2 +-
 doc/src/compute_msd_chunk.txt                 |    2 +-
 doc/src/compute_msd_nongauss.txt              |    2 +-
 doc/src/compute_omega_chunk.txt               |    2 +-
 doc/src/compute_orientorder_atom.txt          |    2 +-
 doc/src/compute_pair.txt                      |    2 +-
 doc/src/compute_pair_local.txt                |    2 +-
 doc/src/compute_pe.txt                        |    2 +-
 doc/src/compute_pe_atom.txt                   |    2 +-
 doc/src/compute_plasticity_atom.txt           |    2 +-
 doc/src/compute_pressure.txt                  |    2 +-
 doc/src/compute_pressure_uef.txt              |    2 +-
 doc/src/compute_property_atom.txt             |    2 +-
 doc/src/compute_property_chunk.txt            |    2 +-
 doc/src/compute_property_local.txt            |    2 +-
 doc/src/compute_rdf.txt                       |    2 +-
 doc/src/compute_reduce.txt                    |    2 +-
 doc/src/compute_rigid_local.txt               |    2 +-
 doc/src/compute_saed.txt                      |    2 +-
 doc/src/compute_slice.txt                     |    2 +-
 doc/src/compute_smd_contact_radius.txt        |    2 +-
 doc/src/compute_smd_damage.txt                |    2 +-
 doc/src/compute_smd_hourglass_error.txt       |    2 +-
 doc/src/compute_smd_internal_energy.txt       |    2 +-
 doc/src/compute_smd_plastic_strain.txt        |    2 +-
 doc/src/compute_smd_plastic_strain_rate.txt   |    2 +-
 doc/src/compute_smd_rho.txt                   |    2 +-
 doc/src/compute_smd_tlsph_defgrad.txt         |    2 +-
 doc/src/compute_smd_tlsph_dt.txt              |    2 +-
 doc/src/compute_smd_tlsph_num_neighs.txt      |    2 +-
 doc/src/compute_smd_tlsph_shape.txt           |    2 +-
 doc/src/compute_smd_tlsph_strain.txt          |    2 +-
 doc/src/compute_smd_tlsph_strain_rate.txt     |    2 +-
 doc/src/compute_smd_tlsph_stress.txt          |    2 +-
 .../compute_smd_triangle_mesh_vertices.txt    |    2 +-
 doc/src/compute_smd_ulsph_num_neighs.txt      |    2 +-
 doc/src/compute_smd_ulsph_strain.txt          |    2 +-
 doc/src/compute_smd_ulsph_strain_rate.txt     |    2 +-
 doc/src/compute_smd_ulsph_stress.txt          |    2 +-
 doc/src/compute_smd_vol.txt                   |    2 +-
 doc/src/compute_sna_atom.txt                  |    2 +-
 doc/src/compute_spin.txt                      |    2 +-
 doc/src/compute_stress_atom.txt               |    2 +-
 doc/src/compute_tally.txt                     |    2 +-
 doc/src/compute_tdpd_cc_atom.txt              |    2 +-
 doc/src/compute_temp.txt                      |    2 +-
 doc/src/compute_temp_asphere.txt              |    2 +-
 doc/src/compute_temp_body.txt                 |    2 +-
 doc/src/compute_temp_chunk.txt                |    2 +-
 doc/src/compute_temp_com.txt                  |    2 +-
 doc/src/compute_temp_cs.txt                   |    2 +-
 doc/src/compute_temp_deform.txt               |    2 +-
 doc/src/compute_temp_deform_eff.txt           |    2 +-
 doc/src/compute_temp_drude.txt                |    2 +-
 doc/src/compute_temp_eff.txt                  |    2 +-
 doc/src/compute_temp_partial.txt              |    2 +-
 doc/src/compute_temp_profile.txt              |    2 +-
 doc/src/compute_temp_ramp.txt                 |    2 +-
 doc/src/compute_temp_region.txt               |    2 +-
 doc/src/compute_temp_region_eff.txt           |    2 +-
 doc/src/compute_temp_rotate.txt               |    2 +-
 doc/src/compute_temp_sphere.txt               |    2 +-
 doc/src/compute_temp_uef.txt                  |    2 +-
 doc/src/compute_ti.txt                        |    2 +-
 doc/src/compute_torque_chunk.txt              |    2 +-
 doc/src/compute_vacf.txt                      |    2 +-
 doc/src/compute_vcm_chunk.txt                 |    2 +-
 doc/src/compute_voronoi_atom.txt              |    2 +-
 doc/src/compute_xrd.txt                       |    2 +-
 doc/src/create_atoms.txt                      |    2 +-
 doc/src/create_bonds.txt                      |    2 +-
 doc/src/create_box.txt                        |    2 +-
 doc/src/delete_atoms.txt                      |    2 +-
 doc/src/delete_bonds.txt                      |    2 +-
 doc/src/dielectric.txt                        |    2 +-
 doc/src/dihedral_charmm.txt                   |    2 +-
 doc/src/dihedral_class2.txt                   |    2 +-
 doc/src/dihedral_coeff.txt                    |    8 +-
 doc/src/dihedral_cosine_shift_exp.txt         |    2 +-
 doc/src/dihedral_fourier.txt                  |    2 +-
 doc/src/dihedral_harmonic.txt                 |    2 +-
 doc/src/dihedral_helix.txt                    |    2 +-
 doc/src/dihedral_hybrid.txt                   |    2 +-
 doc/src/dihedral_multi_harmonic.txt           |    2 +-
 doc/src/dihedral_nharmonic.txt                |    2 +-
 doc/src/dihedral_none.txt                     |    2 +-
 doc/src/dihedral_opls.txt                     |    2 +-
 doc/src/dihedral_quadratic.txt                |    2 +-
 doc/src/dihedral_spherical.txt                |    2 +-
 doc/src/dihedral_style.txt                    |    8 +-
 doc/src/dihedral_table.txt                    |    2 +-
 doc/src/dihedral_table_cut.txt                |    2 +-
 doc/src/dihedral_zero.txt                     |    2 +-
 doc/src/dimension.txt                         |    2 +-
 doc/src/displace_atoms.txt                    |    2 +-
 doc/src/dump.txt                              |    2 +-
 doc/src/dump_cfg_uef.txt                      |    2 +-
 doc/src/dump_h5md.txt                         |    2 +-
 doc/src/dump_image.txt                        |    2 +-
 doc/src/dump_modify.txt                       |    2 +-
 doc/src/dump_molfile.txt                      |    2 +-
 doc/src/dump_netcdf.txt                       |    2 +-
 doc/src/dump_vtk.txt                          |    2 +-
 doc/src/echo.txt                              |    2 +-
 doc/src/fix.txt                               |   22 +-
 doc/src/fix_adapt.txt                         |    2 +-
 doc/src/fix_adapt_fep.txt                     |    2 +-
 doc/src/fix_addforce.txt                      |    2 +-
 doc/src/fix_addtorque.txt                     |    2 +-
 doc/src/fix_append_atoms.txt                  |    2 +-
 doc/src/fix_atc.txt                           |    2 +-
 doc/src/fix_atom_swap.txt                     |    2 +-
 doc/src/fix_ave_atom.txt                      |    2 +-
 doc/src/fix_ave_chunk.txt                     |    2 +-
 doc/src/fix_ave_correlate.txt                 |    2 +-
 doc/src/fix_ave_correlate_long.txt            |    2 +-
 doc/src/fix_ave_histo.txt                     |    2 +-
 doc/src/fix_ave_time.txt                      |    2 +-
 doc/src/fix_aveforce.txt                      |    2 +-
 doc/src/fix_balance.txt                       |    2 +-
 doc/src/fix_bocs.txt                          |    2 +-
 doc/src/fix_bond_break.txt                    |    2 +-
 doc/src/fix_bond_create.txt                   |    2 +-
 doc/src/fix_bond_react.txt                    |    2 +-
 doc/src/fix_bond_swap.txt                     |    2 +-
 doc/src/fix_box_relax.txt                     |    2 +-
 doc/src/fix_cmap.txt                          |    2 +-
 doc/src/fix_colvars.txt                       |    2 +-
 doc/src/fix_controller.txt                    |    2 +-
 doc/src/fix_deform.txt                        |    2 +-
 doc/src/fix_deposit.txt                       |    2 +-
 doc/src/fix_dpd_energy.txt                    |    2 +-
 doc/src/fix_dpd_source.txt                    |    2 +-
 doc/src/fix_drag.txt                          |    2 +-
 doc/src/fix_drude.txt                         |    2 +-
 doc/src/fix_drude_transform.txt               |    2 +-
 doc/src/fix_dt_reset.txt                      |    2 +-
 doc/src/fix_efield.txt                        |    2 +-
 doc/src/fix_ehex.txt                          |    2 +-
 doc/src/fix_enforce2d.txt                     |    2 +-
 doc/src/fix_eos_cv.txt                        |    2 +-
 doc/src/fix_eos_table.txt                     |    2 +-
 doc/src/fix_eos_table_rx.txt                  |    2 +-
 doc/src/fix_evaporate.txt                     |    2 +-
 doc/src/fix_external.txt                      |    2 +-
 doc/src/fix_filter_corotate.txt               |    2 +-
 doc/src/fix_flow_gauss.txt                    |    2 +-
 doc/src/fix_freeze.txt                        |    2 +-
 doc/src/fix_gcmc.txt                          |    2 +-
 doc/src/fix_gld.txt                           |    2 +-
 doc/src/fix_gle.txt                           |    2 +-
 doc/src/fix_gravity.txt                       |    2 +-
 doc/src/fix_grem.txt                          |    2 +-
 doc/src/fix_halt.txt                          |    2 +-
 doc/src/fix_heat.txt                          |    2 +-
 doc/src/fix_imd.txt                           |    2 +-
 doc/src/fix_indent.txt                        |    2 +-
 doc/src/fix_ipi.txt                           |    2 +-
 doc/src/fix_langevin.txt                      |    2 +-
 doc/src/fix_langevin_drude.txt                |    2 +-
 doc/src/fix_langevin_eff.txt                  |    2 +-
 doc/src/fix_langevin_spin.txt                 |    2 +-
 doc/src/fix_latte.txt                         |    2 +-
 doc/src/fix_lb_fluid.txt                      |    2 +-
 doc/src/fix_lb_momentum.txt                   |    2 +-
 doc/src/fix_lb_pc.txt                         |    2 +-
 doc/src/fix_lb_rigid_pc_sphere.txt            |    2 +-
 doc/src/fix_lb_viscous.txt                    |    2 +-
 doc/src/fix_lineforce.txt                     |    2 +-
 doc/src/fix_manifoldforce.txt                 |    2 +-
 doc/src/fix_meso.txt                          |    2 +-
 doc/src/fix_meso_stationary.txt               |    2 +-
 doc/src/fix_modify.txt                        |    2 +-
 doc/src/fix_momentum.txt                      |    2 +-
 doc/src/fix_move.txt                          |    2 +-
 doc/src/fix_mscg.txt                          |    2 +-
 doc/src/fix_msst.txt                          |    2 +-
 doc/src/fix_mvv_dpd.txt                       |    2 +-
 doc/src/fix_neb.txt                           |    2 +-
 doc/src/fix_nh.txt                            |    2 +-
 doc/src/fix_nh_eff.txt                        |    2 +-
 doc/src/fix_nh_uef.txt                        |    2 +-
 doc/src/fix_nph_asphere.txt                   |    2 +-
 doc/src/fix_nph_body.txt                      |    2 +-
 doc/src/fix_nph_sphere.txt                    |    2 +-
 doc/src/fix_nphug.txt                         |    2 +-
 doc/src/fix_npt_asphere.txt                   |    2 +-
 doc/src/fix_npt_body.txt                      |    2 +-
 doc/src/fix_npt_sphere.txt                    |    2 +-
 doc/src/fix_nve.txt                           |    2 +-
 doc/src/fix_nve_asphere.txt                   |    2 +-
 doc/src/fix_nve_asphere_noforce.txt           |    2 +-
 doc/src/fix_nve_body.txt                      |    2 +-
 doc/src/fix_nve_dot.txt                       |    2 +-
 doc/src/fix_nve_dotc_langevin.txt             |    2 +-
 doc/src/fix_nve_eff.txt                       |    2 +-
 doc/src/fix_nve_limit.txt                     |    2 +-
 doc/src/fix_nve_line.txt                      |    2 +-
 doc/src/fix_nve_manifold_rattle.txt           |    2 +-
 doc/src/fix_nve_noforce.txt                   |    2 +-
 doc/src/fix_nve_sphere.txt                    |    2 +-
 doc/src/fix_nve_spin.txt                      |    2 +-
 doc/src/fix_nve_tri.txt                       |    2 +-
 doc/src/fix_nvk.txt                           |    2 +-
 doc/src/fix_nvt_asphere.txt                   |    2 +-
 doc/src/fix_nvt_body.txt                      |    2 +-
 doc/src/fix_nvt_manifold_rattle.txt           |    2 +-
 doc/src/fix_nvt_sllod.txt                     |    2 +-
 doc/src/fix_nvt_sllod_eff.txt                 |    2 +-
 doc/src/fix_nvt_sphere.txt                    |    2 +-
 doc/src/fix_oneway.txt                        |    2 +-
 doc/src/fix_orient.txt                        |    2 +-
 doc/src/fix_phonon.txt                        |    2 +-
 doc/src/fix_pimd.txt                          |    2 +-
 doc/src/fix_planeforce.txt                    |    2 +-
 doc/src/fix_poems.txt                         |    2 +-
 doc/src/fix_pour.txt                          |    2 +-
 doc/src/fix_precession_spin.txt               |    2 +-
 doc/src/fix_press_berendsen.txt               |    2 +-
 doc/src/fix_print.txt                         |    2 +-
 doc/src/fix_property_atom.txt                 |    2 +-
 doc/src/fix_python_invoke.txt                 |    2 +-
 doc/src/fix_python_move.txt                   |    2 +-
 doc/src/fix_qbmsst.txt                        |    2 +-
 doc/src/fix_qeq.txt                           |    2 +-
 doc/src/fix_qeq_comb.txt                      |    2 +-
 doc/src/fix_qeq_reax.txt                      |    2 +-
 doc/src/fix_qmmm.txt                          |    2 +-
 doc/src/fix_qtb.txt                           |    2 +-
 doc/src/fix_reax_bonds.txt                    |    2 +-
 doc/src/fix_reaxc_species.txt                 |    2 +-
 doc/src/fix_recenter.txt                      |    2 +-
 doc/src/fix_restrain.txt                      |    2 +-
 doc/src/fix_rhok.txt                          |    2 +-
 doc/src/fix_rigid.txt                         |    2 +-
 doc/src/fix_rx.txt                            |    2 +-
 doc/src/fix_saed_vtk.txt                      |    2 +-
 doc/src/fix_setforce.txt                      |    2 +-
 doc/src/fix_shake.txt                         |    2 +-
 doc/src/fix_shardlow.txt                      |    2 +-
 doc/src/fix_smd.txt                           |    2 +-
 doc/src/fix_smd_adjust_dt.txt                 |    2 +-
 doc/src/fix_smd_integrate_tlsph.txt           |    2 +-
 doc/src/fix_smd_integrate_ulsph.txt           |    2 +-
 doc/src/fix_smd_move_triangulated_surface.txt |    2 +-
 doc/src/fix_smd_setvel.txt                    |    2 +-
 doc/src/fix_smd_wall_surface.txt              |    2 +-
 doc/src/fix_spring.txt                        |    2 +-
 doc/src/fix_spring_chunk.txt                  |    2 +-
 doc/src/fix_spring_rg.txt                     |    2 +-
 doc/src/fix_spring_self.txt                   |    2 +-
 doc/src/fix_srd.txt                           |    2 +-
 doc/src/fix_store_force.txt                   |    2 +-
 doc/src/fix_store_state.txt                   |    2 +-
 doc/src/fix_surface_global.txt                |    2 +-
 doc/src/fix_temp_berendsen.txt                |    2 +-
 doc/src/fix_temp_csvr.txt                     |    2 +-
 doc/src/fix_temp_rescale.txt                  |    2 +-
 doc/src/fix_temp_rescale_eff.txt              |    2 +-
 doc/src/fix_tfmc.txt                          |    2 +-
 doc/src/fix_thermal_conductivity.txt          |    2 +-
 doc/src/fix_ti_spring.txt                     |    2 +-
 doc/src/fix_tmd.txt                           |    2 +-
 doc/src/fix_ttm.txt                           |    2 +-
 doc/src/fix_tune_kspace.txt                   |    2 +-
 doc/src/fix_vector.txt                        |    2 +-
 doc/src/fix_viscosity.txt                     |    2 +-
 doc/src/fix_viscous.txt                       |    2 +-
 doc/src/fix_wall.txt                          |    2 +-
 doc/src/fix_wall_body_polygon.txt             |    2 +-
 doc/src/fix_wall_body_polyhedron.txt          |    2 +-
 doc/src/fix_wall_ees.txt                      |    2 +-
 doc/src/fix_wall_gran.txt                     |    2 +-
 doc/src/fix_wall_gran_region.txt              |    2 +-
 doc/src/fix_wall_piston.txt                   |    2 +-
 doc/src/fix_wall_reflect.txt                  |    2 +-
 doc/src/fix_wall_region.txt                   |    2 +-
 doc/src/fix_wall_srd.txt                      |    2 +-
 doc/src/group.txt                             |    2 +-
 doc/src/group2ndx.txt                         |    2 +-
 doc/src/if.txt                                |    8 +-
 doc/src/improper_class2.txt                   |    2 +-
 doc/src/improper_coeff.txt                    |    8 +-
 doc/src/improper_cossq.txt                    |    2 +-
 doc/src/improper_cvff.txt                     |    2 +-
 doc/src/improper_distance.txt                 |    2 +-
 doc/src/improper_fourier.txt                  |    2 +-
 doc/src/improper_harmonic.txt                 |    2 +-
 doc/src/improper_hybrid.txt                   |    2 +-
 doc/src/improper_inversion_harmonic.txt       |    2 +-
 doc/src/improper_none.txt                     |    2 +-
 doc/src/improper_ring.txt                     |    2 +-
 doc/src/improper_style.txt                    |    8 +-
 doc/src/improper_umbrella.txt                 |    2 +-
 doc/src/improper_zero.txt                     |    2 +-
 doc/src/include.txt                           |    2 +-
 doc/src/info.txt                              |    2 +-
 doc/src/jump.txt                              |    2 +-
 doc/src/kspace_modify.txt                     |    2 +-
 doc/src/kspace_style.txt                      |    2 +-
 doc/src/label.txt                             |    2 +-
 doc/src/lammps.book                           |   12 +-
 doc/src/lattice.txt                           |    2 +-
 doc/src/log.txt                               |    2 +-
 doc/src/manifolds.txt                         |    2 +-
 doc/src/mass.txt                              |    2 +-
 doc/src/min_modify.txt                        |    2 +-
 doc/src/min_style.txt                         |    2 +-
 doc/src/minimize.txt                          |    2 +-
 doc/src/molecule.txt                          |    2 +-
 doc/src/neb.txt                               |    2 +-
 doc/src/neigh_modify.txt                      |    2 +-
 doc/src/neighbor.txt                          |    2 +-
 doc/src/newton.txt                            |    2 +-
 doc/src/next.txt                              |    2 +-
 doc/src/package.txt                           |    2 +-
 doc/src/pair_adp.txt                          |    2 +-
 doc/src/pair_agni.txt                         |    2 +-
 doc/src/pair_airebo.txt                       |    2 +-
 doc/src/pair_awpmd.txt                        |    2 +-
 doc/src/pair_beck.txt                         |    2 +-
 doc/src/pair_body_nparticle.txt               |    2 +-
 doc/src/pair_body_rounded_polygon.txt         |    2 +-
 doc/src/pair_body_rounded_polyhedron.txt      |    2 +-
 doc/src/pair_bop.txt                          |    2 +-
 doc/src/pair_born.txt                         |    2 +-
 doc/src/pair_brownian.txt                     |    2 +-
 doc/src/pair_buck.txt                         |    2 +-
 doc/src/pair_buck6d_coul_gauss.txt            |    2 +-
 doc/src/pair_buck_long.txt                    |    2 +-
 doc/src/pair_charmm.txt                       |    2 +-
 doc/src/pair_class2.txt                       |    2 +-
 doc/src/pair_coeff.txt                        |   19 +-
 doc/src/pair_colloid.txt                      |    2 +-
 doc/src/pair_comb.txt                         |    2 +-
 doc/src/pair_coul.txt                         |    2 +-
 doc/src/pair_coul_diel.txt                    |    2 +-
 doc/src/pair_coul_shield.txt                  |    2 +-
 doc/src/pair_cs.txt                           |    2 +-
 doc/src/pair_dipole.txt                       |    2 +-
 doc/src/pair_dpd.txt                          |    2 +-
 doc/src/pair_dpd_fdt.txt                      |    2 +-
 doc/src/pair_dsmc.txt                         |    2 +-
 doc/src/pair_eam.txt                          |    2 +-
 doc/src/pair_edip.txt                         |    2 +-
 doc/src/pair_eff.txt                          |    2 +-
 doc/src/pair_eim.txt                          |    2 +-
 doc/src/pair_exp6_rx.txt                      |    2 +-
 doc/src/pair_extep.txt                        |    2 +-
 doc/src/pair_gauss.txt                        |    2 +-
 doc/src/pair_gayberne.txt                     |    2 +-
 doc/src/pair_gran.txt                         |    2 +-
 doc/src/pair_gromacs.txt                      |    2 +-
 doc/src/pair_gw.txt                           |    2 +-
 doc/src/pair_hbond_dreiding.txt               |    2 +-
 doc/src/pair_hybrid.txt                       |    2 +-
 doc/src/pair_ilp_graphene_hbn.txt             |    2 +-
 doc/src/pair_kim.txt                          |    2 +-
 doc/src/pair_kolmogorov_crespi_full.txt       |    2 +-
 doc/src/pair_kolmogorov_crespi_z.txt          |    2 +-
 doc/src/pair_lcbop.txt                        |    2 +-
 doc/src/pair_line_lj.txt                      |    2 +-
 doc/src/pair_list.txt                         |    2 +-
 doc/src/pair_lj.txt                           |    2 +-
 doc/src/pair_lj96.txt                         |    2 +-
 doc/src/pair_lj_cubic.txt                     |    2 +-
 doc/src/pair_lj_expand.txt                    |    2 +-
 doc/src/pair_lj_long.txt                      |    2 +-
 doc/src/pair_lj_smooth.txt                    |    2 +-
 doc/src/pair_lj_smooth_linear.txt             |    2 +-
 doc/src/pair_lj_soft.txt                      |    2 +-
 doc/src/pair_lubricate.txt                    |    2 +-
 doc/src/pair_lubricateU.txt                   |    2 +-
 doc/src/pair_mdf.txt                          |    2 +-
 doc/src/pair_meam.txt                         |    2 +-
 doc/src/pair_meam_spline.txt                  |    2 +-
 doc/src/pair_meam_sw_spline.txt               |    2 +-
 doc/src/pair_meso.txt                         |    2 +-
 doc/src/pair_mgpt.txt                         |    2 +-
 doc/src/pair_mie.txt                          |    2 +-
 doc/src/pair_modify.txt                       |    2 +-
 doc/src/pair_momb.txt                         |    2 +-
 doc/src/pair_morse.txt                        |    2 +-
 doc/src/pair_multi_lucy.txt                   |    2 +-
 doc/src/pair_multi_lucy_rx.txt                |    2 +-
 doc/src/pair_nb3b_harmonic.txt                |    2 +-
 doc/src/pair_nm.txt                           |    2 +-
 doc/src/pair_none.txt                         |    2 +-
 doc/src/pair_oxdna.txt                        |    2 +-
 doc/src/pair_oxdna2.txt                       |    2 +-
 doc/src/pair_peri.txt                         |    2 +-
 doc/src/pair_polymorphic.txt                  |    2 +-
 doc/src/pair_python.txt                       |    2 +-
 doc/src/pair_quip.txt                         |    2 +-
 doc/src/pair_reax.txt                         |    2 +-
 doc/src/pair_reaxc.txt                        |    2 +-
 doc/src/pair_resquared.txt                    |    2 +-
 doc/src/pair_sdk.txt                          |    2 +-
 doc/src/pair_smd_hertz.txt                    |    2 +-
 doc/src/pair_smd_tlsph.txt                    |    2 +-
 doc/src/pair_smd_triangulated_surface.txt     |    2 +-
 doc/src/pair_smd_ulsph.txt                    |    2 +-
 doc/src/pair_smtbq.txt                        |    2 +-
 doc/src/pair_snap.txt                         |    2 +-
 doc/src/pair_soft.txt                         |    2 +-
 doc/src/pair_sph_heatconduction.txt           |    2 +-
 doc/src/pair_sph_idealgas.txt                 |    2 +-
 doc/src/pair_sph_lj.txt                       |    2 +-
 doc/src/pair_sph_rhosum.txt                   |    2 +-
 doc/src/pair_sph_taitwater.txt                |    2 +-
 doc/src/pair_sph_taitwater_morris.txt         |    2 +-
 doc/src/pair_spin_dmi.txt                     |    2 +-
 doc/src/pair_spin_exchange.txt                |    2 +-
 doc/src/pair_spin_magelec.txt                 |    2 +-
 doc/src/pair_spin_neel.txt                    |    2 +-
 doc/src/pair_srp.txt                          |    2 +-
 doc/src/pair_style.txt                        |   18 +-
 doc/src/pair_sw.txt                           |    2 +-
 doc/src/pair_table.txt                        |    2 +-
 doc/src/pair_table_rx.txt                     |    2 +-
 doc/src/pair_tersoff.txt                      |    2 +-
 doc/src/pair_tersoff_mod.txt                  |    2 +-
 doc/src/pair_tersoff_zbl.txt                  |    2 +-
 doc/src/pair_thole.txt                        |    2 +-
 doc/src/pair_tri_lj.txt                       |    2 +-
 doc/src/pair_ufm.txt                          |    2 +-
 doc/src/pair_vashishta.txt                    |    2 +-
 doc/src/pair_write.txt                        |    2 +-
 doc/src/pair_yukawa.txt                       |    2 +-
 doc/src/pair_yukawa_colloid.txt               |    2 +-
 doc/src/pair_zbl.txt                          |    2 +-
 doc/src/pair_zero.txt                         |    2 +-
 doc/src/partition.txt                         |    2 +-
 doc/src/prd.txt                               |    2 +-
 doc/src/print.txt                             |    2 +-
 doc/src/processors.txt                        |    2 +-
 doc/src/python.txt                            |    8 +-
 doc/src/quit.txt                              |    2 +-
 doc/src/read_data.txt                         |    2 +-
 doc/src/read_dump.txt                         |    2 +-
 doc/src/read_restart.txt                      |    2 +-
 doc/src/region.txt                            |    2 +-
 doc/src/replicate.txt                         |    2 +-
 doc/src/rerun.txt                             |    2 +-
 doc/src/reset_ids.txt                         |    2 +-
 doc/src/reset_timestep.txt                    |    2 +-
 doc/src/restart.txt                           |    2 +-
 doc/src/run.txt                               |    2 +-
 doc/src/run_style.txt                         |    2 +-
 doc/src/set.txt                               |    2 +-
 doc/src/shell.txt                             |    2 +-
 doc/src/special_bonds.txt                     |    2 +-
 doc/src/suffix.txt                            |    2 +-
 doc/src/tad.txt                               |    2 +-
 doc/src/temper.txt                            |    2 +-
 doc/src/temper_grem.txt                       |    2 +-
 doc/src/temper_npt.txt                        |    2 +-
 doc/src/thermo.txt                            |    2 +-
 doc/src/thermo_modify.txt                     |    2 +-
 doc/src/thermo_style.txt                      |    2 +-
 doc/src/timer.txt                             |    2 +-
 doc/src/timestep.txt                          |    2 +-
 doc/src/uncompute.txt                         |    2 +-
 doc/src/undump.txt                            |    2 +-
 doc/src/unfix.txt                             |    2 +-
 doc/src/units.txt                             |    2 +-
 doc/src/variable.txt                          |   42 +-
 doc/src/velocity.txt                          |    2 +-
 doc/src/write_coeff.txt                       |    2 +-
 doc/src/write_data.txt                        |    2 +-
 doc/src/write_dump.txt                        |    2 +-
 doc/src/write_restart.txt                     |    2 +-
 678 files changed, 2340 insertions(+), 2236 deletions(-)
 create mode 100644 doc/src/Commands.txt
 create mode 100644 doc/src/Commands_all.txt
 create mode 100644 doc/src/Commands_bond.txt
 create mode 100644 doc/src/Commands_category.txt
 create mode 100644 doc/src/Commands_compute.txt
 create mode 100644 doc/src/Commands_fix.txt
 create mode 100644 doc/src/Commands_input.txt
 create mode 100644 doc/src/Commands_kspace.txt
 create mode 100644 doc/src/Commands_pair.txt
 create mode 100644 doc/src/Commands_parse.txt
 create mode 100644 doc/src/Commands_structure.txt
 delete mode 100644 doc/src/Section_commands.txt

diff --git a/doc/src/Commands.txt b/doc/src/Commands.txt
new file mode 100644
index 0000000000..30e3343bd2
--- /dev/null
+++ b/doc/src/Commands.txt
@@ -0,0 +1,51 @@
+"Previous Section"_Run.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Packages.html :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html#comm)
+
+:line
+
+Commands :h2
+
+These pages describe how a LAMMPS input script is formatted and the
+commands in it are used to define a LAMMPS simulation.
+
+<!-- RST
+
+.. toctree::
+
+   Commands_input
+   Commands_parse
+   Commands_structure
+   Commands_category
+
+.. toctree::
+
+   Commands_all
+   Commands_fix
+   Commands_compute
+   Commands_pair
+   Commands_bond
+   Commands_kspace
+
+END_RST -->
+
+<!-- HTML_ONLY -->
+
+"LAMMPS input scripts"_Commands_input.html
+"Parsing rules for input scripts"_Commands_parse.html
+"Input script structure"_Commands_structure.html
+"Commands by category"_Commands_category.html :all(b)
+
+"All commands"_Commands_all.html 
+"Fix commands"_Commands_fix.html 
+"Compute commands"_Commands_compute.html 
+"Pair commands"_Commands_pair.html 
+"Bond, angle, dihedral, improper commands"_Commands_bond.html
+"KSpace solvers"_Commands_kspace.html  :all(b)
+
+<!-- END_HTML_ONLY -->
+
diff --git a/doc/src/Commands_all.txt b/doc/src/Commands_all.txt
new file mode 100644
index 0000000000..13db1272b9
--- /dev/null
+++ b/doc/src/Commands_all.txt
@@ -0,0 +1,128 @@
+"Higher level section"_Commands.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+"All commands"_Commands_all.html,
+"Fix styles"_Commands_fix.html,
+"Compute styles"_Commands_compute.html,
+"Pair styles"_Commands_pair.html,
+"Bond styles"_Commands_bond.html,
+"Angle styles"_Commands_bond.html#angle,
+"Dihedral styles"_Commands_bond.html#dihedral,
+"Improper styles"_Commands_bond.html#improper,
+"KSpace styles"_Commands_kspace.html :tb(c=3,ea=c)
+
+All commands :h3
+
+An alphabetic list of all LAMMPS commmands.
+
+"angle_coeff"_angle_coeff.html,
+"angle_style"_angle_style.html,
+"atom_modify"_atom_modify.html,
+"atom_style"_atom_style.html,
+"balance"_balance.html,
+"bond_coeff"_bond_coeff.html,
+"bond_style"_bond_style.html,
+"bond_write"_bond_write.html,
+"boundary"_boundary.html,
+"box"_box.html,
+"change_box"_change_box.html,
+"clear"_clear.html,
+"comm_modify"_comm_modify.html,
+"comm_style"_comm_style.html,
+"compute"_compute.html,
+"compute_modify"_compute_modify.html,
+"create_atoms"_create_atoms.html,
+"create_bonds"_create_bonds.html,
+"create_box"_create_box.html,
+"delete_atoms"_delete_atoms.html,
+"delete_bonds"_delete_bonds.html,
+"dielectric"_dielectric.html,
+"dihedral_coeff"_dihedral_coeff.html,
+"dihedral_style"_dihedral_style.html,
+"dimension"_dimension.html,
+"displace_atoms"_displace_atoms.html,
+"dump"_dump.html,
+"dump image"_dump_image.html,
+"dump_modify"_dump_modify.html,
+"dump movie"_dump_image.html,
+"dump netcdf"_dump_netcdf.html,
+"dump netcdf/mpiio"_dump_netcdf.html,
+"dump vtk"_dump_vtk.html,
+"echo"_echo.html,
+"fix"_fix.html,
+"fix_modify"_fix_modify.html,
+"group"_group.html,
+"group2ndx"_group2ndx.html,
+"if"_if.html,
+"info"_info.html,
+"improper_coeff"_improper_coeff.html,
+"improper_style"_improper_style.html,
+"include"_include.html,
+"jump"_jump.html,
+"kspace_modify"_kspace_modify.html,
+"kspace_style"_kspace_style.html,
+"label"_label.html,
+"lattice"_lattice.html,
+"log"_log.html,
+"mass"_mass.html,
+"minimize"_minimize.html,
+"min_modify"_min_modify.html,
+"min_style"_min_style.html,
+"molecule"_molecule.html,
+"ndx2group"_group2ndx.html,
+"neb"_neb.html,
+"neigh_modify"_neigh_modify.html,
+"neighbor"_neighbor.html,
+"newton"_newton.html,
+"next"_next.html,
+"package"_package.html,
+"pair_coeff"_pair_coeff.html,
+"pair_modify"_pair_modify.html,
+"pair_style"_pair_style.html,
+"pair_write"_pair_write.html,
+"partition"_partition.html,
+"prd"_prd.html,
+"print"_print.html,
+"processors"_processors.html,
+"python"_python.html,
+"quit"_quit.html,
+"read_data"_read_data.html,
+"read_dump"_read_dump.html,
+"read_restart"_read_restart.html,
+"region"_region.html,
+"replicate"_replicate.html,
+"rerun"_rerun.html,
+"reset_ids"_reset_ids.html,
+"reset_timestep"_reset_timestep.html,
+"restart"_restart.html,
+"run"_run.html,
+"run_style"_run_style.html,
+"set"_set.html,
+"shell"_shell.html,
+"special_bonds"_special_bonds.html,
+"suffix"_suffix.html,
+"tad"_tad.html,
+"temper"_temper.html,
+"temper/grem"_temper_grem.html,
+"temper/npt"_temper_npt.html,
+"thermo"_thermo.html,
+"thermo_modify"_thermo_modify.html,
+"thermo_style"_thermo_style.html,
+"timer"_timer.html,
+"timestep"_timestep.html,
+"uncompute"_uncompute.html,
+"undump"_undump.html,
+"unfix"_unfix.html,
+"units"_units.html,
+"variable"_variable.html,
+"velocity"_velocity.html,
+"write_coeff"_write_coeff.html,
+"write_data"_write_data.html,
+"write_dump"_write_dump.html,
+"write_restart"_write_restart.html :tb(c=6,ea=c)
diff --git a/doc/src/Commands_bond.txt b/doc/src/Commands_bond.txt
new file mode 100644
index 0000000000..314260cb14
--- /dev/null
+++ b/doc/src/Commands_bond.txt
@@ -0,0 +1,124 @@
+"Higher level section"_Commands.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+"All commands"_Commands_all.html,
+"Fix styles"_Commands_fix.html,
+"Compute styles"_Commands_compute.html,
+"Pair styles"_Commands_pair.html,
+"Bond styles"_Commands_bond.html,
+"Angle styles"_Commands_bond.html#angle,
+"Dihedral styles"_Commands_bond.html#dihedral,
+"Improper styles"_Commands_bond.html#improper,
+"KSpace styles"_Commands_kspace.html :tb(c=3,ea=c)
+
+Bond, angle, dihedral, and improper commands :h3
+
+:line
+
+Bond_style potentials :h3,link(bond)
+
+All LAMMPS "bond_style"_bond_style.html commands.  Some styles have
+accelerated versions.  This is indicated by additional letters in
+parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
+OPT.
+
+"none"_bond_none.html,
+"zero"_bond_zero.html,
+"hybrid"_bond_hybrid.html :tb(c=3,ea=c)
+
+"class2 (ko)"_bond_class2.html,
+"fene (iko)"_bond_fene.html,
+"fene/expand (o)"_bond_fene_expand.html,
+"gromos (o)"_bond_gromos.html,
+"harmonic (ko)"_bond_harmonic.html,
+"harmonic/shift (o)"_bond_harmonic_shift.html,
+"harmonic/shift/cut (o)"_bond_harmonic_shift_cut.html,
+"morse (o)"_bond_morse.html,
+"nonlinear (o)"_bond_nonlinear.html,
+"oxdna/fene"_bond_oxdna.html,
+"oxdna2/fene"_bond_oxdna.html,
+"quartic (o)"_bond_quartic.html,
+"table (o)"_bond_table.html :tb(c=4,ea=c)
+
+:line
+
+Angle_style potentials :h3,link(angle)
+
+All LAMMPS "angle_style"_angle_style.html commands.  Some styles have
+accelerated versions.  This is indicated by additional letters in
+parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
+OPT.
+
+"none"_angle_none.html,
+"zero"_angle_zero.html,
+"hybrid"_angle_hybrid.html :tb(c=3,ea=c)
+
+"charmm (ko)"_angle_charmm.html,
+"class2 (ko)"_angle_class2.html,
+"cosine (o)"_angle_cosine.html,
+"cosine/delta (o)"_angle_cosine_delta.html,
+"cosine/periodic (o)"_angle_cosine_periodic.html,
+"cosine/shift (o)"_angle_cosine_shift.html,
+"cosine/shift/exp (o)"_angle_cosine_shift_exp.html,
+"cosine/squared (o)"_angle_cosine_squared.html,
+"dipole (o)"_angle_dipole.html,
+"fourier (o)"_angle_fourier.html,
+"fourier/simple (o)"_angle_fourier_simple.html,
+"harmonic (iko)"_angle_harmonic.html,
+"quartic (o)"_angle_quartic.html,
+"sdk"_angle_sdk.html,
+"table (o)"_angle_table.html :tb(c=4,ea=c)
+
+:line
+
+Dihedral_style potentials :h3,link(dihedral)
+
+All LAMMPS "dihedral_style"_dihedral_style.html commands.  Some styles
+have accelerated versions.  This is indicated by additional letters in
+parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
+OPT.
+
+"none"_dihedral_none.html,
+"zero"_dihedral_zero.html,
+"hybrid"_dihedral_hybrid.html :tb(c=3,ea=c)
+
+"charmm (iko)"_dihedral_charmm.html,
+"charmmfsw"_dihedral_charmm.html,
+"class2 (ko)"_dihedral_class2.html,
+"cosine/shift/exp (o)"_dihedral_cosine_shift_exp.html,
+"fourier (io)"_dihedral_fourier.html,
+"harmonic (io)"_dihedral_harmonic.html,
+"helix (o)"_dihedral_helix.html,
+"multi/harmonic (o)"_dihedral_multi_harmonic.html,
+"nharmonic (o)"_dihedral_nharmonic.html,
+"opls (iko)"_dihedral_opls.htm;,
+"quadratic (o)"_dihedral_quadratic.html,
+"spherical (o)"_dihedral_spherical.html,
+"table (o)"_dihedral_table.html,
+"table/cut"_dihedral_table_cut.html :tb(c=4,ea=c)
+
+:line
+
+Improper_style potentials :h3,link(improper)
+
+All LAMMPS "improper_style"_improper_style.html commands.  Some styles
+have accelerated versions.  This is indicated by additional letters in
+parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
+OPT.
+
+"none"_improper_none.html,
+"zero"_improper_zero.html,
+"hybrid"_improper_hybrid.html  :tb(c=3,ea=c)
+
+"class2 (ko)"_improper_class2.html,
+"cossq (o)"_improper_cossq.html,
+"cvff (io)"_improper_cvff.html,
+"distance"_improper_distance.html,
+"fourier (o)"_improper_fourier.html,
+"harmonic (iko)"_improper_harmonic.html,
+"ring (o)"_improper_ring.html,
+"umbrella (o)"_improper_umbrella.html :tb(c=4,ea=c)
diff --git a/doc/src/Commands_category.txt b/doc/src/Commands_category.txt
new file mode 100644
index 0000000000..5d047c6727
--- /dev/null
+++ b/doc/src/Commands_category.txt
@@ -0,0 +1,141 @@
+"Higher level section"_Commands.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Commands by category :h3
+
+This page lists most of the LAMMPS commands, grouped by category.  The
+"Commands all"_Commands_all.html doc page lists all commands
+alphabetically.  It also includes long lists of style options for
+entries that appear in the following categories as a single command
+(fix, compute, pair, etc).
+
+Initialization:
+
+"newton"_newton.html,
+"package"_package.html,
+"processors"_processors.html,
+"suffix"_suffix.html,
+"units"_units.html :ul
+
+Setup simulation box:
+
+"boundary"_boundary.html,
+"box"_box.html,
+"change_box"_change_box.html,
+"create_box"_create_box.html,
+"dimension"_dimension.html,
+"lattice"_lattice.html,
+"region"_region.html :ul
+
+Setup atoms:
+
+"atom_modify"_atom_modify.html,
+"atom_style"_atom_style.html,
+"balance"_balance.html,
+"create_atoms"_create_atoms.html,
+"create_bonds"_create_bonds.html,
+"delete_atoms"_delete_atoms.html,
+"delete_bonds"_delete_bonds.html,
+"displace_atoms"_displace_atoms.html,
+"group"_group.html,
+"mass"_mass.html,
+"molecule"_molecule.html,
+"read_data"_read_data.html,
+"read_dump"_read_dump.html,
+"read_restart"_read_restart.html,
+"replicate"_replicate.html,
+"set"_set.html,
+"velocity"_velocity.html :ul
+
+Force fields:
+
+"angle_coeff"_angle_coeff.html,
+"angle_style"_angle_style.html,
+"bond_coeff"_bond_coeff.html,
+"bond_style"_bond_style.html,
+"bond_write"_bond_write.html,
+"dielectric"_dielectric.html,
+"dihedral_coeff"_dihedral_coeff.html,
+"dihedral_style"_dihedral_style.html,
+"improper_coeff"_improper_coeff.html,
+"improper_style"_improper_style.html,
+"kspace_modify"_kspace_modify.html,
+"kspace_style"_kspace_style.html,
+"pair_coeff"_pair_coeff.html,
+"pair_modify"_pair_modify.html,
+"pair_style"_pair_style.html,
+"pair_write"_pair_write.html,
+"special_bonds"_special_bonds.html :ul
+
+Settings:
+
+"comm_modify"_comm_modify.html,
+"comm_style"_comm_style.html,
+"info"_info.html,
+"min_modify"_min_modify.html,
+"min_style"_min_style.html,
+"neigh_modify"_neigh_modify.html,
+"neighbor"_neighbor.html,
+"partition"_partition.html,
+"reset_timestep"_reset_timestep.html,
+"run_style"_run_style.html,
+"timer"_timer.html,
+"timestep"_timestep.html :ul
+
+Operations within timestepping (fixes) and diagnostics (computes):
+
+"compute"_compute.html,
+"compute_modify"_compute_modify.html,
+"fix"_fix.html,
+"fix_modify"_fix_modify.html,
+"uncompute"_uncompute.html,
+"unfix"_unfix.html :ul
+
+Output:
+
+"dump image"_dump_image.html,
+"dump movie"_dump_image.html,
+"dump"_dump.html,
+"dump_modify"_dump_modify.html,
+"restart"_restart.html,
+"thermo"_thermo.html,
+"thermo_modify"_thermo_modify.html,
+"thermo_style"_thermo_style.html,
+"undump"_undump.html,
+"write_coeff"_write_coeff.html,
+"write_data"_write_data.html,
+"write_dump"_write_dump.html,
+"write_restart"_write_restart.html :ul
+
+Actions:
+
+"minimize"_minimize.html,
+"neb"_neb.html,
+"prd"_prd.html,
+"rerun"_rerun.html,
+"run"_run.html,
+"tad"_tad.html,
+"temper"_temper.html :ul
+
+Input script control:
+
+"clear"_clear.html,
+"echo"_echo.html,
+"if"_if.html,
+"include"_include.html,
+"jump"_jump.html,
+"label"_label.html,
+"log"_log.html,
+"next"_next.html,
+"print"_print.html,
+"python"_python.html,
+"quit"_quit.html,
+"shell"_shell.html,
+"variable"_variable.html :ul
+
diff --git a/doc/src/Commands_compute.txt b/doc/src/Commands_compute.txt
new file mode 100644
index 0000000000..028e274c9b
--- /dev/null
+++ b/doc/src/Commands_compute.txt
@@ -0,0 +1,153 @@
+"Higher level section"_Commands.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+"All commands"_Commands_all.html,
+"Fix styles"_Commands_fix.html,
+"Compute styles"_Commands_compute.html,
+"Pair styles"_Commands_pair.html,
+"Bond styles"_Commands_bond.html,
+"Angle styles"_Commands_bond.html#angle,
+"Dihedral styles"_Commands_bond.html#dihedral,
+"Improper styles"_Commands_bond.html#improper,
+"KSpace styles"_Commands_kspace.html :tb(c=3,ea=c)
+
+Compute commands :h3
+
+An alphabetic list of all LAMMPS "compute"_compute.html commands.
+Some styles have accelerated versions.  This is indicated by
+additional letters in parenthesis: g = GPU, i = USER-INTEL, k =
+KOKKOS, o = USER-OMP, t = OPT.
+
+"ackland/atom"_compute_ackland_atom.html,
+"aggregate/atom"_compute_cluster_atom.html,
+"angle"_compute_angle.html,
+"angle/local"_compute_angle_local.html,
+"angmom/chunk"_compute_angmom_chunk.html,
+"basal/atom"_compute_basal_atom.html,
+"body/local"_compute_body_local.html,
+"bond"_compute_bond.html,
+"bond/local"_compute_bond_local.html,
+"centro/atom"_compute_centro_atom.html,
+"chunk/atom"_compute_chunk_atom.html,
+"cluster/atom"_compute_cluster_atom.html,
+"cna/atom"_compute_cna_atom.html,
+"cnp/atom"_compute_cnp_atom.html,
+"com"_compute_com.html,
+"com/chunk"_compute_com_chunk.html,
+"contact/atom"_compute_contact_atom.html,
+"coord/atom"_compute_coord_atom.html,
+"damage/atom"_compute_damage_atom.html,
+"dihedral"_compute_dihedral.html,
+"dihedral/local"_compute_dihedral_local.html,
+"dilatation/atom"_compute_dilatation_atom.html,
+"dipole/chunk"_compute_dipole_chunk.html,
+"displace/atom"_compute_displace_atom.html,
+"dpd"_compute_dpd.html,
+"dpd/atom"_compute_dpd_atom.html,
+"edpd/temp/atom"_compute_edpd_temp_atom.html,
+"entropy/atom"_compute_entropy_atom.html,
+"erotate/asphere"_compute_erotate_asphere.html,
+"erotate/rigid"_compute_erotate_rigid.html,
+"erotate/sphere"_compute_erotate_sphere.html,
+"erotate/sphere/atom"_compute_erotate_sphere_atom.html,
+"event/displace"_compute_event_displace.html,
+"fep"_compute_fep.html,
+"force/tally"_compute_tally.html,
+"fragment/atom"_compute_cluster_atom.html,
+"global/atom"_compute_global_atom.html,
+"group/group"_compute_group_group.html,
+"gyration"_compute_gyration.html,
+"gyration/chunk"_compute_gyration_chunk.html,
+"heat/flux"_compute_heat_flux.html,
+"heat/flux/tally"_compute_tally.html,
+"hexorder/atom"_compute_hexorder_atom.html,
+"improper"_compute_improper.html,
+"improper/local"_compute_improper_local.html,
+"inertia/chunk"_compute_inertia_chunk.html,
+"ke"_compute_ke.html,
+"ke/atom"_compute_ke_atom.html,
+"ke/atom/eff"_compute_ke_atom_eff.html,
+"ke/eff"_compute_ke_eff.html,
+"ke/rigid"_compute_ke_rigid.html,
+"meso/e/atom"_compute_meso_e_atom.html,
+"meso/rho/atom"_compute_meso_rho_atom.html,
+"meso/t/atom"_compute_meso_t_atom.html,
+"msd"_compute_msd.html,
+"msd/chunk"_compute_msd_chunk.html,
+"msd/nongauss"_compute_msd_nongauss.html,
+"omega/chunk"_compute_omega_chunk.html,
+"orientorder/atom"_compute_orientorder_atom.html,
+"pair"_compute_pair.html,
+"pair/local"_compute_pair_local.html,
+"pe"_compute_pe.html,
+"pe/atom"_compute_pe_atom.html,
+"pe/mol/tally"_compute_tally.html,
+"pe/tally"_compute_tally.html,
+"plasticity/atom"_compute_plasticity_atom.html,
+"pressure"_compute_pressure.html,
+"pressure/uef"_compute_pressure_uef.html,
+"property/atom"_compute_property_atom.html,
+"property/chunk"_compute_property_chunk.html,
+"property/local"_compute_property_local.html,
+"rdf"_compute_rdf.html,
+"reduce"_compute_reduce.html,
+"reduce/region"_compute_reduce.html,
+"rigid/local"_compute_rigid_local.html,
+"saed"_compute_saed.html,
+"slice"_compute_slice.html,
+"smd/contact/radius"_compute_smd_contact_radius.html,
+"smd/damage"_compute_smd_damage.html,
+"smd/hourglass/error"_compute_smd_hourglass_error.html,
+"smd/internal/energy"_compute_smd_internal_energy.html,
+"smd/plastic/strain"_compute_smd_plastic_strain.html,
+"smd/plastic/strain/rate"_compute_smd_plastic_strain_rate.html,
+"smd/rho"_compute_smd_rho.html,
+"smd/tlsph/defgrad"_compute_smd_tlsph_defgrad.html,
+"smd/tlsph/dt"_compute_smd_tlsph_dt.html,
+"smd/tlsph/num/neighs"_compute_smd_tlsph_num_neighs.html,
+"smd/tlsph/shape"_compute_smd_tlsph_shape.html,
+"smd/tlsph/strain"_compute_smd_tlsph_strain.html,
+"smd/tlsph/strain/rate"_compute_smd_tlsph_strain_rate.html,
+"smd/tlsph/stress"_compute_smd_tlsph_stress.html,
+"smd/triangle/mesh/vertices"_compute_smd_triangle_mesh_vertices.html,
+"smd/ulsph/num/neighs"_compute_smd_ulsph_num_neighs.html,
+"smd/ulsph/strain"_compute_smd_ulsph_strain.html,
+"smd/ulsph/strain/rate"_compute_smd_ulsph_strain_rate.html,
+"smd/ulsph/stress"_compute_smd_ulsph_stress.html,
+"smd/vol"_compute_smd_vol.html,
+"sna/atom"_compute_sna_atom.html,
+"snad/atom"_compute_sna_atom.html,
+"snav/atom"_compute_sna_atom.html,
+"spin"_compute_spin.html,
+"stress/atom"_compute_stress_atom.html,
+"stress/tally"_compute_tally.html,
+"tdpd/cc/atom"_compute_tdpd_cc_atom.html,
+"temp (k)"_compute_temp.html,
+"temp/asphere"_compute_temp_asphere.html,
+"temp/body"_compute_temp_body.html,
+"temp/chunk"_compute_temp_chunk.html,
+"temp/com"_compute_temp_com.html,
+"temp/deform"_compute_temp_deform.html,
+"temp/deform/eff"_compute_temp_deform_eff.html,
+"temp/drude"_compute_temp_drude.html,
+"temp/eff"_compute_temp_eff.html,
+"temp/partial"_compute_temp_partial.html,
+"temp/profile"_compute_temp_profile.html,
+"temp/ramp"_compute_temp_ramp.html,
+"temp/region"_compute_temp_region.html,
+"temp/region/eff"_compute_temp_region_eff.html,
+"temp/rotate"_compute_temp_rotate.html,
+"temp/sphere"_compute_temp_sphere.html,
+"temp/uef"_compute_temp_uef.html,
+"ti"_compute_ti.html,
+"torque/chunk"_compute_torque_chunk.html,
+"vacf"_compute_vacf.html,
+"vcm/chunk"_compute_vcm_chunk.html,
+"voronoi/atom"_compute_voronoi_atom.html,
+"xrd"_compute_xrd.html :tb(c=6,ea=c)
diff --git a/doc/src/Commands_fix.txt b/doc/src/Commands_fix.txt
new file mode 100644
index 0000000000..e002c11770
--- /dev/null
+++ b/doc/src/Commands_fix.txt
@@ -0,0 +1,229 @@
+"Higher level section"_Commands.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+"All commands"_Commands_all.html,
+"Fix styles"_Commands_fix.html,
+"Compute styles"_Commands_compute.html,
+"Pair styles"_Commands_pair.html,
+"Bond styles"_Commands_bond.html,
+"Angle styles"_Commands_bond.html#angle,
+"Dihedral styles"_Commands_bond.html#dihedral,
+"Improper styles"_Commands_bond.html#improper,
+"KSpace styles"_Commands_kspace.html :tb(c=3,ea=c)
+
+Fix commands :h3
+
+An alphabetic list of all LAMMPS "fix"_fix.html commands.  Some styles
+have accelerated versions.  This is indicated by additional letters in
+parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
+OPT.
+
+"adapt"_fix_adapt.html,
+"adapt/fep"_fix_adapt_fep.html,
+"addforce"_fix_addforce.html,
+"addtorque"_fix_addtorque.html,
+"append/atoms"_fix_append_atoms.html,
+"atc"_fix_atc.html,
+"atom/swap"_fix_atom_swap.html,
+"ave/atom"_fix_ave_atom.html,
+"ave/chunk"_fix_ave_chunk.html,
+"ave/correlate"_fix_ave_correlate.html,
+"ave/correlate/long"_fix_ave_correlate_long.html,
+"ave/histo"_fix_ave_histo.html,
+"ave/histo/weight"_fix_ave_histo.html,
+"ave/time"_fix_ave_time.html,
+"aveforce"_fix_aveforce.html,
+"balance"_fix_balance.html,
+"bond/break"_fix_bond_break.html,
+"bond/create"_fix_bond_create.html,
+"bond/react"_fix_bond_react.html,
+"bond/swap"_fix_bond_swap.html,
+"box/relax"_fix_box_relax.html,
+"cmap"_fix_cmap.html,
+"colvars"_fix_colvars.html,
+"controller"_fix_controller.html,
+"deform (k)"_fix_deform.html,
+"deposit"_fix_deposit.html,
+"dpd/energy (k)"_fix_dpd_energy.html,
+"drag"_fix_drag.html,
+"drude"_fix_drude.html,
+"drude/transform/direct"_fix_drude_transform.html,
+"drude/transform/reverse"_fix_drude_transform.html,
+"dt/reset"_fix_dt_reset.html,
+"edpd/source"_fix_dpd_source.html,
+"efield"_fix_efield.html,
+"ehex"_fix_ehex.html,
+"enforce2d (k)"_fix_enforce2d.html,
+"eos/cv"_fix_eos_cv.html,
+"eos/table"_fix_eos_table.html,
+"eos/table/rx (k)"_fix_eos_table_rx.html,
+"evaporate"_fix_evaporate.html,
+"external"_fix_external.html,
+"filter/corotate"_fix_filter_corotate.html,
+"flow/gauss"_fix_flow_gauss.html,
+"freeze"_fix_freeze.html,
+"gcmc"_fix_gcmc.html,
+"gld"_fix_gld.html,
+"gle"_fix_gle.html,
+"gravity (o)"_fix_gravity.html,
+"grem"_fix_grem.html,
+"halt"_fix_halt.html,
+"heat"_fix_heat.html,
+"imd"_fix_imd.html,
+"indent"_fix_indent.html,
+"ipi"_fix_ipi.html,
+"langevin (k)"_fix_langevin.html,
+"langevin/drude"_fix_langevin_drude.html,
+"langevin/eff"_fix_langevin_eff.html,
+"langevin/spin"_fix_langevin_spin.html,
+"latte"_fix_latte.html,
+"lb/fluid"_fix_lb_fluid.html,
+"lb/momentum"_fix_lb_momentum.html,
+"lb/pc"_fix_lb_pc.html,
+"lb/rigid/pc/sphere"_fix_lb_rigid_pc_sphere.html,
+"lb/viscous"_fix_lb_viscous.html,
+"lineforce"_fix_lineforce.html,
+"manifoldforce"_fix_manifoldforce.html,
+"meso"_fix_meso.html,
+"meso/stationary"_fix_meso_stationary.html,
+"momentum (k)"_fix_momentum.html,
+"move"_fix_move.html,
+"mscg"_fix_mscg.html,
+"msst"_fix_msst.html,
+"mvv/dpd"_fix_mvv_dpd.html,
+"mvv/edpd"_fix_mvv_dpd.html,
+"mvv/tdpd"_fix_mvv_dpd.html,
+"neb"_fix_neb.html,
+"nph (ko)"_fix_nh.html,
+"nph/asphere (o)"_fix_nph_asphere.html,
+"nph/body"_fix_nph_body.html,
+"nph/eff"_fix_nh_eff.html,
+"nph/sphere (o)"_fix_nph_sphere.html,
+"nphug (o)"_fix_nphug.html,
+"npt (kio)"_fix_nh.html,
+"npt/asphere (o)"_fix_npt_asphere.html,
+"npt/body"_fix_npt_body.html,
+"npt/eff"_fix_nh_eff.html,
+"npt/sphere (o)"_fix_npt_sphere.html,
+"npt/uef"_fix_nh_uef.html,
+"nve (kio)"_fix_nve.html,
+"nve/asphere (i)"_fix_nve_asphere.html,
+"nve/asphere/noforce"_fix_nve_asphere_noforce.html,
+"nve/body"_fix_nve_body.html,
+"nve/dot"_fix_nve_dot.html,
+"nve/dotc/langevin"_fix_nve_dotc_langevin.html,
+"nve/eff"_fix_nve_eff.html,
+"nve/limit"_fix_nve_limit.html,
+"nve/line"_fix_nve_line.html,
+"nve/manifold/rattle"_fix_nve_manifold_rattle.html,
+"nve/noforce"_fix_nve_noforce.html,
+"nve/sphere (o)"_fix_nve_sphere.html,
+"nve/spin"_fix_nve_spin.html,
+"nve/tri"_fix_nve_tri.html,
+"nvk"_fix_nvk.html,
+"nvt (iko)"_fix_nh.html,
+"nvt/asphere (o)"_fix_nvt_asphere.html,
+"nvt/body"_fix_nvt_body.html,
+"nvt/eff"_fix_nh_eff.html,
+"nvt/manifold/rattle"_fix_nvt_manifold_rattle.html,
+"nvt/sllod (io)"_fix_nvt_sllod.html,
+"nvt/sllod/eff"_fix_nvt_sllod_eff.html,
+"nvt/sphere (o)"_fix_nvt_sphere.html,
+"nvt/uef"_fix_nh_uef.html,
+"oneway"_fix_oneway.html,
+"orient/bcc"_fix_orient.html,
+"orient/fcc"_fix_orient.html,
+"phonon"_fix_phonon.html,
+"pimd"_fix_pimd.html,
+"planeforce"_fix_planeforce.html,
+"poems"_fix_poems.html,
+"pour"_fix_pour.html,
+"precession/spin"_fix_precession_spin.html,
+"press/berendsen"_fix_press_berendsen.html,
+"print"_fix_print.html,
+"property/atom (k)"_fix_property_atom.html,
+"python/invoke"_fix_python_invoke.html,
+"python/move"_fix_python_move.html,
+"qbmsst"_fix_qbmsst.html,
+"qeq/comb (o)"_fix_qeq_comb.html,
+"qeq/dynamic"_fix_qeq.html,
+"qeq/fire"_fix_qeq.html,
+"qeq/point"_fix_qeq.html,
+"qeq/reax (ko)"_fix_qeq_reax.html,
+"qeq/shielded"_fix_qeq.html,
+"qeq/slater"_fix_qeq.html,
+"qmmm"_fix_qmmm.html,
+"qtb"_fix_qtb.html,
+"rattle"_fix_shake.html,
+"reax/bonds"_fix_reax_bonds.html,
+"reax/c/bonds (k)"_fix_reax_bonds.html,
+"reax/c/species (k)"_fix_reaxc_species.html,
+"recenter"_fix_recenter.html,
+"restrain"_fix_restrain.html,
+"rhok"_fix_rhok.html,
+"rigid (o)"_fix_rigid.html,
+"rigid/nph (o)"_fix_rigid.html,
+"rigid/npt (o)"_fix_rigid.html,
+"rigid/nve (o)"_fix_rigid.html,
+"rigid/nvt (o)"_fix_rigid.html,
+"rigid/small (o)"_fix_rigid.html,
+"rigid/small/nph"_fix_rigid.html,
+"rigid/small/npt"_fix_rigid.html,
+"rigid/small/nve"_fix_rigid.html,
+"rigid/small/nvt"_fix_rigid.html,
+"rx (k)"_fix_rx.html,
+"saed/vtk"_fix_saed_vtk.html,
+"setforce (k)"_fix_setforce.html,
+"shake"_fix_shake.html,
+"shardlow (k)"_fix_shardlow.html,
+"smd"_fix_smd.html,
+"smd/adjust/dt"_fix_smd_adjust_dt.html,
+"smd/integrate/tlsph"_fix_smd_integrate_tlsph.html,
+"smd/integrate/ulsph"_fix_smd_integrate_ulsph.html,
+"smd/move/triangulated/surface"_fix_smd_move_triangulated_surface.html,
+"smd/setvel"_fix_smd_setvel.html,
+"smd/wall/surface"_fix_smd_wall_surface.html,
+"spring"_fix_spring.html,
+"spring/chunk"_fix_spring_chunk.html,
+"spring/rg"_fix_spring_rg.html,
+"spring/self"_fix_spring_self.html,
+"srd"_fix_srd.html,
+"store/force"_fix_store_force.html,
+"store/state"_fix_store_state.html,
+"tdpd/source"_fix_dpd_source.html,
+"temp/berendsen"_fix_temp_berendsen.html,
+"temp/csld"_fix_temp_csvr.html,
+"temp/csvr"_fix_temp_csvr.html,
+"temp/rescale"_fix_temp_rescale.html,
+"temp/rescale/eff"_fix_temp_rescale_eff.html,
+"tfmc"_fix_tfmc.html,
+"thermal/conductivity"_fix_thermal_conductivity.html,
+"ti/spring"_fix_ti_spring.html,
+"tmd"_fix_tmd.html,
+"ttm"_fix_ttm.html,
+"ttm/mod"_fix_ttm.html,
+"tune/kspace"_fix_tune_kspace.html,
+"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/ees"_fix_wall_ees.html,
+"wall/gran"_fix_wall_gran.html,
+"wall/gran/region"_fix_wall_gran_region.html,
+"wall/harmonic"_fix_wall.html,
+"wall/lj1043"_fix_wall.html,
+"wall/lj126"_fix_wall.html,
+"wall/lj93 (k)"_fix_wall.html,
+"wall/piston"_fix_wall_piston.html,
+"wall/reflect (k)"_fix_wall_reflect.html,
+"wall/region"_fix_wall_region.html,
+"wall/region/ees"_fix_wall_ees.html,
+"wall/srd"_fix_wall_srd.html :tb(c=8,ea=c)
diff --git a/doc/src/Commands_input.txt b/doc/src/Commands_input.txt
new file mode 100644
index 0000000000..8b3dda741b
--- /dev/null
+++ b/doc/src/Commands_input.txt
@@ -0,0 +1,60 @@
+"Higher level section"_Commands.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+LAMMPS input scripts :h3
+
+LAMMPS executes by reading commands from a input script (text file),
+one line at a time.  When the input script ends, LAMMPS exits.  Each
+command causes LAMMPS to take some action.  It may set an internal
+variable, read in a file, or run a simulation.  Most commands have
+default settings, which means you only need to use the command if you
+wish to change the default.
+
+In many cases, the ordering of commands in an input script is not
+important.  However the following rules apply:
+
+(1) LAMMPS does not read your entire input script and then perform a
+simulation with all the settings.  Rather, the input script is read
+one line at a time and each command takes effect when it is read.
+Thus this sequence of commands:
+
+timestep 0.5
+run      100
+run      100 :pre
+
+does something different than this sequence:
+
+run      100
+timestep 0.5
+run      100 :pre
+
+In the first case, the specified timestep (0.5 fs) is used for two
+simulations of 100 timesteps each.  In the 2nd case, the default
+timestep (1.0 fs) is used for the 1st 100 step simulation and a 0.5 fs
+timestep is used for the 2nd one.
+
+(2) Some commands are only valid when they follow other commands.  For
+example you cannot set the temperature of a group of atoms until atoms
+have been defined and a group command is used to define which atoms
+belong to the group.
+
+(3) Sometimes command B will use values that can be set by command A.
+This means command A must precede command B in the input script if it
+is to have the desired effect.  For example, the
+"read_data"_read_data.html command initializes the system by setting
+up the simulation box and assigning atoms to processors.  If default
+values are not desired, the "processors"_processors.html and
+"boundary"_boundary.html commands need to be used before read_data to
+tell LAMMPS how to map processors to the simulation box.
+
+Many input script errors are detected by LAMMPS and an ERROR or
+WARNING message is printed.  The "Errors"_Errors.html doc page gives
+more information on what errors mean.  The documentation for each
+command lists restrictions on how the command can be used.
+
diff --git a/doc/src/Commands_kspace.txt b/doc/src/Commands_kspace.txt
new file mode 100644
index 0000000000..a126344505
--- /dev/null
+++ b/doc/src/Commands_kspace.txt
@@ -0,0 +1,36 @@
+"Higher level section"_Commands.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands.html)
+
+:line
+
+"All commands"_Commands_all.html,
+"Fix styles"_Commands_fix.html,
+"Compute styles"_Commands_compute.html,
+"Pair styles"_Commands_pair.html,
+"Bond styles"_Commands_bond.html,
+"Angle styles"_Commands_bond.html#angle,
+"Dihedral styles"_Commands_bond.html#dihedral,
+"Improper styles"_Commands_bond.html#improper,
+"KSpace styles"_Commands_kspace.html :tb(c=3,ea=c)
+
+KSpace solvers :h3
+
+All LAMMPS "kspace_style"_kspace_style.html solvers.  Some styles have
+accelerated versions.  This is indicated by additional letters in
+parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
+OPT.
+
+"ewald (o)"_kspace_style.html,
+"ewald/disp"_kspace_style.html,
+"msm (o)"_kspace_style.html,
+"msm/cg (o)"_kspace_style.html,
+"pppm (gok)"_kspace_style.html,
+"pppm/cg (o)"_kspace_style.html,
+"pppm/disp (i)"_kspace_style.html,
+"pppm/disp/tip4p"_kspace_style.html,
+"pppm/stagger"_kspace_style.html,
+"pppm/tip4p (o)"_kspace_style.html :tb(c=4,ea=c)
diff --git a/doc/src/Commands_pair.txt b/doc/src/Commands_pair.txt
new file mode 100644
index 0000000000..02b22942ae
--- /dev/null
+++ b/doc/src/Commands_pair.txt
@@ -0,0 +1,231 @@
+"Higher level section"_Commands.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+"All commands"_Commands_all.html,
+"Fix styles"_Commands_fix.html,
+"Compute styles"_Commands_compute.html,
+"Pair styles"_Commands_pair.html,
+"Bond styles"_Commands_bond.html,
+"Angle styles"_Commands_bond.html#angle,
+"Dihedral styles"_Commands_bond.html#dihedral,
+"Improper styles"_Commands_bond.html#improper,
+"KSpace styles"_Commands_kspace.html :tb(c=3,ea=c)
+
+Pair_style potentials :h3
+
+All LAMMPS "pair_style"_pair_style.html commands.  Some styles have
+accelerated versions.  This is indicated by additional letters in
+parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
+OPT.
+
+"none"_pair_none.html,
+"zero"_pair_zero.html,
+"hybrid"_pair_hybrid.html,
+"hybrid/overlay (k)"_pair_hybrid.html :tb(c=4,ea=c)
+
+"adp (o)"_pair_adp.html,
+"agni (o)"_pair_agni.html,
+"airebo (oi)"_pair_airebo.html,
+"airebo/morse (oi)"_pair_airebo.html,
+"awpmd/cut"_pair_awpmd.html,
+"beck (go)"_pair_beck.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,
+"born/coul/dsf/cs"_pair_born.html,
+"born/coul/long (go)"_pair_born.html,
+"born/coul/long/cs"_pair_born.html,
+"born/coul/msm (o)"_pair_born.html,
+"born/coul/wolf (go)"_pair_born.html,
+"born/coul/wolf/cs"_pair_born.html,
+"brownian (o)"_pair_brownian.html,
+"brownian/poly (o)"_pair_brownian.html,
+"buck (giko)"_pair_buck.html,
+"buck/coul/cut (giko)"_pair_buck.html,
+"buck/coul/long (giko)"_pair_buck.html,
+"buck/coul/long/cs"_pair_buck.html,
+"buck/coul/msm (o)"_pair_buck.html,
+"buck/long/coul/long (o)"_pair_buck_long.html,
+"buck/mdf"_pair_mdf.html,
+"colloid (go)"_pair_colloid.html,
+"comb (o)"_pair_comb.html,
+"comb3"_pair_comb.html,
+"coul/cut (gko)"_pair_coul.html,
+"coul/cut/soft (o)"_pair_lj_soft.html,
+"coul/debye (gko)"_pair_coul.html,
+"coul/diel (o)"_pair_coul_diel.html,
+"coul/dsf (gko)"_pair_coul.html,
+"coul/long (gko)"_pair_coul.html,
+"coul/long/cs"_pair_coul.html,
+"coul/long/soft (o)"_pair_lj_soft.html,
+"coul/msm"_pair_coul.html,
+"coul/shield"_pair_coul_shield.html,
+"coul/streitz"_pair_coul.html,
+"coul/wolf (ko)"_pair_coul.html,
+"coul/wolf/cs"_pair_coul.html,
+"dpd (gio)"_pair_dpd.html,
+"dpd/fdt"_pair_dpd_fdt.html,
+"dpd/fdt/energy (k)"_pair_dpd_fdt.html,
+"dpd/tstat (go)"_pair_dpd.html,
+"dsmc"_pair_dsmc.html,
+"eam (gikot)"_pair_eam.html,
+"eam/alloy (gikot)"_pair_eam.html,
+"eam/cd (o)"_pair_eam.html,
+"eam/fs (gikot)"_pair_eam.html,
+"edip (o)"_pair_edip.html,
+"edip/multi"_pair_edip.html,
+"edpd"_pair_meso.html,
+"eff/cut"_pair_eff.html,
+"eim (o)"_pair_eim.html,
+"exp6/rx (k)"_pair_exp6_rx.html,
+"extep"_pair_extep.html,
+"gauss (go)"_pair_gauss.html,
+"gauss/cut"_pair_gauss.html,
+"gayberne (gio)"_pair_gayberne.html,
+"gran/hertz/history (o)"_pair_gran.html,
+"gran/hooke (o)"_pair_gran.html,
+"gran/hooke/history (o)"_pair_gran.html,
+"gw"_pair_gw.html,
+"gw/zbl"_pair_gw.html,
+"hbond/dreiding/lj (o)"_pair_hbond_dreiding.html,
+"hbond/dreiding/morse (o)"_pair_hbond_dreiding.html,
+"ilp/graphene/hbn"_pair_ilp_graphene_hbn.html,
+"kim"_pair_kim.html,
+"kolmogorov/crespi/full"_pair_kolmogorov_crespi_full.html,
+"kolmogorov/crespi/z"_pair_kolmogorov_crespi_z.html,
+"lcbop"_pair_lcbop.html,
+"lennard/mdf"_pair_mdf.html,
+"line/lj"_pair_line_lj.html,
+"list"_pair_list.html,
+"lj/charmm/coul/charmm (iko)"_pair_charmm.html,
+"lj/charmm/coul/charmm/implicit (ko)"_pair_charmm.html,
+"lj/charmm/coul/long (giko)"_pair_charmm.html,
+"lj/charmm/coul/long/soft (o)"_pair_charmm.html,
+"lj/charmm/coul/msm"_pair_charmm.html,
+"lj/charmmfsw/coul/charmmfsh"_pair_charmm.html,
+"lj/charmmfsw/coul/long"_pair_charmm.html,
+"lj/class2 (gko)"_pair_class2.html,
+"lj/class2/coul/cut (ko)"_pair_class2.html,
+"lj/class2/coul/long (gko)"_pair_class2.html,
+"lj/cubic (go)"_pair_lj_cubic.html,
+"lj/cut (gikot)"_pair_lj.html,
+"lj/cut/coul/cut (gko)"_pair_lj.html,
+"lj/cut/coul/cut/soft (o)"_pair_lj_soft.html,
+"lj/cut/coul/debye (gko)"_pair_lj.html,
+"lj/cut/coul/dsf (gko)"_pair_lj.html,
+"lj/cut/coul/long (gikot)"_pair_lj.html,
+"lj/cut/coul/long/cs"_pair_lj.html,
+"lj/cut/coul/long/soft (o)"_pair_lj_soft.html,
+"lj/cut/coul/msm (go)"_pair_lj.html,
+"lj/cut/coul/wolf (o)"_pair_lj.html,
+"lj/cut/dipole/cut (go)"_pair_dipole.html,
+"lj/cut/dipole/long"_pair_dipole.html,
+"lj/cut/dipole/sf (go)"_pair_dipole.html,
+"lj/cut/soft (o)"_pair_lj_soft.html,
+"lj/cut/thole/long (o)"_pair_thole.html,
+"lj/cut/tip4p/cut (o)"_pair_lj.html,
+"lj/cut/tip4p/long (ot)"_pair_lj.html,
+"lj/cut/tip4p/long/soft (o)"_pair_lj_soft.html,
+"lj/expand (gko)"_pair_lj_expand.html,
+"lj/gromacs (gko)"_pair_gromacs.html,
+"lj/gromacs/coul/gromacs (ko)"_pair_gromacs.html,
+"lj/long/coul/long (io)"_pair_lj_long.html,
+"lj/long/dipole/long"_pair_dipole.html,
+"lj/long/tip4p/long"_pair_lj_long.html,
+"lj/mdf"_pair_mdf.html,
+"lj/sdk (gko)"_pair_sdk.html,
+"lj/sdk/coul/long (go)"_pair_sdk.html,
+"lj/sdk/coul/msm (o)"_pair_sdk.html,
+"lj/smooth (o)"_pair_lj_smooth.html,
+"lj/smooth/linear (o)"_pair_lj_smooth_linear.html,
+"lj96/cut (go)"_pair_lj96.html,
+"lubricate (o)"_pair_lubricate.html,
+"lubricate/poly (o)"_pair_lubricate.html,
+"lubricateU"_pair_lubricateU.html,
+"lubricateU/poly"_pair_lubricateU.html,
+"mdpd"_pair_meso.html,
+"mdpd/rhosum"_pair_meso.html,
+"meam"_pair_meam.html,
+"meam/c"_pair_meam.html,
+"meam/spline (o)"_pair_meam_spline.html,
+"meam/sw/spline"_pair_meam_sw_spline.html,
+"mgpt"_pair_mgpt.html,
+"mie/cut (o)"_pair_mie.html,
+"momb"_pair_momb.html,
+"morse (gkot)"_pair_morse.html,
+"morse/smooth/linear"_pair_morse.html,
+"morse/soft"_pair_morse.html,
+"multi/lucy"_pair_multi_lucy.html,
+"multi/lucy/rx (k)"_pair_multi_lucy_rx.html,
+"nb3b/harmonic (o)"_pair_nb3b_harmonic.html,
+"nm/cut (o)"_pair_nm.html,
+"nm/cut/coul/cut (o)"_pair_nm.html,
+"nm/cut/coul/long (o)"_pair_nm.html,
+"oxdna/coaxstk"_pair_oxdna.html,
+"oxdna/excv"_pair_oxdna.html,
+"oxdna/hbond"_pair_oxdna.html,
+"oxdna/stk"_pair_oxdna.html,
+"oxdna/xstk"_pair_oxdna.html,
+"oxdna2/coaxstk"_pair_oxdna2.html,
+"oxdna2/dh"_pair_oxdna2.html,
+"oxdna2/excv"_pair_oxdna2.html,
+"oxdna2/stk"_pair_oxdna2.html,
+"peri/eps"_pair_peri.html,
+"peri/lps (o)"_pair_peri.html,
+"peri/pmb (o)"_pair_peri.html,
+"peri/ves"_pair_peri.html,
+"polymorphic"_pair_polymorphic.html,
+"python"_pair_python.html,
+"quip"_pair_quip.html,
+"reax"_pair_reax.html,
+"reax/c (ko)"_pair_reaxc.html,
+"rebo (oi)"_pair_airebo.html,
+"resquared (go)"_pair_resquared.html,
+"smd/hertz"_pair_smd_hertz.html,
+"smd/tlsph"_pair_smd_tlsph.html,
+"smd/triangulated/surface"_pair_smd_triangulated_surface.html,
+"smd/ulsph"_pair_smd_ulsph.html,
+"smtbq"_pair_smtbq.html,
+"snap (k)"_pair_snap.html,
+"snap (k)"_pair_snap.html,
+"soft (go)"_pair_soft.html,
+"sph/heatconduction"_pair_sph_heatconduction.html,
+"sph/idealgas"_pair_sph_idealgas.html,
+"sph/lj"_pair_sph_lj.html,
+"sph/rhosum"_pair_sph_rhosum.html,
+"sph/taitwater"_pair_sph_taitwater.html,
+"sph/taitwater/morris"_pair_sph_taitwater_morris.html,
+"spin/dmi"_pair_spin_dmi.html,
+"spin/exchange"_pair_spin_exchange.html,
+"spin/magelec"_pair_spin_magelec.html,
+"spin/neel"_pair_spin_neel.html,
+"srp"_pair_srp.html,
+"sw (giko)"_pair_sw.html,
+"table (gko)"_pair_table.html,
+"table/rx (k)"_pair_table_rx.html,
+"tdpd"_pair_meso.html,
+"tersoff (giko)"_pair_tersoff.html,
+"tersoff/mod (gko)"_pair_tersoff_mod.html,
+"tersoff/mod/c (o)"_pair_tersoff_mod.html,
+"tersoff/table (o)"_pair_tersoff.html,
+"tersoff/zbl (gko)"_pair_tersoff_zbl.html,
+"thole"_pair_thole.html,
+"tip4p/cut (o)"_pair_coul.html,
+"tip4p/long (o)"_pair_coul.html,
+"tip4p/long/soft (o)"_pair_lj_soft.html,
+"tri/lj"_pair_tri_lj.html,
+"ufm (got)"_pair_ufm.html,
+"vashishta (ko)"_pair_vashishta.html,
+"vashishta/table (o)"_pair_vashishta.html,
+"yukawa (gok)"_pair_yukawa.html,
+"yukawa/colloid (go)"_pair_yukawa_colloid.html,
+"zbl (gok)"_pair_zbl.html :tb(c=4,ea=c)
diff --git a/doc/src/Commands_parse.txt b/doc/src/Commands_parse.txt
new file mode 100644
index 0000000000..cbe2261986
--- /dev/null
+++ b/doc/src/Commands_parse.txt
@@ -0,0 +1,136 @@
+"Higher level section"_Commands.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Parsing rules for input scripts :h3
+
+Each non-blank line in the input script is treated as a command.
+LAMMPS commands are case sensitive.  Command names are lower-case, as
+are specified command arguments.  Upper case letters may be used in
+file names or user-chosen ID strings.
+
+Here are 6 rulse for how each line in the input script is parsed by
+LAMMPS:
+
+(1) If the last printable character on the line is a "&" character,
+the command is assumed to continue on the next line.  The next line is
+concatenated to the previous line by removing the "&" character and
+line break.  This allows long commands to be continued across two or
+more lines.  See the discussion of triple quotes in (6) for how to
+continue a command across multiple line without using "&" characters.
+
+(2) All characters from the first "#" character onward are treated as
+comment and discarded.  See an exception in (6).  Note that a
+comment after a trailing "&" character will prevent the command from
+continuing on the next line.  Also note that for multi-line commands a
+single leading "#" will comment out the entire command.
+
+(3) The line is searched repeatedly for $ characters, which indicate
+variables that are replaced with a text string.  See an exception in
+(6).
+
+If the $ is followed by curly brackets, then the variable name is the
+text inside the curly brackets.  If no curly brackets follow the $,
+then the variable name is the single character immediately following
+the $.  Thus $\{myTemp\} and $x refer to variable names "myTemp" and
+"x".
+
+How the variable is converted to a text string depends on what style
+of variable it is; see the "variable"_variable.html doc page for details.
+It can be a variable that stores multiple text strings, and return one
+of them.  The returned text string can be multiple "words" (space
+separated) which will then be interpreted as multiple arguments in the
+input command.  The variable can also store a numeric formula which
+will be evaluated and its numeric result returned as a string.
+
+As a special case, if the $ is followed by parenthesis, then the text
+inside the parenthesis is treated as an "immediate" variable and
+evaluated as an "equal-style variable"_variable.html.  This is a way
+to use numeric formulas in an input script without having to assign
+them to variable names.  For example, these 3 input script lines:
+
+variable X equal (xlo+xhi)/2+sqrt(v_area)
+region 1 block $X 2 INF INF EDGE EDGE
+variable X delete :pre
+
+can be replaced by
+
+region 1 block $((xlo+xhi)/2+sqrt(v_area)) 2 INF INF EDGE EDGE :pre
+
+so that you do not have to define (or discard) a temporary variable X.
+
+Additionally, the "immediate" variable expression may be followed by a
+colon, followed by a C-style format string, e.g. ":%f" or ":%.10g".
+The format string must be appropriate for a double-precision
+floating-point value.  The format string is used to output the result
+of the variable expression evaluation.  If a format string is not
+specified a high-precision "%.20g" is used as the default.
+
+This can be useful for formatting print output to a desired precion:
+
+print "Final energy per atom: $(pe/atoms:%10.3f) eV/atom" :pre
+
+Note that neither the curly-bracket or immediate form of variables can
+contain nested $ characters for other variables to substitute for.
+Thus you cannot do this:
+
+variable        a equal 2
+variable        b2 equal 4
+print           "B2 = $\{b$a\}" :pre
+
+Nor can you specify this $($x-1.0) for an immediate variable, but
+you could use $(v_x-1.0), since the latter is valid syntax for an
+"equal-style variable"_variable.html.
+
+See the "variable"_variable.html command for more details of how
+strings are assigned to variables and evaluated, and how they can be
+used in input script commands.
+
+(4) The line is broken into "words" separated by whitespace (tabs,
+spaces).  Note that words can thus contain letters, digits,
+underscores, or punctuation characters.
+
+(5) The first word is the command name.  All successive words in the
+line are arguments.
+
+(6) If you want text with spaces to be treated as a single argument,
+it can be enclosed in either single or double or triple quotes.  A
+long single argument enclosed in single or double quotes can span
+multiple lines if the "&" character is used, as described above.  When
+the lines are concatenated together (and the "&" characters and line
+breaks removed), the text will become a single line.  If you want
+multiple lines of an argument to retain their line breaks, the text
+can be enclosed in triple quotes, in which case "&" characters are not
+needed.  For example:
+
+print "Volume = $v"
+print 'Volume = $v'
+if "$\{steps\} > 1000" then quit
+variable a string "red green blue &
+                   purple orange cyan"
+print """
+System volume = $v
+System temperature = $t
+""" :pre
+
+In each case, the single, double, or triple quotes are removed when
+the single argument they enclose is stored internally.
+
+See the "dump modify format"_dump_modify.html, "print"_print.html,
+"if"_if.html, and "python"_python.html commands for examples.
+
+A "#" or "$" character that is between quotes will not be treated as a
+comment indicator in (2) or substituted for as a variable in (3).
+
+NOTE: If the argument is itself a command that requires a quoted
+argument (e.g. using a "print"_print.html command as part of an
+"if"_if.html or "run every"_run.html command), then single, double, or
+triple quotes can be nested in the usual manner.  See the doc pages
+for those commands for examples.  Only one of level of nesting is
+allowed, but that should be sufficient for most use cases.
+
diff --git a/doc/src/Commands_structure.txt b/doc/src/Commands_structure.txt
new file mode 100644
index 0000000000..b5d2c7b07b
--- /dev/null
+++ b/doc/src/Commands_structure.txt
@@ -0,0 +1,95 @@
+"Higher level section"_Commands.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Input script structure :h3
+
+This page describes the structure of a typical LAMMPS input script.
+The examples directory in the LAMMPS distribution contains many sample
+input scripts; it is discussed on the "Examples"_Examples.html doc
+page.
+
+A LAMMPS input script typically has 4 parts:
+
+Initialization
+Atom definition
+Settings
+Run a simulation :ol
+
+The last 2 parts can be repeated as many times as desired.  I.e. run a
+simulation, change some settings, run some more, etc.  Each of the 4
+parts is now described in more detail.  Remember that almost all
+commands need only be used if a non-default value is desired.
+
+(1) Initialization
+
+Set parameters that need to be defined before atoms are created or
+read-in from a file.
+
+The relevant commands are "units"_units.html,
+"dimension"_dimension.html, "newton"_newton.html,
+"processors"_processors.html, "boundary"_boundary.html,
+"atom_style"_atom_style.html, "atom_modify"_atom_modify.html.
+
+If force-field parameters appear in the files that will be read, these
+commands tell LAMMPS what kinds of force fields are being used:
+"pair_style"_pair_style.html, "bond_style"_bond_style.html,
+"angle_style"_angle_style.html, "dihedral_style"_dihedral_style.html,
+"improper_style"_improper_style.html.
+
+(2) Atom definition
+
+There are 3 ways to define atoms in LAMMPS.  Read them in from a data
+or restart file via the "read_data"_read_data.html or
+"read_restart"_read_restart.html commands.  These files can contain
+molecular topology information.  Or create atoms on a lattice (with no
+molecular topology), using these commands: "lattice"_lattice.html,
+"region"_region.html, "create_box"_create_box.html,
+"create_atoms"_create_atoms.html.  The entire set of atoms can be
+duplicated to make a larger simulation using the
+"replicate"_replicate.html command.
+
+(3) Settings
+
+Once atoms and molecular topology are defined, a variety of settings
+can be specified: force field coefficients, simulation parameters,
+output options, etc.
+
+Force field coefficients are set by these commands (they can also be
+set in the read-in files): "pair_coeff"_pair_coeff.html,
+"bond_coeff"_bond_coeff.html, "angle_coeff"_angle_coeff.html,
+"dihedral_coeff"_dihedral_coeff.html,
+"improper_coeff"_improper_coeff.html,
+"kspace_style"_kspace_style.html, "dielectric"_dielectric.html,
+"special_bonds"_special_bonds.html.
+
+Various simulation parameters are set by these commands:
+"neighbor"_neighbor.html, "neigh_modify"_neigh_modify.html,
+"group"_group.html, "timestep"_timestep.html,
+"reset_timestep"_reset_timestep.html, "run_style"_run_style.html,
+"min_style"_min_style.html, "min_modify"_min_modify.html.
+
+Fixes impose a variety of boundary conditions, time integration, and
+diagnostic options.  The "fix"_fix.html command comes in many flavors.
+
+Various computations can be specified for execution during a
+simulation using the "compute"_compute.html,
+"compute_modify"_compute_modify.html, and "variable"_variable.html
+commands.
+
+Output options are set by the "thermo"_thermo.html, "dump"_dump.html,
+and "restart"_restart.html commands.
+
+(4) Run a simulation
+
+A molecular dynamics simulation is run using the "run"_run.html
+command.  Energy minimization (molecular statics) is performed using
+the "minimize"_minimize.html command.  A parallel tempering
+(replica-exchange) simulation can be run using the
+"temper"_temper.html command.
+
diff --git a/doc/src/Errors.txt b/doc/src/Errors.txt
index 92a577c5f2..1b6206c780 100644
--- a/doc/src/Errors.txt
+++ b/doc/src/Errors.txt
@@ -4,7 +4,7 @@ Section"_Manual.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Errors_bugs.txt b/doc/src/Errors_bugs.txt
index c0a94c7a44..4a8e62e775 100644
--- a/doc/src/Errors_bugs.txt
+++ b/doc/src/Errors_bugs.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Errors_common.txt b/doc/src/Errors_common.txt
index 86a25f7e7d..43d1a85a7b 100644
--- a/doc/src/Errors_common.txt
+++ b/doc/src/Errors_common.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Errors_messages.txt b/doc/src/Errors_messages.txt
index 39eabbd232..03fc25b561 100644
--- a/doc/src/Errors_messages.txt
+++ b/doc/src/Errors_messages.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Errors_warnings.txt b/doc/src/Errors_warnings.txt
index 1da777043c..dd3402ba86 100644
--- a/doc/src/Errors_warnings.txt
+++ b/doc/src/Errors_warnings.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Examples.txt b/doc/src/Examples.txt
index b01b289d5e..5bd8da2409 100644
--- a/doc/src/Examples.txt
+++ b/doc/src/Examples.txt
@@ -4,7 +4,7 @@ Section"_Tools.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_2d.txt b/doc/src/Howto_2d.txt
index ea11a7d546..e1758c05d5 100644
--- a/doc/src/Howto_2d.txt
+++ b/doc/src/Howto_2d.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_barostat.txt b/doc/src/Howto_barostat.txt
index b289ebfc4c..7c3db89152 100644
--- a/doc/src/Howto_barostat.txt
+++ b/doc/src/Howto_barostat.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_bash.txt b/doc/src/Howto_bash.txt
index 572157ab55..f1438418e7 100755
--- a/doc/src/Howto_bash.txt
+++ b/doc/src/Howto_bash.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_bioFF.txt b/doc/src/Howto_bioFF.txt
index 91d6eb0a8e..afb8a84f2e 100644
--- a/doc/src/Howto_bioFF.txt
+++ b/doc/src/Howto_bioFF.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_body.txt b/doc/src/Howto_body.txt
index 3031563f98..3535349b46 100644
--- a/doc/src/Howto_body.txt
+++ b/doc/src/Howto_body.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -17,9 +17,9 @@ surface meshes of discrete points, collections of sub-particles,
 deformable objects, etc.  Note that other kinds of finite-size
 spherical and aspherical particles are also supported by LAMMPS, such
 as spheres, ellipsoids, line segments, and triangles, but they are
-simpler entities that body particles.  See "Section
-6.14"_Section_howto.html#howto_14 for a general overview of all these
-particle types.
+simpler entities that body particles.  See the "Howto
+spherical"_Howto_spherical.html doc page for a general overview of all
+these particle types.
 
 Body particles are used via the "atom_style body"_atom_style.html
 command.  It takes a body style as an argument.  The current body
diff --git a/doc/src/Howto_chunk.txt b/doc/src/Howto_chunk.txt
index 9d757b2729..8e52acf4b8 100644
--- a/doc/src/Howto_chunk.txt
+++ b/doc/src/Howto_chunk.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_coreshell.txt b/doc/src/Howto_coreshell.txt
index 273568418b..4f1cd64384 100644
--- a/doc/src/Howto_coreshell.txt
+++ b/doc/src/Howto_coreshell.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_couple.txt b/doc/src/Howto_couple.txt
index ec45bd1290..38595a9d16 100644
--- a/doc/src/Howto_couple.txt
+++ b/doc/src/Howto_couple.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_diffusion.txt b/doc/src/Howto_diffusion.txt
index e0e16e1042..401c1e359c 100644
--- a/doc/src/Howto_diffusion.txt
+++ b/doc/src/Howto_diffusion.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_dispersion.txt b/doc/src/Howto_dispersion.txt
index 000f45076d..4ea286258e 100644
--- a/doc/src/Howto_dispersion.txt
+++ b/doc/src/Howto_dispersion.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_drude.txt b/doc/src/Howto_drude.txt
index e9c30db772..ebdf5f8658 100644
--- a/doc/src/Howto_drude.txt
+++ b/doc/src/Howto_drude.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_drude2.txt b/doc/src/Howto_drude2.txt
index f6e7eed40b..a342d4a87d 100644
--- a/doc/src/Howto_drude2.txt
+++ b/doc/src/Howto_drude2.txt
@@ -9,7 +9,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_elastic.txt b/doc/src/Howto_elastic.txt
index 4dda13fa53..68b30970ca 100644
--- a/doc/src/Howto_elastic.txt
+++ b/doc/src/Howto_elastic.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_github.txt b/doc/src/Howto_github.txt
index 191242205e..720b3317f0 100644
--- a/doc/src/Howto_github.txt
+++ b/doc/src/Howto_github.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_granular.txt b/doc/src/Howto_granular.txt
index cfa01bcb63..8027369501 100644
--- a/doc/src/Howto_granular.txt
+++ b/doc/src/Howto_granular.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_kappa.txt b/doc/src/Howto_kappa.txt
index 949901f21a..b2a57ef49b 100644
--- a/doc/src/Howto_kappa.txt
+++ b/doc/src/Howto_kappa.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_library.txt b/doc/src/Howto_library.txt
index b15aadd214..0d4852fbf2 100644
--- a/doc/src/Howto_library.txt
+++ b/doc/src/Howto_library.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_manifold.txt b/doc/src/Howto_manifold.txt
index c9bb1ce57f..09a936f7d3 100644
--- a/doc/src/Howto_manifold.txt
+++ b/doc/src/Howto_manifold.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_multiple.txt b/doc/src/Howto_multiple.txt
index 3516debb71..edcb8196cf 100644
--- a/doc/src/Howto_multiple.txt
+++ b/doc/src/Howto_multiple.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_nemd.txt b/doc/src/Howto_nemd.txt
index efb3a5cd73..f787801c36 100644
--- a/doc/src/Howto_nemd.txt
+++ b/doc/src/Howto_nemd.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_output.txt b/doc/src/Howto_output.txt
index ed2a78ee19..a204a3cc96 100644
--- a/doc/src/Howto_output.txt
+++ b/doc/src/Howto_output.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_polarizable.txt b/doc/src/Howto_polarizable.txt
index ec96ddc9a9..b2653b117e 100644
--- a/doc/src/Howto_polarizable.txt
+++ b/doc/src/Howto_polarizable.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_pylammps.txt b/doc/src/Howto_pylammps.txt
index abf7c52d05..8be4b66e78 100644
--- a/doc/src/Howto_pylammps.txt
+++ b/doc/src/Howto_pylammps.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_replica.txt b/doc/src/Howto_replica.txt
index b2f0faa209..1b44fe5374 100644
--- a/doc/src/Howto_replica.txt
+++ b/doc/src/Howto_replica.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_restart.txt b/doc/src/Howto_restart.txt
index d2a993fcd3..b211775479 100644
--- a/doc/src/Howto_restart.txt
+++ b/doc/src/Howto_restart.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_spc.txt b/doc/src/Howto_spc.txt
index 6a63c1f6a6..2cbf16547b 100644
--- a/doc/src/Howto_spc.txt
+++ b/doc/src/Howto_spc.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_spherical.txt b/doc/src/Howto_spherical.txt
index c239f72c2a..1e737df655 100644
--- a/doc/src/Howto_spherical.txt
+++ b/doc/src/Howto_spherical.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_spins.txt b/doc/src/Howto_spins.txt
index 3cb9e480b2..1b9adb49a5 100644
--- a/doc/src/Howto_spins.txt
+++ b/doc/src/Howto_spins.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_temperature.txt b/doc/src/Howto_temperature.txt
index 3d1bd8a2d6..7a318250cf 100644
--- a/doc/src/Howto_temperature.txt
+++ b/doc/src/Howto_temperature.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_thermostat.txt b/doc/src/Howto_thermostat.txt
index c1887d9738..0e2feb1869 100644
--- a/doc/src/Howto_thermostat.txt
+++ b/doc/src/Howto_thermostat.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_tip3p.txt b/doc/src/Howto_tip3p.txt
index 23ab604d1f..942b42aea1 100644
--- a/doc/src/Howto_tip3p.txt
+++ b/doc/src/Howto_tip3p.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_tip4p.txt b/doc/src/Howto_tip4p.txt
index a471bdc918..f9e548e268 100644
--- a/doc/src/Howto_tip4p.txt
+++ b/doc/src/Howto_tip4p.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_triclinic.txt b/doc/src/Howto_triclinic.txt
index 10bcc5e9d1..4b299e5ae1 100644
--- a/doc/src/Howto_triclinic.txt
+++ b/doc/src/Howto_triclinic.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 Triclinic (non-orthogonal) simulation boxes :h3
 
diff --git a/doc/src/Howto_viscosity.txt b/doc/src/Howto_viscosity.txt
index 4760607fd5..8bcab6dd24 100644
--- a/doc/src/Howto_viscosity.txt
+++ b/doc/src/Howto_viscosity.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_viz.txt b/doc/src/Howto_viz.txt
index 53635442c8..00c329c50b 100644
--- a/doc/src/Howto_viz.txt
+++ b/doc/src/Howto_viz.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Howto_walls.txt b/doc/src/Howto_walls.txt
index 7b0f8c0cfa..7522118582 100644
--- a/doc/src/Howto_walls.txt
+++ b/doc/src/Howto_walls.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Intro_authors.txt b/doc/src/Intro_authors.txt
index 96b4b861ca..b48c1eb59a 100644
--- a/doc/src/Intro_authors.txt
+++ b/doc/src/Intro_authors.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Intro_features.txt b/doc/src/Intro_features.txt
index 2a405ebf77..4b7d1d41e2 100644
--- a/doc/src/Intro_features.txt
+++ b/doc/src/Intro_features.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -74,8 +74,8 @@ commands)
   long-range interactions for charge, point-dipoles, and LJ dispersion: \
     Ewald, Wolf, PPPM (similar to particle-mesh Ewald)
   polarization models: "QEq"_fix_qeq.html, \
-    "core/shell model"_Section_howto.html#howto_26, \
-    "Drude dipole model"_Section_howto.html#howto_27
+    "core/shell model"_Howto_coreshell.html, \
+    "Drude dipole model"_Howto_drude.html
   charge equilibration (QEq via dynamic, point, shielded, Slater methods)
   coarse-grained potentials: DPD, GayBerne, REsquared, colloidal, DLVO
   mesoscopic potentials: granular, Peridynamics, SPH
diff --git a/doc/src/Intro_nonfeatures.txt b/doc/src/Intro_nonfeatures.txt
index 29b2eacf08..41f001fc8b 100644
--- a/doc/src/Intro_nonfeatures.txt
+++ b/doc/src/Intro_nonfeatures.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Intro_opensource.txt b/doc/src/Intro_opensource.txt
index 83384a22a2..e0d57f7ce1 100644
--- a/doc/src/Intro_opensource.txt
+++ b/doc/src/Intro_opensource.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Intro_overview.txt b/doc/src/Intro_overview.txt
index 51ad218216..49c14bc5f0 100644
--- a/doc/src/Intro_overview.txt
+++ b/doc/src/Intro_overview.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Intro_website.txt b/doc/src/Intro_website.txt
index 61c9babe1c..a8af94157c 100644
--- a/doc/src/Intro_website.txt
+++ b/doc/src/Intro_website.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index ddb9b152ec..a5e8b63640 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -14,7 +14,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html#comm)
 
 :line
 
@@ -73,7 +73,7 @@ every LAMMPS command.
 
    Intro
    Section_start
-   Section_commands
+   Commands
    Packages
    Speed
    Howto
@@ -116,12 +116,7 @@ END_RST -->
   2.6 "Command-line options"_start_6 :b
   2.7 "Screen output"_start_7 :b
   2.8 "Tips for users of previous versions"_start_8 :ule,b
-"Commands"_Section_commands.html :l
-  3.1 "LAMMPS input script"_cmd_1 :ulb,b
-  3.2 "Parsing rules"_cmd_2 :b
-  3.3 "Input script structure"_cmd_3 :b
-  3.4 "Commands listed by category"_cmd_4 :b
-  3.5 "Commands listed alphabetically"_cmd_5 :ule,b
+"Commands"_Commands.html :l
 "Optional packages"_Packages.html :l
 "Accelerate performance"_Speed.html :l
 "How-to discussions"_Howto.html :l
@@ -141,12 +136,6 @@ END_RST -->
 :link(start_7,Section_start.html#start_7)
 :link(start_8,Section_start.html#start_8)
 
-:link(cmd_1,Section_commands.html#cmd_1)
-:link(cmd_2,Section_commands.html#cmd_2)
-:link(cmd_3,Section_commands.html#cmd_3)
-:link(cmd_4,Section_commands.html#cmd_4)
-:link(cmd_5,Section_commands.html#cmd_5)
-
 <!-- END_HTML_ONLY -->
 
 </BODY>
diff --git a/doc/src/Manual_version.txt b/doc/src/Manual_version.txt
index db4301b6ea..8583eabf86 100644
--- a/doc/src/Manual_version.txt
+++ b/doc/src/Manual_version.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify.txt b/doc/src/Modify.txt
index ae0b0dc6bd..f828bd5d74 100644
--- a/doc/src/Modify.txt
+++ b/doc/src/Modify.txt
@@ -4,7 +4,7 @@ Section"_Python.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify_atom.txt b/doc/src/Modify_atom.txt
index afa1c319d2..60c7dccb29 100644
--- a/doc/src/Modify_atom.txt
+++ b/doc/src/Modify_atom.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify_body.txt b/doc/src/Modify_body.txt
index a0627ebdda..0114ae10c8 100644
--- a/doc/src/Modify_body.txt
+++ b/doc/src/Modify_body.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify_bond.txt b/doc/src/Modify_bond.txt
index f0828a0c3b..7ceea3f910 100644
--- a/doc/src/Modify_bond.txt
+++ b/doc/src/Modify_bond.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify_command.txt b/doc/src/Modify_command.txt
index 6fc9aad1fc..4576f6c806 100644
--- a/doc/src/Modify_command.txt
+++ b/doc/src/Modify_command.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify_compute.txt b/doc/src/Modify_compute.txt
index b02b8a983e..2f6481dbd5 100644
--- a/doc/src/Modify_compute.txt
+++ b/doc/src/Modify_compute.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify_contribute.txt b/doc/src/Modify_contribute.txt
index 9d47b08251..ef9fe6a717 100644
--- a/doc/src/Modify_contribute.txt
+++ b/doc/src/Modify_contribute.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify_dump.txt b/doc/src/Modify_dump.txt
index 81af54e003..cfe96f5d3d 100644
--- a/doc/src/Modify_dump.txt
+++ b/doc/src/Modify_dump.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify_fix.txt b/doc/src/Modify_fix.txt
index ba985475cc..b095ebc4b5 100644
--- a/doc/src/Modify_fix.txt
+++ b/doc/src/Modify_fix.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify_kspace.txt b/doc/src/Modify_kspace.txt
index 21407bf2e9..d5f018411d 100644
--- a/doc/src/Modify_kspace.txt
+++ b/doc/src/Modify_kspace.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify_min.txt b/doc/src/Modify_min.txt
index 5dcf0f1e67..8252a576f3 100644
--- a/doc/src/Modify_min.txt
+++ b/doc/src/Modify_min.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify_overview.txt b/doc/src/Modify_overview.txt
index f9964d964b..cf94b40281 100644
--- a/doc/src/Modify_overview.txt
+++ b/doc/src/Modify_overview.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify_pair.txt b/doc/src/Modify_pair.txt
index 8c234dc621..0ebf2daa30 100644
--- a/doc/src/Modify_pair.txt
+++ b/doc/src/Modify_pair.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify_region.txt b/doc/src/Modify_region.txt
index 9fbf359292..cdf192323a 100644
--- a/doc/src/Modify_region.txt
+++ b/doc/src/Modify_region.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify_thermo.txt b/doc/src/Modify_thermo.txt
index 001a9f99e1..1772bae87a 100644
--- a/doc/src/Modify_thermo.txt
+++ b/doc/src/Modify_thermo.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Modify_variable.txt b/doc/src/Modify_variable.txt
index 3c5b29cd1a..b163272f3e 100644
--- a/doc/src/Modify_variable.txt
+++ b/doc/src/Modify_variable.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Packages.txt b/doc/src/Packages.txt
index 6498d03063..a7f45a99b7 100644
--- a/doc/src/Packages.txt
+++ b/doc/src/Packages.txt
@@ -1,10 +1,10 @@
-"Previous Section"_Section_commands.html - "LAMMPS WWW Site"_lws -
+"Previous Section"_Commands.html - "LAMMPS WWW Site"_lws -
 "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
 Section"_Speed.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt
index 2b89809721..eb92fe4dc4 100644
--- a/doc/src/Packages_details.txt
+++ b/doc/src/Packages_details.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -396,7 +396,7 @@ lib/gpu/README
 "Section 2.6 -sf gpu"_Section_start.html#start_6
 "Section 2.6 -pk gpu"_Section_start.html#start_6
 "package gpu"_package.html
-Pair Styles section of "Section 3.5"_Section_commands.html#cmd_5 for pair styles followed by (g)
+"Commands all"_Commands_all.html pages (pair,kspace) for styles followed by (g)
 "Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
 
 :line
@@ -487,8 +487,8 @@ See the list of all KIM models here:
 https://openkim.org/kim-items/models/by-model-drivers
 
 See the list of example KIM models included by default here:
-https://openkim.org/kim-api in the "What is in the KIM API source
-package?" section
+https://openkim.org/kim-api on the "What is in the KIM API source
+package?" page.
 
 You can then install/un-install the package and build LAMMPS in the
 usual manner:
@@ -593,7 +593,7 @@ lib/kokkos/README
 "Section 2.6 -sf kk"_Section_start.html#start_6
 "Section 2.6 -pk kokkos"_Section_start.html#start_6
 "package kokkos"_package.html
-Styles sections of "Section 3.5"_Section_commands.html#cmd_5 for styles followed by (k)
+"Commands all"_Commands_all.html pages (fix,compute,pair,etc) for styles followed by (k)
 "Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
 
 :line
@@ -631,7 +631,7 @@ src/KSPACE: filenames -> commands
 "Howto tip4p"_Howto_tip4p.html
 "Howto spc"_Howto_spc.html
 "pair_style coul"_pair_coul.html
-Pair Styles section of "Section 3.5"_Section_commands.html#cmd_5 with "long" or "msm" in pair style name
+"Commands pair"_Commands_pair.html page for styles with "long" or "msm" in name
 examples/peptide
 bench/in.rhodo :ul
 
@@ -715,7 +715,7 @@ make machine :pre
 [Supporting info:]
 
 src/MANYBODY: filenames -> commands
-Pair Styles section of "Section 3.5"_Section_commands.html#cmd_5
+"Commands pair"_Commands_pair.html page
 examples/comb
 examples/eim
 examples/nb3d
@@ -1017,7 +1017,7 @@ src/OPT: filenames -> commands
 "Speed packages"_Speed_packages.html
 "Speed opt"_Speed_opt.html
 "Section 2.6 -sf opt"_Section_start.html#start_6
-Pair Styles section of "Section 3.5"_Section_commands.html#cmd_5 for pair styles followed by (t)
+"Commands pair"_Commands_pair.html for styles followed by (t)
 "Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
 
 :line
@@ -2072,7 +2072,7 @@ src/USER-INTEL/README
 "Section 2.6 -sf intel"_Section_start.html#start_6
 "Section 2.6 -pk intel"_Section_start.html#start_6
 "package intel"_package.html
-Styles sections of "Section 3.5"_Section_commands.html#cmd_5 for styles followed by (i)
+"Commands all"_Commands_all.html pages (fix,compute,pair,etc) for styles followed by (i)
 src/USER-INTEL/TEST
 "Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
 
@@ -2457,7 +2457,7 @@ src/USER-OMP/README
 "Section 2.6 -sf omp"_Section_start.html#start_6
 "Section 2.6 -pk omp"_Section_start.html#start_6
 "package omp"_package.html
-Styles sections of "Section 3.5"_Section_commands.html#cmd_5 for styles followed by (o)
+"Commands all"_Commands_all.html pages (fix,compute,pair,etc) for styles followed by (o)
 "Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
 
 :line
diff --git a/doc/src/Packages_standard.txt b/doc/src/Packages_standard.txt
index cff2d38273..7e64345602 100644
--- a/doc/src/Packages_standard.txt
+++ b/doc/src/Packages_standard.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Packages_user.txt b/doc/src/Packages_user.txt
index 0465296980..c8728148f9 100644
--- a/doc/src/Packages_user.txt
+++ b/doc/src/Packages_user.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Python.txt b/doc/src/Python.txt
index 169670d669..2c9c6872bb 100644
--- a/doc/src/Python.txt
+++ b/doc/src/Python.txt
@@ -4,7 +4,7 @@ Section"_Errors.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Python_call.txt b/doc/src/Python_call.txt
index 3e30a5a7c7..621f1fe241 100644
--- a/doc/src/Python_call.txt
+++ b/doc/src/Python_call.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Python_examples.txt b/doc/src/Python_examples.txt
index fbca381e8b..46e5fee2b9 100644
--- a/doc/src/Python_examples.txt
+++ b/doc/src/Python_examples.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Python_install.txt b/doc/src/Python_install.txt
index 631f6c4a7f..6591360ae2 100644
--- a/doc/src/Python_install.txt
+++ b/doc/src/Python_install.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Python_library.txt b/doc/src/Python_library.txt
index db16c39a47..8d0c724a45 100644
--- a/doc/src/Python_library.txt
+++ b/doc/src/Python_library.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Python_mpi.txt b/doc/src/Python_mpi.txt
index 8377bbb3d0..6e0a2ce319 100644
--- a/doc/src/Python_mpi.txt
+++ b/doc/src/Python_mpi.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Python_pylammps.txt b/doc/src/Python_pylammps.txt
index cdc8e2c086..d7baa93e2e 100644
--- a/doc/src/Python_pylammps.txt
+++ b/doc/src/Python_pylammps.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Python_run.txt b/doc/src/Python_run.txt
index 03ab2ed3d7..a94dc07f2d 100644
--- a/doc/src/Python_run.txt
+++ b/doc/src/Python_run.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Python_shlib.txt b/doc/src/Python_shlib.txt
index 1aafbe2e84..1a921e4025 100644
--- a/doc/src/Python_shlib.txt
+++ b/doc/src/Python_shlib.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Python_test.txt b/doc/src/Python_test.txt
index 5f361a500b..4a05d5c468 100644
--- a/doc/src/Python_test.txt
+++ b/doc/src/Python_test.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt
deleted file mode 100644
index daedb00a0a..0000000000
--- a/doc/src/Section_commands.txt
+++ /dev/null
@@ -1,1292 +0,0 @@
-"Previous Section"_Section_start.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Packages.html :c
-
-:link(lws,http://lammps.sandia.gov)
-:link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
-
-:line
-
-3. Commands :h2
-
-This section describes how a LAMMPS input script is formatted and the
-input script commands used to define a LAMMPS simulation.
-
-3.1 "LAMMPS input script"_#cmd_1
-3.2 "Parsing rules"_#cmd_2
-3.3 "Input script structure"_#cmd_3
-3.4 "Commands listed by category"_#cmd_4
-3.5 "Commands listed alphabetically"_#cmd_5 :all(b)
-
-:line
-:line
-
-3.1 LAMMPS input script :link(cmd_1),h4
-
-LAMMPS executes by reading commands from a input script (text file),
-one line at a time.  When the input script ends, LAMMPS exits.  Each
-command causes LAMMPS to take some action.  It may set an internal
-variable, read in a file, or run a simulation.  Most commands have
-default settings, which means you only need to use the command if you
-wish to change the default.
-
-In many cases, the ordering of commands in an input script is not
-important.  However the following rules apply:
-
-(1) LAMMPS does not read your entire input script and then perform a
-simulation with all the settings.  Rather, the input script is read
-one line at a time and each command takes effect when it is read.
-Thus this sequence of commands:
-
-timestep 0.5
-run      100
-run      100 :pre
-
-does something different than this sequence:
-
-run      100
-timestep 0.5
-run      100 :pre
-
-In the first case, the specified timestep (0.5 fmsec) is used for two
-simulations of 100 timesteps each.  In the 2nd case, the default
-timestep (1.0 fmsec) is used for the 1st 100 step simulation and a 0.5
-fmsec timestep is used for the 2nd one.
-
-(2) Some commands are only valid when they follow other commands.  For
-example you cannot set the temperature of a group of atoms until atoms
-have been defined and a group command is used to define which atoms
-belong to the group.
-
-(3) Sometimes command B will use values that can be set by command A.
-This means command A must precede command B in the input script if it
-is to have the desired effect.  For example, the
-"read_data"_read_data.html command initializes the system by setting
-up the simulation box and assigning atoms to processors.  If default
-values are not desired, the "processors"_processors.html and
-"boundary"_boundary.html commands need to be used before read_data to
-tell LAMMPS how to map processors to the simulation box.
-
-Many input script errors are detected by LAMMPS and an ERROR or
-WARNING message is printed.  The "Errors"_Errors.html doc page gives
-more information on what errors mean.  The documentation for each
-command lists restrictions on how the command can be used.
-
-:line
-
-3.2 Parsing rules :link(cmd_2),h4
-
-Each non-blank line in the input script is treated as a command.
-LAMMPS commands are case sensitive.  Command names are lower-case, as
-are specified command arguments.  Upper case letters may be used in
-file names or user-chosen ID strings.
-
-Here is how each line in the input script is parsed by LAMMPS:
-
-(1) If the last printable character on the line is a "&" character,
-the command is assumed to continue on the next line.  The next line is
-concatenated to the previous line by removing the "&" character and
-line break.  This allows long commands to be continued across two or
-more lines.  See the discussion of triple quotes in (6) for how to
-continue a command across multiple line without using "&" characters.
-
-(2) All characters from the first "#" character onward are treated as
-comment and discarded.  See an exception in (6).  Note that a
-comment after a trailing "&" character will prevent the command from
-continuing on the next line.  Also note that for multi-line commands a
-single leading "#" will comment out the entire command.
-
-(3) The line is searched repeatedly for $ characters, which indicate
-variables that are replaced with a text string.  See an exception in
-(6).
-
-If the $ is followed by curly brackets, then the variable name is the
-text inside the curly brackets.  If no curly brackets follow the $,
-then the variable name is the single character immediately following
-the $.  Thus $\{myTemp\} and $x refer to variable names "myTemp" and
-"x".
-
-How the variable is converted to a text string depends on what style
-of variable it is; see the "variable"_variable.html doc page for details.
-It can be a variable that stores multiple text strings, and return one
-of them.  The returned text string can be multiple "words" (space
-separated) which will then be interpreted as multiple arguments in the
-input command.  The variable can also store a numeric formula which
-will be evaluated and its numeric result returned as a string.
-
-As a special case, if the $ is followed by parenthesis, then the text
-inside the parenthesis is treated as an "immediate" variable and
-evaluated as an "equal-style variable"_variable.html.  This is a way
-to use numeric formulas in an input script without having to assign
-them to variable names.  For example, these 3 input script lines:
-
-variable X equal (xlo+xhi)/2+sqrt(v_area)
-region 1 block $X 2 INF INF EDGE EDGE
-variable X delete :pre
-
-can be replaced by
-
-region 1 block $((xlo+xhi)/2+sqrt(v_area)) 2 INF INF EDGE EDGE :pre
-
-so that you do not have to define (or discard) a temporary variable X.
-
-Additionally, the "immediate" variable expression may be followed by a
-colon, followed by a C-style format string, e.g. ":%f" or ":%.10g".
-The format string must be appropriate for a double-precision
-floating-point value.  The format string is used to output the result
-of the variable expression evaluation.  If a format string is not
-specified a high-precision "%.20g" is used as the default.
-
-This can be useful for formatting print output to a desired precion:
-
-print "Final energy per atom: $(pe/atoms:%10.3f) eV/atom" :pre
-
-Note that neither the curly-bracket or immediate form of variables can
-contain nested $ characters for other variables to substitute for.
-Thus you cannot do this:
-
-variable        a equal 2
-variable        b2 equal 4
-print           "B2 = $\{b$a\}" :pre
-
-Nor can you specify this $($x-1.0) for an immediate variable, but
-you could use $(v_x-1.0), since the latter is valid syntax for an
-"equal-style variable"_variable.html.
-
-See the "variable"_variable.html command for more details of how
-strings are assigned to variables and evaluated, and how they can be
-used in input script commands.
-
-(4) The line is broken into "words" separated by whitespace (tabs,
-spaces).  Note that words can thus contain letters, digits,
-underscores, or punctuation characters.
-
-(5) The first word is the command name.  All successive words in the
-line are arguments.
-
-(6) If you want text with spaces to be treated as a single argument,
-it can be enclosed in either single or double or triple quotes.  A
-long single argument enclosed in single or double quotes can span
-multiple lines if the "&" character is used, as described above.  When
-the lines are concatenated together (and the "&" characters and line
-breaks removed), the text will become a single line.  If you want
-multiple lines of an argument to retain their line breaks, the text
-can be enclosed in triple quotes, in which case "&" characters are not
-needed.  For example:
-
-print "Volume = $v"
-print 'Volume = $v'
-if "$\{steps\} > 1000" then quit
-variable a string "red green blue &
-                   purple orange cyan"
-print """
-System volume = $v
-System temperature = $t
-""" :pre
-
-In each case, the single, double, or triple quotes are removed when
-the single argument they enclose is stored internally.
-
-See the "dump modify format"_dump_modify.html, "print"_print.html,
-"if"_if.html, and "python"_python.html commands for examples.
-
-A "#" or "$" character that is between quotes will not be treated as a
-comment indicator in (2) or substituted for as a variable in (3).
-
-NOTE: If the argument is itself a command that requires a quoted
-argument (e.g. using a "print"_print.html command as part of an
-"if"_if.html or "run every"_run.html command), then single, double, or
-triple quotes can be nested in the usual manner.  See the doc pages
-for those commands for examples.  Only one of level of nesting is
-allowed, but that should be sufficient for most use cases.
-
-:line
-
-3.3 Input script structure :h3,link(cmd_3)
-
-This section describes the structure of a typical LAMMPS input script.
-The examples directory in the LAMMPS distribution contains many sample
-input scripts; the corresponding problems are discussed on the
-"Examples"_Examples.html doc page, and animated on the "LAMMPS WWW
-Site"_lws.
-
-A LAMMPS input script typically has 4 parts:
-
-Initialization
-Atom definition
-Settings
-Run a simulation :ol
-
-The last 2 parts can be repeated as many times as desired.  I.e. run a
-simulation, change some settings, run some more, etc.  Each of the 4
-parts is now described in more detail.  Remember that almost all the
-commands need only be used if a non-default value is desired.
-
-(1) Initialization
-
-Set parameters that need to be defined before atoms are created or
-read-in from a file.
-
-The relevant commands are "units"_units.html,
-"dimension"_dimension.html, "newton"_newton.html,
-"processors"_processors.html, "boundary"_boundary.html,
-"atom_style"_atom_style.html, "atom_modify"_atom_modify.html.
-
-If force-field parameters appear in the files that will be read, these
-commands tell LAMMPS what kinds of force fields are being used:
-"pair_style"_pair_style.html, "bond_style"_bond_style.html,
-"angle_style"_angle_style.html, "dihedral_style"_dihedral_style.html,
-"improper_style"_improper_style.html.
-
-(2) Atom definition
-
-There are 3 ways to define atoms in LAMMPS.  Read them in from a data
-or restart file via the "read_data"_read_data.html or
-"read_restart"_read_restart.html commands.  These files can contain
-molecular topology information.  Or create atoms on a lattice (with no
-molecular topology), using these commands: "lattice"_lattice.html,
-"region"_region.html, "create_box"_create_box.html,
-"create_atoms"_create_atoms.html.  The entire set of atoms can be
-duplicated to make a larger simulation using the
-"replicate"_replicate.html command.
-
-(3) Settings
-
-Once atoms and molecular topology are defined, a variety of settings
-can be specified: force field coefficients, simulation parameters,
-output options, etc.
-
-Force field coefficients are set by these commands (they can also be
-set in the read-in files): "pair_coeff"_pair_coeff.html,
-"bond_coeff"_bond_coeff.html, "angle_coeff"_angle_coeff.html,
-"dihedral_coeff"_dihedral_coeff.html,
-"improper_coeff"_improper_coeff.html,
-"kspace_style"_kspace_style.html, "dielectric"_dielectric.html,
-"special_bonds"_special_bonds.html.
-
-Various simulation parameters are set by these commands:
-"neighbor"_neighbor.html, "neigh_modify"_neigh_modify.html,
-"group"_group.html, "timestep"_timestep.html,
-"reset_timestep"_reset_timestep.html, "run_style"_run_style.html,
-"min_style"_min_style.html, "min_modify"_min_modify.html.
-
-Fixes impose a variety of boundary conditions, time integration, and
-diagnostic options.  The "fix"_fix.html command comes in many flavors.
-
-Various computations can be specified for execution during a
-simulation using the "compute"_compute.html,
-"compute_modify"_compute_modify.html, and "variable"_variable.html
-commands.
-
-Output options are set by the "thermo"_thermo.html, "dump"_dump.html,
-and "restart"_restart.html commands.
-
-(4) Run a simulation
-
-A molecular dynamics simulation is run using the "run"_run.html
-command.  Energy minimization (molecular statics) is performed using
-the "minimize"_minimize.html command.  A parallel tempering
-(replica-exchange) simulation can be run using the
-"temper"_temper.html command.
-
-:line
-
-3.4 Commands listed by category :link(cmd_4),h4
-
-This section lists core LAMMPS commands, grouped by category.
-The "next section"_#cmd_5 lists all commands alphabetically.  The
-next section also includes (long) lists of style options for entries
-that appear in the following categories as a single command (fix,
-compute, pair, etc).  Commands that are added by user packages are not
-included in the categories here, but they are in the next section.
-
-Initialization:
-
-"newton"_newton.html,
-"package"_package.html,
-"processors"_processors.html,
-"suffix"_suffix.html,
-"units"_units.html
-
-Setup simulation box:
-
-"boundary"_boundary.html,
-"box"_box.html,
-"change_box"_change_box.html,
-"create_box"_create_box.html,
-"dimension"_dimension.html,
-"lattice"_lattice.html,
-"region"_region.html
-
-Setup atoms:
-
-"atom_modify"_atom_modify.html,
-"atom_style"_atom_style.html,
-"balance"_balance.html,
-"create_atoms"_create_atoms.html,
-"create_bonds"_create_bonds.html,
-"delete_atoms"_delete_atoms.html,
-"delete_bonds"_delete_bonds.html,
-"displace_atoms"_displace_atoms.html,
-"group"_group.html,
-"mass"_mass.html,
-"molecule"_molecule.html,
-"read_data"_read_data.html,
-"read_dump"_read_dump.html,
-"read_restart"_read_restart.html,
-"replicate"_replicate.html,
-"set"_set.html,
-"velocity"_velocity.html
-
-Force fields:
-
-"angle_coeff"_angle_coeff.html,
-"angle_style"_angle_style.html,
-"bond_coeff"_bond_coeff.html,
-"bond_style"_bond_style.html,
-"bond_write"_bond_write.html,
-"dielectric"_dielectric.html,
-"dihedral_coeff"_dihedral_coeff.html,
-"dihedral_style"_dihedral_style.html,
-"improper_coeff"_improper_coeff.html,
-"improper_style"_improper_style.html,
-"kspace_modify"_kspace_modify.html,
-"kspace_style"_kspace_style.html,
-"pair_coeff"_pair_coeff.html,
-"pair_modify"_pair_modify.html,
-"pair_style"_pair_style.html,
-"pair_write"_pair_write.html,
-"special_bonds"_special_bonds.html
-
-Settings:
-
-"comm_modify"_comm_modify.html,
-"comm_style"_comm_style.html,
-"info"_info.html,
-"min_modify"_min_modify.html,
-"min_style"_min_style.html,
-"neigh_modify"_neigh_modify.html,
-"neighbor"_neighbor.html,
-"partition"_partition.html,
-"reset_timestep"_reset_timestep.html,
-"run_style"_run_style.html,
-"timer"_timer.html,
-"timestep"_timestep.html
-
-Operations within timestepping (fixes) and diagnostics (computes):
-
-"compute"_compute.html,
-"compute_modify"_compute_modify.html,
-"fix"_fix.html,
-"fix_modify"_fix_modify.html,
-"uncompute"_uncompute.html,
-"unfix"_unfix.html
-
-Output:
-
-"dump image"_dump_image.html,
-"dump movie"_dump_image.html,
-"dump"_dump.html,
-"dump_modify"_dump_modify.html,
-"restart"_restart.html,
-"thermo"_thermo.html,
-"thermo_modify"_thermo_modify.html,
-"thermo_style"_thermo_style.html,
-"undump"_undump.html,
-"write_coeff"_write_coeff.html,
-"write_data"_write_data.html,
-"write_dump"_write_dump.html,
-"write_restart"_write_restart.html
-
-Actions:
-
-"minimize"_minimize.html,
-"neb"_neb.html,
-"prd"_prd.html,
-"rerun"_rerun.html,
-"run"_run.html,
-"tad"_tad.html,
-"temper"_temper.html
-
-Input script control:
-
-"clear"_clear.html,
-"echo"_echo.html,
-"if"_if.html,
-"include"_include.html,
-"jump"_jump.html,
-"label"_label.html,
-"log"_log.html,
-"next"_next.html,
-"print"_print.html,
-"python"_python.html,
-"quit"_quit.html,
-"shell"_shell.html,
-"variable"_variable.html
-
-:line
-
-3.5 Individual commands :h3,link(cmd_5),link(comm)
-
-This section lists all LAMMPS commands alphabetically, with a separate
-listing below of styles within certain commands.  The "previous
-section"_#cmd_4 lists the same commands, grouped by category.  Note
-that some style options for some commands are part of specific LAMMPS
-packages, which means they cannot be used unless the package was
-included when LAMMPS was built.  Not all packages are included in a
-default LAMMPS build.  These dependencies are listed as Restrictions
-in the command's documentation.
-
-"angle_coeff"_angle_coeff.html,
-"angle_style"_angle_style.html,
-"atom_modify"_atom_modify.html,
-"atom_style"_atom_style.html,
-"balance"_balance.html,
-"bond_coeff"_bond_coeff.html,
-"bond_style"_bond_style.html,
-"bond_write"_bond_write.html,
-"boundary"_boundary.html,
-"box"_box.html,
-"change_box"_change_box.html,
-"clear"_clear.html,
-"comm_modify"_comm_modify.html,
-"comm_style"_comm_style.html,
-"compute"_compute.html,
-"compute_modify"_compute_modify.html,
-"create_atoms"_create_atoms.html,
-"create_bonds"_create_bonds.html,
-"create_box"_create_box.html,
-"delete_atoms"_delete_atoms.html,
-"delete_bonds"_delete_bonds.html,
-"dielectric"_dielectric.html,
-"dihedral_coeff"_dihedral_coeff.html,
-"dihedral_style"_dihedral_style.html,
-"dimension"_dimension.html,
-"displace_atoms"_displace_atoms.html,
-"dump"_dump.html,
-"dump image"_dump_image.html,
-"dump_modify"_dump_modify.html,
-"dump movie"_dump_image.html,
-"echo"_echo.html,
-"fix"_fix.html,
-"fix_modify"_fix_modify.html,
-"group"_group.html,
-"if"_if.html,
-"info"_info.html,
-"improper_coeff"_improper_coeff.html,
-"improper_style"_improper_style.html,
-"include"_include.html,
-"jump"_jump.html,
-"kspace_modify"_kspace_modify.html,
-"kspace_style"_kspace_style.html,
-"label"_label.html,
-"lattice"_lattice.html,
-"log"_log.html,
-"mass"_mass.html,
-"minimize"_minimize.html,
-"min_modify"_min_modify.html,
-"min_style"_min_style.html,
-"molecule"_molecule.html,
-"neb"_neb.html,
-"neigh_modify"_neigh_modify.html,
-"neighbor"_neighbor.html,
-"newton"_newton.html,
-"next"_next.html,
-"package"_package.html,
-"pair_coeff"_pair_coeff.html,
-"pair_modify"_pair_modify.html,
-"pair_style"_pair_style.html,
-"pair_write"_pair_write.html,
-"partition"_partition.html,
-"prd"_prd.html,
-"print"_print.html,
-"processors"_processors.html,
-"python"_python.html,
-"quit"_quit.html,
-"read_data"_read_data.html,
-"read_dump"_read_dump.html,
-"read_restart"_read_restart.html,
-"region"_region.html,
-"replicate"_replicate.html,
-"rerun"_rerun.html,
-"reset_ids"_reset_ids.html,
-"reset_timestep"_reset_timestep.html,
-"restart"_restart.html,
-"run"_run.html,
-"run_style"_run_style.html,
-"set"_set.html,
-"shell"_shell.html,
-"special_bonds"_special_bonds.html,
-"suffix"_suffix.html,
-"tad"_tad.html,
-"temper"_temper.html,
-"thermo"_thermo.html,
-"thermo_modify"_thermo_modify.html,
-"thermo_style"_thermo_style.html,
-"timer"_timer.html,
-"timestep"_timestep.html,
-"uncompute"_uncompute.html,
-"undump"_undump.html,
-"unfix"_unfix.html,
-"units"_units.html,
-"variable"_variable.html,
-"velocity"_velocity.html,
-"write_coeff"_write_coeff.html,
-"write_data"_write_data.html,
-"write_dump"_write_dump.html,
-"write_restart"_write_restart.html :tb(c=6,ea=c)
-
-These are additional commands in USER packages, which can be used if
-"LAMMPS is built with the appropriate
-package"_Section_start.html#start_3.
-
-"dump netcdf"_dump_netcdf.html,
-"dump netcdf/mpiio"_dump_netcdf.html,
-"dump vtk"_dump_vtk.html,
-"group2ndx"_group2ndx.html,
-"ndx2group"_group2ndx.html,
-"temper/grem"_temper_grem.html,
-"temper/npt"_temper_npt.html :tb(c=3,ea=c)
-
-:line
-
-Fix styles :h3
-
-See the "fix"_fix.html command for one-line descriptions of each style
-or click on the style itself for a full description.  Some of the
-styles have accelerated versions, which can be used if LAMMPS is built
-with the "appropriate accelerated package"_Speed_packages.html.  This
-is indicated by additional letters in parenthesis: g = GPU, i =
-USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.
-
-"adapt"_fix_adapt.html,
-"addforce"_fix_addforce.html,
-"append/atoms"_fix_append_atoms.html,
-"atom/swap"_fix_atom_swap.html,
-"aveforce"_fix_aveforce.html,
-"ave/atom"_fix_ave_atom.html,
-"ave/chunk"_fix_ave_chunk.html,
-"ave/correlate"_fix_ave_correlate.html,
-"ave/histo"_fix_ave_histo.html,
-"ave/histo/weight"_fix_ave_histo.html,
-"ave/time"_fix_ave_time.html,
-"balance"_fix_balance.html,
-"bond/break"_fix_bond_break.html,
-"bond/create"_fix_bond_create.html,
-"bond/swap"_fix_bond_swap.html,
-"box/relax"_fix_box_relax.html,
-"cmap"_fix_cmap.html,
-"controller"_fix_controller.html,
-"deform (k)"_fix_deform.html,
-"deposit"_fix_deposit.html,
-"drag"_fix_drag.html,
-"dt/reset"_fix_dt_reset.html,
-"efield"_fix_efield.html,
-"ehex"_fix_ehex.html,
-"enforce2d (k)"_fix_enforce2d.html,
-"evaporate"_fix_evaporate.html,
-"external"_fix_external.html,
-"freeze"_fix_freeze.html,
-"gcmc"_fix_gcmc.html,
-"gld"_fix_gld.html,
-"gravity (o)"_fix_gravity.html,
-"halt"_fix_halt.html,
-"heat"_fix_heat.html,
-"indent"_fix_indent.html,
-"latte"_fix_latte.html,
-"langevin (k)"_fix_langevin.html,
-"langevin/spin"_fix_langevin_spin.hmtl,
-"lineforce"_fix_lineforce.html,
-"momentum (k)"_fix_momentum.html,
-"move"_fix_move.html,
-"mscg"_fix_mscg.html,
-"msst"_fix_msst.html,
-"neb"_fix_neb.html,
-"nph (ko)"_fix_nh.html,
-"nphug (o)"_fix_nphug.html,
-"nph/asphere (o)"_fix_nph_asphere.html,
-"nph/body"_fix_nph_body.html,
-"nph/sphere (o)"_fix_nph_sphere.html,
-"npt (kio)"_fix_nh.html,
-"npt/asphere (o)"_fix_npt_asphere.html,
-"npt/body"_fix_npt_body.html,
-"npt/sphere (o)"_fix_npt_sphere.html,
-"nve (kio)"_fix_nve.html,
-"nve/asphere (i)"_fix_nve_asphere.html,
-"nve/asphere/noforce"_fix_nve_asphere_noforce.html,
-"nve/body"_fix_nve_body.html,
-"nve/limit"_fix_nve_limit.html,
-"nve/line"_fix_nve_line.html,
-"nve/noforce"_fix_nve_noforce.html,
-"nve/sphere (o)"_fix_nve_sphere.html,
-"nve/spin"_fix_nve_spin.html,
-"nve/tri"_fix_nve_tri.html,
-"nvt (iko)"_fix_nh.html,
-"nvt/asphere (o)"_fix_nvt_asphere.html,
-"nvt/body"_fix_nvt_body.html,
-"nvt/sllod (io)"_fix_nvt_sllod.html,
-"nvt/sphere (o)"_fix_nvt_sphere.html,
-"oneway"_fix_oneway.html,
-"orient/bcc"_fix_orient.html,
-"orient/fcc"_fix_orient.html,
-"planeforce"_fix_planeforce.html,
-"poems"_fix_poems.html,
-"pour"_fix_pour.html,
-"precession/spin"_fix_precession_spin.html,
-"press/berendsen"_fix_press_berendsen.html,
-"print"_fix_print.html,
-"property/atom (k)"_fix_property_atom.html,
-"python/invoke"_fix_python_invoke.html,
-"python/move"_fix_python_move.html,
-"qeq/comb (o)"_fix_qeq_comb.html,
-"qeq/dynamic"_fix_qeq.html,
-"qeq/fire"_fix_qeq.html,
-"qeq/point"_fix_qeq.html,
-"qeq/shielded"_fix_qeq.html,
-"qeq/slater"_fix_qeq.html,
-"rattle"_fix_shake.html,
-"reax/bonds"_fix_reax_bonds.html,
-"recenter"_fix_recenter.html,
-"restrain"_fix_restrain.html,
-"rigid (o)"_fix_rigid.html,
-"rigid/nph (o)"_fix_rigid.html,
-"rigid/npt (o)"_fix_rigid.html,
-"rigid/nve (o)"_fix_rigid.html,
-"rigid/nvt (o)"_fix_rigid.html,
-"rigid/small (o)"_fix_rigid.html,
-"rigid/small/nph"_fix_rigid.html,
-"rigid/small/npt"_fix_rigid.html,
-"rigid/small/nve"_fix_rigid.html,
-"rigid/small/nvt"_fix_rigid.html,
-"setforce (k)"_fix_setforce.html,
-"shake"_fix_shake.html,
-"spring"_fix_spring.html,
-"spring/chunk"_fix_spring_chunk.html,
-"spring/rg"_fix_spring_rg.html,
-"spring/self"_fix_spring_self.html,
-"srd"_fix_srd.html,
-"store/force"_fix_store_force.html,
-"store/state"_fix_store_state.html,
-"temp/berendsen"_fix_temp_berendsen.html,
-"temp/csld"_fix_temp_csvr.html,
-"temp/csvr"_fix_temp_csvr.html,
-"temp/rescale"_fix_temp_rescale.html,
-"tfmc"_fix_tfmc.html,
-"thermal/conductivity"_fix_thermal_conductivity.html,
-"tmd"_fix_tmd.html,
-"ttm"_fix_ttm.html,
-"tune/kspace"_fix_tune_kspace.html,
-"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,
-"wall/harmonic"_fix_wall.html,
-"wall/lj1043"_fix_wall.html,
-"wall/lj126"_fix_wall.html,
-"wall/lj93 (k)"_fix_wall.html,
-"wall/piston"_fix_wall_piston.html,
-"wall/reflect (k)"_fix_wall_reflect.html,
-"wall/region"_fix_wall_region.html,
-"wall/srd"_fix_wall_srd.html :tb(c=8,ea=c)
-
-These are additional fix styles in USER packages, which can be used if
-"LAMMPS is built with the appropriate
-package"_Section_start.html#start_3.
-
-"adapt/fep"_fix_adapt_fep.html,
-"addtorque"_fix_addtorque.html,
-"atc"_fix_atc.html,
-"ave/correlate/long"_fix_ave_correlate_long.html,
-"bond/react"_fix_bond_react.html,
-"colvars"_fix_colvars.html,
-"dpd/energy (k)"_fix_dpd_energy.html,
-"drude"_fix_drude.html,
-"drude/transform/direct"_fix_drude_transform.html,
-"drude/transform/reverse"_fix_drude_transform.html,
-"edpd/source"_fix_dpd_source.html,
-"eos/cv"_fix_eos_cv.html,
-"eos/table"_fix_eos_table.html,
-"eos/table/rx (k)"_fix_eos_table_rx.html,
-"filter/corotate"_fix_filter_corotate.html,
-"flow/gauss"_fix_flow_gauss.html,
-"gle"_fix_gle.html,
-"grem"_fix_grem.html,
-"imd"_fix_imd.html,
-"ipi"_fix_ipi.html,
-"langevin/drude"_fix_langevin_drude.html,
-"langevin/eff"_fix_langevin_eff.html,
-"lb/fluid"_fix_lb_fluid.html,
-"lb/momentum"_fix_lb_momentum.html,
-"lb/pc"_fix_lb_pc.html,
-"lb/rigid/pc/sphere"_fix_lb_rigid_pc_sphere.html,
-"lb/viscous"_fix_lb_viscous.html,
-"meso"_fix_meso.html,
-"manifoldforce"_fix_manifoldforce.html,
-"meso/stationary"_fix_meso_stationary.html,
-"mvv/dpd"_fix_mvv_dpd.html,
-"mvv/edpd"_fix_mvv_dpd.html,
-"mvv/tdpd"_fix_mvv_dpd.html,
-"nph/eff"_fix_nh_eff.html,
-"npt/eff"_fix_nh_eff.html,
-"npt/uef"_fix_nh_uef.html,
-"nve/dot"_fix_nve_dot.html,
-"nve/dotc/langevin"_fix_nve_dotc_langevin.html,
-"nve/eff"_fix_nve_eff.html,
-"nve/manifold/rattle"_fix_nve_manifold_rattle.html,
-"nvk"_fix_nvk.html,
-"nvt/eff"_fix_nh_eff.html,
-"nvt/manifold/rattle"_fix_nvt_manifold_rattle.html,
-"nvt/sllod/eff"_fix_nvt_sllod_eff.html,
-"nvt/uef"_fix_nh_uef.html,
-"phonon"_fix_phonon.html,
-"pimd"_fix_pimd.html,
-"qbmsst"_fix_qbmsst.html,
-"qeq/reax (ko)"_fix_qeq_reax.html,
-"qmmm"_fix_qmmm.html,
-"qtb"_fix_qtb.html,
-"reax/c/bonds (k)"_fix_reax_bonds.html,
-"reax/c/species (k)"_fix_reaxc_species.html,
-"rhok"_fix_rhok.html,
-"rx (k)"_fix_rx.html,
-"saed/vtk"_fix_saed_vtk.html,
-"shardlow (k)"_fix_shardlow.html,
-"smd"_fix_smd.html,
-"smd/adjust/dt"_fix_smd_adjust_dt.html,
-"smd/integrate/tlsph"_fix_smd_integrate_tlsph.html,
-"smd/integrate/ulsph"_fix_smd_integrate_ulsph.html,
-"smd/move/triangulated/surface"_fix_smd_move_triangulated_surface.html,
-"smd/setvel"_fix_smd_setvel.html,
-"smd/wall/surface"_fix_smd_wall_surface.html,
-"tdpd/source"_fix_dpd_source.html,
-"temp/rescale/eff"_fix_temp_rescale_eff.html,
-"ti/spring"_fix_ti_spring.html,
-"ttm/mod"_fix_ttm.html,
-"wall/ees"_fix_wall_ees.html,
-"wall/region/ees"_fix_wall_ees.html :tb(c=6,ea=c)
-
-:line
-
-Compute styles :h3
-
-See the "compute"_compute.html command for one-line descriptions of
-each style or click on the style itself for a full description.  Some
-of the styles have accelerated versions, which can be used if LAMMPS
-is built with the "appropriate accelerated
-package"_Speed_packages.html.  This is indicated by additional letters
-in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
-OPT.
-
-"aggregate/atom"_compute_cluster_atom.html,
-"angle"_compute_angle.html,
-"angle/local"_compute_angle_local.html,
-"angmom/chunk"_compute_angmom_chunk.html,
-"body/local"_compute_body_local.html,
-"bond"_compute_bond.html,
-"bond/local"_compute_bond_local.html,
-"centro/atom"_compute_centro_atom.html,
-"chunk/atom"_compute_chunk_atom.html,
-"cluster/atom"_compute_cluster_atom.html,
-"cna/atom"_compute_cna_atom.html,
-"com"_compute_com.html,
-"com/chunk"_compute_com_chunk.html,
-"contact/atom"_compute_contact_atom.html,
-"coord/atom"_compute_coord_atom.html,
-"damage/atom"_compute_damage_atom.html,
-"dihedral"_compute_dihedral.html,
-"dihedral/local"_compute_dihedral_local.html,
-"dilatation/atom"_compute_dilatation_atom.html,
-"dipole/chunk"_compute_dipole_chunk.html,
-"displace/atom"_compute_displace_atom.html,
-"erotate/asphere"_compute_erotate_asphere.html,
-"erotate/rigid"_compute_erotate_rigid.html,
-"erotate/sphere"_compute_erotate_sphere.html,
-"erotate/sphere/atom"_compute_erotate_sphere_atom.html,
-"event/displace"_compute_event_displace.html,
-"fragment/atom"_compute_cluster_atom.html,
-"global/atom"_compute_global_atom.html,
-"group/group"_compute_group_group.html,
-"gyration"_compute_gyration.html,
-"gyration/chunk"_compute_gyration_chunk.html,
-"heat/flux"_compute_heat_flux.html,
-"hexorder/atom"_compute_hexorder_atom.html,
-"improper"_compute_improper.html,
-"improper/local"_compute_improper_local.html,
-"inertia/chunk"_compute_inertia_chunk.html,
-"ke"_compute_ke.html,
-"ke/atom"_compute_ke_atom.html,
-"ke/rigid"_compute_ke_rigid.html,
-"msd"_compute_msd.html,
-"msd/chunk"_compute_msd_chunk.html,
-"msd/nongauss"_compute_msd_nongauss.html,
-"omega/chunk"_compute_omega_chunk.html,
-"orientorder/atom"_compute_orientorder_atom.html,
-"pair"_compute_pair.html,
-"pair/local"_compute_pair_local.html,
-"pe"_compute_pe.html,
-"pe/atom"_compute_pe_atom.html,
-"plasticity/atom"_compute_plasticity_atom.html,
-"pressure"_compute_pressure.html,
-"property/atom"_compute_property_atom.html,
-"property/local"_compute_property_local.html,
-"property/chunk"_compute_property_chunk.html,
-"rdf"_compute_rdf.html,
-"reduce"_compute_reduce.html,
-"reduce/region"_compute_reduce.html,
-"rigid/local"_compute_rigid_local.html,
-"slice"_compute_slice.html,
-"sna/atom"_compute_sna_atom.html,
-"snad/atom"_compute_sna_atom.html,
-"snav/atom"_compute_sna_atom.html,
-"spin"_compute_spin.html,
-"stress/atom"_compute_stress_atom.html,
-"temp (k)"_compute_temp.html,
-"temp/asphere"_compute_temp_asphere.html,
-"temp/body"_compute_temp_body.html,
-"temp/chunk"_compute_temp_chunk.html,
-"temp/com"_compute_temp_com.html,
-"temp/deform"_compute_temp_deform.html,
-"temp/partial"_compute_temp_partial.html,
-"temp/profile"_compute_temp_profile.html,
-"temp/ramp"_compute_temp_ramp.html,
-"temp/region"_compute_temp_region.html,
-"temp/sphere"_compute_temp_sphere.html,
-"ti"_compute_ti.html,
-"torque/chunk"_compute_torque_chunk.html,
-"vacf"_compute_vacf.html,
-"vcm/chunk"_compute_vcm_chunk.html,
-"voronoi/atom"_compute_voronoi_atom.html :tb(c=6,ea=c)
-
-These are additional compute styles in USER packages, which can be
-used if "LAMMPS is built with the appropriate
-package"_Section_start.html#start_3.
-
-"ackland/atom"_compute_ackland_atom.html,
-"basal/atom"_compute_basal_atom.html,
-"cnp/atom"_compute_cnp_atom.html,
-"dpd"_compute_dpd.html,
-"dpd/atom"_compute_dpd_atom.html,
-"edpd/temp/atom"_compute_edpd_temp_atom.html,
-"entropy/atom"_compute_entropy_atom.html,
-"fep"_compute_fep.html,
-"force/tally"_compute_tally.html,
-"heat/flux/tally"_compute_tally.html,
-"ke/eff"_compute_ke_eff.html,
-"ke/atom/eff"_compute_ke_atom_eff.html,
-"meso/e/atom"_compute_meso_e_atom.html,
-"meso/rho/atom"_compute_meso_rho_atom.html,
-"meso/t/atom"_compute_meso_t_atom.html,
-"pe/tally"_compute_tally.html,
-"pe/mol/tally"_compute_tally.html,
-"pressure/uef"_compute_pressure_uef.html,
-"saed"_compute_saed.html,
-"smd/contact/radius"_compute_smd_contact_radius.html,
-"smd/damage"_compute_smd_damage.html,
-"smd/hourglass/error"_compute_smd_hourglass_error.html,
-"smd/internal/energy"_compute_smd_internal_energy.html,
-"smd/plastic/strain"_compute_smd_plastic_strain.html,
-"smd/plastic/strain/rate"_compute_smd_plastic_strain_rate.html,
-"smd/rho"_compute_smd_rho.html,
-"smd/tlsph/defgrad"_compute_smd_tlsph_defgrad.html,
-"smd/tlsph/dt"_compute_smd_tlsph_dt.html,
-"smd/tlsph/num/neighs"_compute_smd_tlsph_num_neighs.html,
-"smd/tlsph/shape"_compute_smd_tlsph_shape.html,
-"smd/tlsph/strain"_compute_smd_tlsph_strain.html,
-"smd/tlsph/strain/rate"_compute_smd_tlsph_strain_rate.html,
-"smd/tlsph/stress"_compute_smd_tlsph_stress.html,
-"smd/triangle/mesh/vertices"_compute_smd_triangle_mesh_vertices.html,
-"smd/ulsph/num/neighs"_compute_smd_ulsph_num_neighs.html,
-"smd/ulsph/strain"_compute_smd_ulsph_strain.html,
-"smd/ulsph/strain/rate"_compute_smd_ulsph_strain_rate.html,
-"smd/ulsph/stress"_compute_smd_ulsph_stress.html,
-"smd/vol"_compute_smd_vol.html,
-"stress/tally"_compute_tally.html,
-"tdpd/cc/atom"_compute_tdpd_cc_atom.html,
-"temp/drude"_compute_temp_drude.html,
-"temp/eff"_compute_temp_eff.html,
-"temp/deform/eff"_compute_temp_deform_eff.html,
-"temp/region/eff"_compute_temp_region_eff.html,
-"temp/rotate"_compute_temp_rotate.html,
-"temp/uef"_compute_temp_uef.html,
-"xrd"_compute_xrd.html :tb(c=6,ea=c)
-
-:line
-
-Pair_style potentials :h3
-
-See the "pair_style"_pair_style.html command for an overview of pair
-potentials.  Click on the style itself for a full description.  Many
-of the styles have accelerated versions, which can be used if LAMMPS
-is built with the "appropriate accelerated
-package"_Speed_packages.html.  This is indicated by additional letters
-in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
-OPT.
-
-"none"_pair_none.html,
-"zero"_pair_zero.html,
-"hybrid"_pair_hybrid.html,
-"hybrid/overlay (k)"_pair_hybrid.html,
-"adp (o)"_pair_adp.html,
-"airebo (oi)"_pair_airebo.html,
-"airebo/morse (oi)"_pair_airebo.html,
-"beck (go)"_pair_beck.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,
-"born/coul/dsf/cs"_pair_born.html,
-"born/coul/long (go)"_pair_born.html,
-"born/coul/long/cs"_pair_born.html,
-"born/coul/msm (o)"_pair_born.html,
-"born/coul/wolf (go)"_pair_born.html,
-"born/coul/wolf/cs"_pair_born.html,
-"brownian (o)"_pair_brownian.html,
-"brownian/poly (o)"_pair_brownian.html,
-"buck (giko)"_pair_buck.html,
-"buck/coul/cut (giko)"_pair_buck.html,
-"buck/coul/long (giko)"_pair_buck.html,
-"buck/coul/long/cs"_pair_buck.html,
-"buck/coul/msm (o)"_pair_buck.html,
-"buck/long/coul/long (o)"_pair_buck_long.html,
-"colloid (go)"_pair_colloid.html,
-"comb (o)"_pair_comb.html,
-"comb3"_pair_comb.html,
-"coul/cut (gko)"_pair_coul.html,
-"coul/debye (gko)"_pair_coul.html,
-"coul/dsf (gko)"_pair_coul.html,
-"coul/long (gko)"_pair_coul.html,
-"coul/long/cs"_pair_coul.html,
-"coul/msm"_pair_coul.html,
-"coul/streitz"_pair_coul.html,
-"coul/wolf (ko)"_pair_coul.html,
-"coul/wolf/cs"_pair_coul.html,
-"dpd (gio)"_pair_dpd.html,
-"dpd/tstat (go)"_pair_dpd.html,
-"dsmc"_pair_dsmc.html,
-"eam (gikot)"_pair_eam.html,
-"eam/alloy (gikot)"_pair_eam.html,
-"eam/cd (o)"_pair_eam.html,
-"eam/fs (gikot)"_pair_eam.html,
-"eim (o)"_pair_eim.html,
-"gauss (go)"_pair_gauss.html,
-"gayberne (gio)"_pair_gayberne.html,
-"gran/hertz/history (o)"_pair_gran.html,
-"gran/hooke (o)"_pair_gran.html,
-"gran/hooke/history (o)"_pair_gran.html,
-"gw"_pair_gw.html,
-"gw/zbl"_pair_gw.html,
-"hbond/dreiding/lj (o)"_pair_hbond_dreiding.html,
-"hbond/dreiding/morse (o)"_pair_hbond_dreiding.html,
-"kim"_pair_kim.html,
-"lcbop"_pair_lcbop.html,
-"line/lj"_pair_line_lj.html,
-"lj/charmm/coul/charmm (iko)"_pair_charmm.html,
-"lj/charmm/coul/charmm/implicit (ko)"_pair_charmm.html,
-"lj/charmm/coul/long (giko)"_pair_charmm.html,
-"lj/charmm/coul/msm"_pair_charmm.html,
-"lj/charmmfsw/coul/charmmfsh"_pair_charmm.html,
-"lj/charmmfsw/coul/long"_pair_charmm.html,
-"lj/class2 (gko)"_pair_class2.html,
-"lj/class2/coul/cut (ko)"_pair_class2.html,
-"lj/class2/coul/long (gko)"_pair_class2.html,
-"lj/cubic (go)"_pair_lj_cubic.html,
-"lj/cut (gikot)"_pair_lj.html,
-"lj/cut/coul/cut (gko)"_pair_lj.html,
-"lj/cut/coul/debye (gko)"_pair_lj.html,
-"lj/cut/coul/dsf (gko)"_pair_lj.html,
-"lj/cut/coul/long (gikot)"_pair_lj.html,
-"lj/cut/coul/long/cs"_pair_lj.html,
-"lj/cut/coul/msm (go)"_pair_lj.html,
-"lj/cut/coul/wolf (o)"_pair_lj.html,
-"lj/cut/dipole/cut (go)"_pair_dipole.html,
-"lj/cut/dipole/long"_pair_dipole.html,
-"lj/cut/tip4p/cut (o)"_pair_lj.html,
-"lj/cut/tip4p/long (ot)"_pair_lj.html,
-"lj/expand (gko)"_pair_lj_expand.html,
-"lj/gromacs (gko)"_pair_gromacs.html,
-"lj/gromacs/coul/gromacs (ko)"_pair_gromacs.html,
-"lj/long/coul/long (io)"_pair_lj_long.html,
-"lj/long/dipole/long"_pair_dipole.html,
-"lj/long/tip4p/long"_pair_lj_long.html,
-"lj/smooth (o)"_pair_lj_smooth.html,
-"lj/smooth/linear (o)"_pair_lj_smooth_linear.html,
-"lj96/cut (go)"_pair_lj96.html,
-"lubricate (o)"_pair_lubricate.html,
-"lubricate/poly (o)"_pair_lubricate.html,
-"lubricateU"_pair_lubricateU.html,
-"lubricateU/poly"_pair_lubricateU.html,
-"meam"_pair_meam.html,
-"mie/cut (o)"_pair_mie.html,
-"morse (gkot)"_pair_morse.html,
-"nb3b/harmonic (o)"_pair_nb3b_harmonic.html,
-"nm/cut (o)"_pair_nm.html,
-"nm/cut/coul/cut (o)"_pair_nm.html,
-"nm/cut/coul/long (o)"_pair_nm.html,
-"peri/eps"_pair_peri.html,
-"peri/lps (o)"_pair_peri.html,
-"peri/pmb (o)"_pair_peri.html,
-"peri/ves"_pair_peri.html,
-"polymorphic"_pair_polymorphic.html,
-"python"_pair_python.html,
-"reax"_pair_reax.html,
-"rebo (oi)"_pair_airebo.html,
-"resquared (go)"_pair_resquared.html,
-"snap (k)"_pair_snap.html,
-"soft (go)"_pair_soft.html,
-"sw (giko)"_pair_sw.html,
-"spin/dmi"_pair_spin_dmi.html,
-"spin/exchange"_pair_spin_exchange.html,
-"spin/magelec"_pair_spin_magelec.html,
-"spin/neel"_pair_spin_neel.html,
-"table (gko)"_pair_table.html,
-"tersoff (giko)"_pair_tersoff.html,
-"tersoff/mod (gko)"_pair_tersoff_mod.html,
-"tersoff/mod/c (o)"_pair_tersoff_mod.html,
-"tersoff/zbl (gko)"_pair_tersoff_zbl.html,
-"tip4p/cut (o)"_pair_coul.html,
-"tip4p/long (o)"_pair_coul.html,
-"tri/lj"_pair_tri_lj.html,
-"ufm (got)"_pair_ufm.html,
-"vashishta (ko)"_pair_vashishta.html,
-"vashishta/table (o)"_pair_vashishta.html,
-"yukawa (gok)"_pair_yukawa.html,
-"yukawa/colloid (go)"_pair_yukawa_colloid.html,
-"zbl (gok)"_pair_zbl.html :tb(c=4,ea=c)
-
-These are additional pair styles in USER packages, which can be used
-if "LAMMPS is built with the appropriate
-package"_Section_start.html#start_3.
-
-"agni (o)"_pair_agni.html,
-"awpmd/cut"_pair_awpmd.html,
-"buck/mdf"_pair_mdf.html,
-"coul/cut/soft (o)"_pair_lj_soft.html,
-"coul/diel (o)"_pair_coul_diel.html,
-"coul/long/soft (o)"_pair_lj_soft.html,
-"coul/shield"_pair_coul_shield.html,
-"dpd/fdt"_pair_dpd_fdt.html,
-"dpd/fdt/energy (k)"_pair_dpd_fdt.html,
-"edip (o)"_pair_edip.html,
-"edip/multi"_pair_edip.html,
-"edpd"_pair_meso.html,
-"eff/cut"_pair_eff.html,
-"exp6/rx (k)"_pair_exp6_rx.html,
-"extep"_pair_extep.html,
-"gauss/cut"_pair_gauss.html,
-"ilp/graphene/hbn"_pair_ilp_graphene_hbn.html,
-"kolmogorov/crespi/full"_pair_kolmogorov_crespi_full.html,
-"kolmogorov/crespi/z"_pair_kolmogorov_crespi_z.html,
-"lennard/mdf"_pair_mdf.html,
-"list"_pair_list.html,
-"lj/charmm/coul/long/soft (o)"_pair_charmm.html,
-"lj/cut/coul/cut/soft (o)"_pair_lj_soft.html,
-"lj/cut/coul/long/soft (o)"_pair_lj_soft.html,
-"lj/cut/dipole/sf (go)"_pair_dipole.html,
-"lj/cut/soft (o)"_pair_lj_soft.html,
-"lj/cut/thole/long (o)"_pair_thole.html,
-"lj/cut/tip4p/long/soft (o)"_pair_lj_soft.html,
-"lj/mdf"_pair_mdf.html,
-"lj/sdk (gko)"_pair_sdk.html,
-"lj/sdk/coul/long (go)"_pair_sdk.html,
-"lj/sdk/coul/msm (o)"_pair_sdk.html,
-"mdpd"_pair_meso.html,
-"mdpd/rhosum"_pair_meso.html,
-"meam/c"_pair_meam.html,
-"meam/spline (o)"_pair_meam_spline.html,
-"meam/sw/spline"_pair_meam_sw_spline.html,
-"mgpt"_pair_mgpt.html,
-"momb"_pair_momb.html,
-"morse/smooth/linear"_pair_morse.html,
-"morse/soft"_pair_morse.html,
-"multi/lucy"_pair_multi_lucy.html,
-"multi/lucy/rx (k)"_pair_multi_lucy_rx.html,
-"oxdna/coaxstk"_pair_oxdna.html,
-"oxdna/excv"_pair_oxdna.html,
-"oxdna/hbond"_pair_oxdna.html,
-"oxdna/stk"_pair_oxdna.html,
-"oxdna/xstk"_pair_oxdna.html,
-"oxdna2/coaxstk"_pair_oxdna2.html,
-"oxdna2/dh"_pair_oxdna2.html,
-"oxdna2/excv"_pair_oxdna2.html,
-"oxdna2/stk"_pair_oxdna2.html,
-"quip"_pair_quip.html,
-"reax/c (ko)"_pair_reaxc.html,
-"smd/hertz"_pair_smd_hertz.html,
-"smd/tlsph"_pair_smd_tlsph.html,
-"smd/triangulated/surface"_pair_smd_triangulated_surface.html,
-"smd/ulsph"_pair_smd_ulsph.html,
-"smtbq"_pair_smtbq.html,
-"snap (k)"_pair_snap.html,
-"sph/heatconduction"_pair_sph_heatconduction.html,
-"sph/idealgas"_pair_sph_idealgas.html,
-"sph/lj"_pair_sph_lj.html,
-"sph/rhosum"_pair_sph_rhosum.html,
-"sph/taitwater"_pair_sph_taitwater.html,
-"sph/taitwater/morris"_pair_sph_taitwater_morris.html,
-"srp"_pair_srp.html,
-"table/rx (k)"_pair_table_rx.html,
-"tdpd"_pair_meso.html,
-"tersoff/table (o)"_pair_tersoff.html,
-"thole"_pair_thole.html,
-"tip4p/long/soft (o)"_pair_lj_soft.html :tb(c=4,ea=c)
-
-:line
-
-Bond_style potentials :h3
-
-See the "bond_style"_bond_style.html command for an overview of bond
-potentials.  Click on the style itself for a full description.  Some
-of the styles have accelerated versions, which can be used if LAMMPS
-is built with the "appropriate accelerated
-package"_Speed_packages.html.  This is indicated by additional letters
-in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
-OPT.
-
-"none"_bond_none.html,
-"zero"_bond_zero.html,
-"hybrid"_bond_hybrid.html,
-"class2 (ko)"_bond_class2.html,
-"fene (iko)"_bond_fene.html,
-"fene/expand (o)"_bond_fene_expand.html,
-"gromos (o)"_bond_gromos.html,
-"harmonic (ko)"_bond_harmonic.html,
-"morse (o)"_bond_morse.html,
-"nonlinear (o)"_bond_nonlinear.html,
-"quartic (o)"_bond_quartic.html,
-"table (o)"_bond_table.html :tb(c=4,ea=c)
-
-These are additional bond styles in USER packages, which can be used
-if "LAMMPS is built with the appropriate
-package"_Section_start.html#start_3.
-
-"harmonic/shift (o)"_bond_harmonic_shift.html,
-"harmonic/shift/cut (o)"_bond_harmonic_shift_cut.html,
-"oxdna/fene"_bond_oxdna.html,
-"oxdna2/fene"_bond_oxdna.html :tb(c=4,ea=c)
-
-:line
-
-Angle_style potentials :h3
-
-See the "angle_style"_angle_style.html command for an overview of
-angle potentials.  Click on the style itself for a full description.
-Some of the styles have accelerated versions, which can be used if
-LAMMPS is built with the "appropriate accelerated
-package"_Speed_packages.html.  This is indicated by additional letters
-in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
-OPT.
-
-"none"_angle_none.html,
-"zero"_angle_zero.html,
-"hybrid"_angle_hybrid.html,
-"charmm (ko)"_angle_charmm.html,
-"class2 (ko)"_angle_class2.html,
-"cosine (o)"_angle_cosine.html,
-"cosine/delta (o)"_angle_cosine_delta.html,
-"cosine/periodic (o)"_angle_cosine_periodic.html,
-"cosine/squared (o)"_angle_cosine_squared.html,
-"harmonic (iko)"_angle_harmonic.html,
-"table (o)"_angle_table.html :tb(c=4,ea=c)
-
-These are additional angle styles in USER packages, which can be used
-if "LAMMPS is built with the appropriate
-package"_Section_start.html#start_3.
-
-"cosine/shift (o)"_angle_cosine_shift.html,
-"cosine/shift/exp (o)"_angle_cosine_shift_exp.html,
-"dipole (o)"_angle_dipole.html,
-"fourier (o)"_angle_fourier.html,
-"fourier/simple (o)"_angle_fourier_simple.html,
-"quartic (o)"_angle_quartic.html,
-"sdk"_angle_sdk.html :tb(c=4,ea=c)
-
-:line
-
-Dihedral_style potentials :h3
-
-See the "dihedral_style"_dihedral_style.html command for an overview
-of dihedral potentials.  Click on the style itself for a full
-description.  Some of the styles have accelerated versions, which can
-be used if LAMMPS is built with the "appropriate accelerated
-package"_Speed_packages.html.  This is indicated by additional
-letters in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o =
-USER-OMP, t = OPT.
-
-"none"_dihedral_none.html,
-"zero"_dihedral_zero.html,
-"hybrid"_dihedral_hybrid.html,
-"charmm (iko)"_dihedral_charmm.html,
-"charmmfsw"_dihedral_charmm.html,
-"class2 (ko)"_dihedral_class2.html,
-"harmonic (io)"_dihedral_harmonic.html,
-"helix (o)"_dihedral_helix.html,
-"multi/harmonic (o)"_dihedral_multi_harmonic.html,
-"opls (iko)"_dihedral_opls.html :tb(c=4,ea=c)
-
-These are additional dihedral styles in USER packages, which can be
-used if "LAMMPS is built with the appropriate
-package"_Section_start.html#start_3.
-
-"cosine/shift/exp (o)"_dihedral_cosine_shift_exp.html,
-"fourier (io)"_dihedral_fourier.html,
-"nharmonic (o)"_dihedral_nharmonic.html,
-"quadratic (o)"_dihedral_quadratic.html,
-"spherical (o)"_dihedral_spherical.html,
-"table (o)"_dihedral_table.html,
-"table/cut"_dihedral_table_cut.html :tb(c=4,ea=c)
-
-:line
-
-Improper_style potentials :h3
-
-See the "improper_style"_improper_style.html command for an overview
-of improper potentials.  Click on the style itself for a full
-description.  Some of the styles have accelerated versions, which can
-be used if LAMMPS is built with the "appropriate accelerated
-package"_Speed_packages.html.  This is indicated by additional letters
-in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
-OPT.
-
-"none"_improper_none.html,
-"zero"_improper_zero.html,
-"hybrid"_improper_hybrid.html,
-"class2 (ko)"_improper_class2.html,
-"cvff (io)"_improper_cvff.html,
-"harmonic (iko)"_improper_harmonic.html,
-"umbrella (o)"_improper_umbrella.html :tb(c=4,ea=c)
-
-These are additional improper styles in USER packages, which can be
-used if "LAMMPS is built with the appropriate
-package"_Section_start.html#start_3.
-
-"cossq (o)"_improper_cossq.html,
-"distance"_improper_distance.html,
-"fourier (o)"_improper_fourier.html,
-"ring (o)"_improper_ring.html :tb(c=4,ea=c)
-
-:line
-
-Kspace solvers :h3
-
-See the "kspace_style"_kspace_style.html command for an overview of
-Kspace solvers.  Click on the style itself for a full description.
-Some of the styles have accelerated versions, which can be used if
-LAMMPS is built with the "appropriate accelerated
-package"_Speed_packages.html.  This is indicated by additional letters
-in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t =
-OPT.
-
-"ewald (o)"_kspace_style.html,
-"ewald/disp"_kspace_style.html,
-"msm (o)"_kspace_style.html,
-"msm/cg (o)"_kspace_style.html,
-"pppm (gok)"_kspace_style.html,
-"pppm/cg (o)"_kspace_style.html,
-"pppm/disp (i)"_kspace_style.html,
-"pppm/disp/tip4p"_kspace_style.html,
-"pppm/stagger"_kspace_style.html,
-"pppm/tip4p (o)"_kspace_style.html :tb(c=4,ea=c)
diff --git a/doc/src/Section_start.txt b/doc/src/Section_start.txt
index 4176432328..19a798d5df 100644
--- a/doc/src/Section_start.txt
+++ b/doc/src/Section_start.txt
@@ -1,10 +1,10 @@
 "Previous Section"_Intro.html - "LAMMPS WWW Site"_lws -
 "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Section_commands.html :c
+Section"_Commands.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -1070,7 +1070,7 @@ the '-in' command-line switch, e.g.
 
 lmp_linux -in in.file :pre
 
-"This section"_Section_commands.html describes how input scripts are
+The "Commands"_Commands.html doc page describes how input scripts are
 structured and what commands they contain.
 
 You can test LAMMPS on any of the sample inputs provided in the
@@ -1615,9 +1615,9 @@ value2 ..."  at the beginning of the input script.  Defining an index
 variable as a command-line argument overrides any setting for the same
 index variable in the input script, since index variables cannot be
 re-defined.  See the "variable"_variable.html command for more info on
-defining index and other kinds of variables and "this
-section"_Section_commands.html#cmd_2 for more info on using variables
-in input scripts.
+defining index and other kinds of variables and the "Commands
+parse"_Commands_parse.html page for more info on using variables in
+input scripts.
 
 NOTE: Currently, the command-line parser looks for arguments that
 start with "-" to indicate new switches.  Thus you cannot specify
diff --git a/doc/src/Speed.txt b/doc/src/Speed.txt
index 6c53d6bcf0..091657082a 100644
--- a/doc/src/Speed.txt
+++ b/doc/src/Speed.txt
@@ -4,7 +4,7 @@ Section"_Howto.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Speed_bench.txt b/doc/src/Speed_bench.txt
index dc76588c11..8e407d14ea 100644
--- a/doc/src/Speed_bench.txt
+++ b/doc/src/Speed_bench.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Speed_compare.txt b/doc/src/Speed_compare.txt
index 6c947b9662..1a17b39c79 100644
--- a/doc/src/Speed_compare.txt
+++ b/doc/src/Speed_compare.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Speed_gpu.txt b/doc/src/Speed_gpu.txt
index d6ebbf8069..ab8ec7e9d1 100644
--- a/doc/src/Speed_gpu.txt
+++ b/doc/src/Speed_gpu.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Speed_intel.txt b/doc/src/Speed_intel.txt
index 08e3fbc4cc..20f49672e0 100644
--- a/doc/src/Speed_intel.txt
+++ b/doc/src/Speed_intel.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Speed_kokkos.txt b/doc/src/Speed_kokkos.txt
index 8e01db7bdc..14f4103aed 100644
--- a/doc/src/Speed_kokkos.txt
+++ b/doc/src/Speed_kokkos.txt
@@ -3,34 +3,39 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
 KOKKOS package :h3
 
 Kokkos is a templated C++ library that provides abstractions to allow
-a single implementation of an application kernel (e.g. a pair style) to run efficiently on
-different kinds of hardware, such as GPUs, Intel Xeon Phis, or many-core
-CPUs. Kokkos maps the C++ kernel onto different backend languages such as CUDA, OpenMP, or Pthreads.
-The Kokkos library also provides data abstractions to adjust (at
-compile time) the memory layout of data structures like 2d and
-3d arrays to optimize performance on different hardware. For more information on Kokkos, see
-"Github"_https://github.com/kokkos/kokkos. Kokkos is part of
-"Trilinos"_http://trilinos.sandia.gov/packages/kokkos. The Kokkos library was written primarily by Carter Edwards,
-Christian Trott, and Dan Sunderland (all Sandia).
-
-The LAMMPS KOKKOS package contains versions of pair, fix, and atom styles
-that use data structures and macros provided by the Kokkos library,
-which is included with LAMMPS in /lib/kokkos. The KOKKOS package was developed primarily by Christian Trott (Sandia)
-and Stan Moore (Sandia) with contributions of various styles by others, including Sikandar
-Mashayak (UIUC), Ray Shan (Sandia), and Dan Ibanez (Sandia). For more information on developing using Kokkos abstractions
+a single implementation of an application kernel (e.g. a pair style)
+to run efficiently on different kinds of hardware, such as GPUs, Intel
+Xeon Phis, or many-core CPUs. Kokkos maps the C++ kernel onto
+different backend languages such as CUDA, OpenMP, or Pthreads.  The
+Kokkos library also provides data abstractions to adjust (at compile
+time) the memory layout of data structures like 2d and 3d arrays to
+optimize performance on different hardware. For more information on
+Kokkos, see "Github"_https://github.com/kokkos/kokkos. Kokkos is part
+of "Trilinos"_http://trilinos.sandia.gov/packages/kokkos. The Kokkos
+library was written primarily by Carter Edwards, Christian Trott, and
+Dan Sunderland (all Sandia).
+
+The LAMMPS KOKKOS package contains versions of pair, fix, and atom
+styles that use data structures and macros provided by the Kokkos
+library, which is included with LAMMPS in /lib/kokkos. The KOKKOS
+package was developed primarily by Christian Trott (Sandia) and Stan
+Moore (Sandia) with contributions of various styles by others,
+including Sikandar Mashayak (UIUC), Ray Shan (Sandia), and Dan Ibanez
+(Sandia). For more information on developing using Kokkos abstractions
 see the Kokkos programmers' guide at /lib/kokkos/doc/Kokkos_PG.pdf.
 
 Kokkos currently provides support for 3 modes of execution (per MPI
-task). These are Serial (MPI-only for CPUs and Intel Phi), OpenMP (threading
-for many-core CPUs and Intel Phi), and CUDA (for NVIDIA GPUs). You choose the mode at build time to
-produce an executable compatible with specific hardware.
+task). These are Serial (MPI-only for CPUs and Intel Phi), OpenMP
+(threading for many-core CPUs and Intel Phi), and CUDA (for NVIDIA
+GPUs). You choose the mode at build time to produce an executable
+compatible with specific hardware.
 
 [Building LAMMPS with the KOKKOS package:]
 
@@ -38,16 +43,18 @@ NOTE: Kokkos support within LAMMPS must be built with a C++11 compatible
 compiler. This means GCC version 4.7.2 or later, Intel 14.0.4 or later, or
 Clang 3.5.2 or later is required.
 
-The recommended method of building the KOKKOS package is to start with the provided Kokkos
-Makefiles in /src/MAKE/OPTIONS/. You may need to modify the KOKKOS_ARCH variable in the Makefile
-to match your specific hardware. For example:
+The recommended method of building the KOKKOS package is to start with
+the provided Kokkos Makefiles in /src/MAKE/OPTIONS/. You may need to
+modify the KOKKOS_ARCH variable in the Makefile to match your specific
+hardware. For example:
 
 for Sandy Bridge CPUs, set KOKKOS_ARCH=SNB
 for Broadwell CPUs, set KOKKOS_ARCH=BWD
 for K80 GPUs, set KOKKOS_ARCH=Kepler37
 for P100 GPUs and Power8 CPUs, set KOKKOS_ARCH=Pascal60,Power8 :ul
 
-See the [Advanced Kokkos Options] section below for a listing of all KOKKOS_ARCH options.
+See the [Advanced Kokkos Options] section below for a listing of all
+KOKKOS_ARCH options.
 
 [Compile for CPU-only (MPI only, no threading):]
 
@@ -61,11 +68,12 @@ make kokkos_mpi_only :pre
 
 [Compile for CPU-only (MPI plus OpenMP threading):]
 
-NOTE: To build with Kokkos support for OpenMP threading, your compiler must support the
-OpenMP interface. You should have one or more multi-core CPUs so that
-multiple threads can be launched by each MPI task running on a CPU.
+NOTE: To build with Kokkos support for OpenMP threading, your compiler
+must support the OpenMP interface. You should have one or more
+multi-core CPUs so that multiple threads can be launched by each MPI
+task running on a CPU.
 
-use a C++11 compatible compiler and set KOKKOS_ARCH variable in
+Use a C++11 compatible compiler and set KOKKOS_ARCH variable in
 /src/MAKE/OPTIONS/Makefile.kokkos_omp as described above.  Then do the
 following:
 
@@ -88,9 +96,9 @@ software version 7.5 or later must be installed on your system. See
 the discussion for the "GPU package"_Speed_gpu.html for details of how
 to check and do this.
 
-use a C++11 compatible compiler and set KOKKOS_ARCH variable in
-/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi for both GPU and CPU as described
-above.  Then do the following:
+Use a C++11 compatible compiler and set KOKKOS_ARCH variable in
+/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi for both GPU and CPU as
+described above.  Then do the following:
 
 cd lammps/src
 make yes-kokkos
@@ -104,24 +112,24 @@ on the make command line. For example:
 make mpi KOKKOS_DEVICES=OpenMP KOKKOS_ARCH=SNB     # set the KOKKOS_DEVICES and KOKKOS_ARCH variable explicitly
 make kokkos_cuda_mpi KOKKOS_ARCH=Pascal60,Power8   # set the KOKKOS_ARCH variable explicitly :pre
 
-Setting the KOKKOS_DEVICES and KOKKOS_ARCH variables on the
-make command line requires a GNU-compatible make command. Try
-"gmake" if your system's standard make complains.
+Setting the KOKKOS_DEVICES and KOKKOS_ARCH variables on the make
+command line requires a GNU-compatible make command. Try "gmake" if
+your system's standard make complains.
 
 NOTE: If you build using make line variables and re-build LAMMPS twice
-with different KOKKOS options and the *same* target, then you *must* perform a "make clean-all"
-or "make clean-machine" before each build. This is to force all the
-KOKKOS-dependent files to be re-compiled with the new options.
+with different KOKKOS options and the *same* target, then you *must*
+perform a "make clean-all" or "make clean-machine" before each
+build. This is to force all the KOKKOS-dependent files to be
+re-compiled with the new options.
 
 [Running LAMMPS with the KOKKOS package:]
 
-All Kokkos operations occur within the
-context of an individual MPI task running on a single node of the
-machine. The total number of MPI tasks used by LAMMPS (one or
-multiple per compute node) is set in the usual manner via the mpirun
-or mpiexec commands, and is independent of Kokkos. E.g. the mpirun
-command in OpenMPI does this via its
--np and -npernode switches. Ditto for MPICH via -np and -ppn.
+All Kokkos operations occur within the context of an individual MPI
+task running on a single node of the machine. The total number of MPI
+tasks used by LAMMPS (one or multiple per compute node) is set in the
+usual manner via the mpirun or mpiexec commands, and is independent of
+Kokkos. E.g. the mpirun command in OpenMPI does this via its -np and
+-npernode switches. Ditto for MPICH via -np and -ppn.
 
 [Running on a multi-core CPU:]
 
@@ -133,8 +141,9 @@ mpirun -np 2 -ppn 1 lmp_kokkos_omp -k on t 16 -sf kk -in in.lj  # 2 nodes, 1 MPI
 mpirun -np 2 lmp_kokkos_omp -k on t 8 -sf kk -in in.lj          # 1 node,  2 MPI tasks/node, 8 threads/task
 mpirun -np 32 -ppn 4 lmp_kokkos_omp -k on t 4 -sf kk -in in.lj  # 8 nodes, 4 MPI tasks/node, 4 threads/task :pre
 
-To run using the KOKKOS package, use the "-k on", "-sf kk" and "-pk kokkos" "command-line switches"_Section_start.html#start_7 in your mpirun command.
-You must use the "-k on" "command-line
+To run using the KOKKOS package, use the "-k on", "-sf kk" and "-pk
+kokkos" "command-line switches"_Section_start.html#start_7 in your
+mpirun command.  You must use the "-k on" "command-line
 switch"_Section_start.html#start_7 to enable the KOKKOS package. It
 takes additional arguments for hardware settings appropriate to your
 system. Those arguments are "documented
@@ -142,32 +151,33 @@ here"_Section_start.html#start_7. For OpenMP use:
 
 -k on t Nt :pre
 
-The "t Nt" option specifies how many OpenMP threads per MPI
-task to use with a node. The default is Nt = 1, which is MPI-only mode.
-Note that the product of MPI tasks * OpenMP
-threads/task should not exceed the physical number of cores (on a
-node), otherwise performance will suffer. If hyperthreading is enabled, then
-the product of MPI tasks * OpenMP threads/task should not exceed the
-physical number of cores * hardware threads.
-The "-k on" switch also issues a "package kokkos" command (with no
-additional arguments) which sets various KOKKOS options to default
-values, as discussed on the "package"_package.html command doc page.
-
-The "-sf kk" "command-line switch"_Section_start.html#start_7
-will automatically append the "/kk" suffix to styles that support it.
-In this manner no modification to the input script is needed. Alternatively,
-one can run with the KOKKOS package by editing the input script as described below.
-
-NOTE: The default for the "package kokkos"_package.html command is
-to use "full" neighbor lists and set the Newton flag to "off" for both
+The "t Nt" option specifies how many OpenMP threads per MPI task to
+use with a node. The default is Nt = 1, which is MPI-only mode.  Note
+that the product of MPI tasks * OpenMP threads/task should not exceed
+the physical number of cores (on a node), otherwise performance will
+suffer. If hyperthreading is enabled, then the product of MPI tasks *
+OpenMP threads/task should not exceed the physical number of cores *
+hardware threads.  The "-k on" switch also issues a "package kokkos"
+command (with no additional arguments) which sets various KOKKOS
+options to default values, as discussed on the "package"_package.html
+command doc page.
+
+The "-sf kk" "command-line switch"_Section_start.html#start_7 will
+automatically append the "/kk" suffix to styles that support it.  In
+this manner no modification to the input script is
+needed. Alternatively, one can run with the KOKKOS package by editing
+the input script as described below.
+
+NOTE: The default for the "package kokkos"_package.html command is to
+use "full" neighbor lists and set the Newton flag to "off" for both
 pairwise and bonded interactions. However, when running on CPUs, it
 will typically be faster to use "half" neighbor lists and set the
 Newton flag to "on", just as is the case for non-accelerated pair
-styles. It can also be faster to use non-threaded communication.
-Use the "-pk kokkos" "command-line switch"_Section_start.html#start_7 to
-change the default "package kokkos"_package.html
-options. See its doc page for details and default settings. Experimenting with
-its options can provide a speed-up for specific calculations. For example:
+styles. It can also be faster to use non-threaded communication.  Use
+the "-pk kokkos" "command-line switch"_Section_start.html#start_7 to
+change the default "package kokkos"_package.html options. See its doc
+page for details and default settings. Experimenting with its options
+can provide a speed-up for specific calculations. For example:
 
 mpirun -np 16 lmp_kokkos_mpi_only -k on -sf kk -pk kokkos newton on neigh half comm no -in in.lj       # Newton on, Half neighbor list, non-threaded comm :pre
 
@@ -176,9 +186,9 @@ script, it can also override the Newton flag defaults.
 
 [Core and Thread Affinity:]
 
-When using multi-threading, it is important for
-performance to bind both MPI tasks to physical cores, and threads to
-physical cores, so they do not migrate during a simulation.
+When using multi-threading, it is important for performance to bind
+both MPI tasks to physical cores, and threads to physical cores, so
+they do not migrate during a simulation.
 
 If you are not certain MPI tasks are being bound (check the defaults
 for your MPI installation), binding can be forced with these flags:
@@ -189,24 +199,24 @@ Mvapich2 2.0: mpiexec -np 2 --bind-to socket --map-by socket ./lmp_mvapich ... :
 For binding threads with KOKKOS OpenMP, use thread affinity
 environment variables to force binding. With OpenMP 3.1 (gcc 4.7 or
 later, intel 12 or later) setting the environment variable
-OMP_PROC_BIND=true should be sufficient. In general, for best performance
-with OpenMP 4.0 or better set OMP_PROC_BIND=spread and OMP_PLACES=threads.
-For binding threads with the
-KOKKOS pthreads option, compile LAMMPS the KOKKOS HWLOC=yes option
-as described below.
+OMP_PROC_BIND=true should be sufficient. In general, for best
+performance with OpenMP 4.0 or better set OMP_PROC_BIND=spread and
+OMP_PLACES=threads.  For binding threads with the KOKKOS pthreads
+option, compile LAMMPS the KOKKOS HWLOC=yes option as described below.
 
 [Running on Knight's Landing (KNL) Intel Xeon Phi:]
 
-Here is a quick overview of how to use the KOKKOS package
-for the Intel Knight's Landing (KNL) Xeon Phi:
+Here is a quick overview of how to use the KOKKOS package for the
+Intel Knight's Landing (KNL) Xeon Phi:
 
-KNL Intel Phi chips have 68 physical cores. Typically 1 to 4 cores
-are reserved for the OS, and only 64 or 66 cores are used. Each core
-has 4 hyperthreads,so there are effectively N = 256 (4*64) or
-N = 264 (4*66) cores to run on. The product of MPI tasks * OpenMP threads/task should not exceed this limit,
-otherwise performance will suffer. Note that with the KOKKOS package you do not need to
-specify how many KNLs there are per node; each
-KNL is simply treated as running some number of MPI tasks.
+KNL Intel Phi chips have 68 physical cores. Typically 1 to 4 cores are
+reserved for the OS, and only 64 or 66 cores are used. Each core has 4
+hyperthreads,so there are effectively N = 256 (4*64) or N = 264 (4*66)
+cores to run on. The product of MPI tasks * OpenMP threads/task should
+not exceed this limit, otherwise performance will suffer. Note that
+with the KOKKOS package you do not need to specify how many KNLs there
+are per node; each KNL is simply treated as running some number of MPI
+tasks.
 
 Examples of mpirun commands that follow these rules are shown below.
 
@@ -221,57 +231,60 @@ tasks/node. The "-k on t Nt" command-line switch sets the number of
 threads/task as Nt. The product of these two values should be N, i.e.
 256 or 264.
 
-NOTE: The default for the "package kokkos"_package.html command is
-to use "full" neighbor lists and set the Newton flag to "off" for both
-pairwise and bonded interactions. When running on KNL, this
-will typically be best for pair-wise potentials. For manybody potentials,
-using "half" neighbor lists and setting the
-Newton flag to "on" may be faster. It can also be faster to use non-threaded communication.
-Use the "-pk kokkos" "command-line switch"_Section_start.html#start_7 to
-change the default "package kokkos"_package.html
-options. See its doc page for details and default settings. Experimenting with
-its options can provide a speed-up for specific calculations. For example:
+NOTE: The default for the "package kokkos"_package.html command is to
+use "full" neighbor lists and set the Newton flag to "off" for both
+pairwise and bonded interactions. When running on KNL, this will
+typically be best for pair-wise potentials. For manybody potentials,
+using "half" neighbor lists and setting the Newton flag to "on" may be
+faster. It can also be faster to use non-threaded communication.  Use
+the "-pk kokkos" "command-line switch"_Section_start.html#start_7 to
+change the default "package kokkos"_package.html options. See its doc
+page for details and default settings. Experimenting with its options
+can provide a speed-up for specific calculations. For example:
 
 mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos comm no -in in.lj      #  Newton off, full neighbor list, non-threaded comm
 mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos newton on neigh half comm no -in in.reax      # Newton on, half neighbor list, non-threaded comm :pre
 
-NOTE: MPI tasks and threads should be bound to cores as described above for CPUs.
+NOTE: MPI tasks and threads should be bound to cores as described
+above for CPUs.
 
-NOTE: To build with Kokkos support for Intel Xeon Phi coprocessors such as Knight's Corner (KNC), your
-system must be configured to use them in "native" mode, not "offload"
-mode like the USER-INTEL package supports.
+NOTE: To build with Kokkos support for Intel Xeon Phi coprocessors
+such as Knight's Corner (KNC), your system must be configured to use
+them in "native" mode, not "offload" mode like the USER-INTEL package
+supports.
 
 [Running on GPUs:]
 
-Use the "-k" "command-line switch"_Section_commands.html#start_7 to
-specify the number of GPUs per node. Typically the -np setting
-of the mpirun command should set the number of MPI
-tasks/node to be equal to the # of physical GPUs on the node.
-You can assign multiple MPI tasks to the same GPU with the
-KOKKOS package, but this is usually only faster if significant portions
-of the input script have not been ported to use Kokkos. Using CUDA MPS
-is recommended in this scenario. As above for multi-core CPUs (and no GPU), if N is the number
-of physical cores/node, then the number of MPI tasks/node should not exceed N.
+Use the "-k" "command-line switch"_Section_start.html#start_7 to
+specify the number of GPUs per node. Typically the -np setting of the
+mpirun command should set the number of MPI tasks/node to be equal to
+the # of physical GPUs on the node.  You can assign multiple MPI tasks
+to the same GPU with the KOKKOS package, but this is usually only
+faster if significant portions of the input script have not been
+ported to use Kokkos. Using CUDA MPS is recommended in this
+scenario. As above for multi-core CPUs (and no GPU), if N is the
+number of physical cores/node, then the number of MPI tasks/node
+should not exceed N.
 
 -k on g Ng :pre
 
-Here are examples of how to use the KOKKOS package for GPUs,
-assuming one or more nodes, each with two GPUs:
+Here are examples of how to use the KOKKOS package for GPUs, assuming
+one or more nodes, each with two GPUs:
 
 mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj          # 1 node,   2 MPI tasks/node, 2 GPUs/node
 mpirun -np 32 -ppn 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj  # 16 nodes, 2 MPI tasks/node, 2 GPUs/node (32 GPUs total) :pre
 
-NOTE: The default for the "package kokkos"_package.html command is
-to use "full" neighbor lists and set the Newton flag to "off" for both
+NOTE: The default for the "package kokkos"_package.html command is to
+use "full" neighbor lists and set the Newton flag to "off" for both
 pairwise and bonded interactions, along with threaded communication.
-When running on Maxwell or Kepler GPUs, this will typically be best. For Pascal GPUs,
-using "half" neighbor lists and setting the
-Newton flag to "on" may be faster. For many pair styles, setting the neighbor binsize
-equal to the ghost atom cutoff will give speedup.
-Use the "-pk kokkos" "command-line switch"_Section_start.html#start_7 to
-change the default "package kokkos"_package.html
-options. See its doc page for details and default settings. Experimenting with
-its options can provide a speed-up for specific calculations. For example:
+When running on Maxwell or Kepler GPUs, this will typically be
+best. For Pascal GPUs, using "half" neighbor lists and setting the
+Newton flag to "on" may be faster. For many pair styles, setting the
+neighbor binsize equal to the ghost atom cutoff will give speedup.
+Use the "-pk kokkos" "command-line switch"_Section_start.html#start_7
+to change the default "package kokkos"_package.html options. See its
+doc page for details and default settings. Experimenting with its
+options can provide a speed-up for specific calculations. For example:
 
 mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos binsize 2.8 -in in.lj      # Set binsize = neighbor ghost cutoff
 mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos newton on neigh half binsize 2.8 -in in.lj      # Newton on, half neighborlist, set binsize = neighbor ghost cutoff :pre
@@ -299,8 +312,8 @@ Alternatively the effect of the "-sf" or "-pk" switches can be
 duplicated by adding the "package kokkos"_package.html or "suffix
 kk"_suffix.html commands to your input script.
 
-The discussion above for building LAMMPS with the KOKKOS package, the mpirun/mpiexec command, and setting
-appropriate thread are the same.
+The discussion above for building LAMMPS with the KOKKOS package, the
+mpirun/mpiexec command, and setting appropriate thread are the same.
 
 You must still use the "-k on" "command-line
 switch"_Section_start.html#start_7 to enable the KOKKOS package, and
@@ -318,17 +331,19 @@ wish to change any of its option defaults, as set by the "-k on"
 
 [Using OpenMP threading and CUDA together (experimental):]
 
-With the KOKKOS package, both OpenMP multi-threading and GPUs can be used
-together in a few special cases. In the Makefile, the KOKKOS_DEVICES variable must
-include both "Cuda" and "OpenMP", as is the case for /src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi
+With the KOKKOS package, both OpenMP multi-threading and GPUs can be
+used together in a few special cases. In the Makefile, the
+KOKKOS_DEVICES variable must include both "Cuda" and "OpenMP", as is
+the case for /src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi
 
 KOKKOS_DEVICES=Cuda,OpenMP :pre
 
 The suffix "/kk" is equivalent to "/kk/device", and for Kokkos CUDA,
-using the "-sf kk" in the command line gives the default CUDA version everywhere.
-However, if the "/kk/host" suffix is added to a specific style in the input
-script, the Kokkos OpenMP (CPU) version of that specific style will be used instead.
-Set the number of OpenMP threads as "t Nt" and the number of GPUs as "g Ng"
+using the "-sf kk" in the command line gives the default CUDA version
+everywhere.  However, if the "/kk/host" suffix is added to a specific
+style in the input script, the Kokkos OpenMP (CPU) version of that
+specific style will be used instead.  Set the number of OpenMP threads
+as "t Nt" and the number of GPUs as "g Ng"
 
 -k on t Nt g Ng :pre
 
@@ -336,18 +351,20 @@ For example, the command to run with 1 GPU and 8 OpenMP threads is then:
 
 mpiexec -np 1 lmp_kokkos_cuda_openmpi -in in.lj -k on g 1 t 8 -sf kk :pre
 
-Conversely, if the "-sf kk/host" is used in the command line and then the
-"/kk" or "/kk/device" suffix is added to a specific style in your input script,
-then only that specific style will run on the GPU while everything else will
-run on the CPU in OpenMP mode. Note that the execution of the CPU and GPU
-styles will NOT overlap, except for a special case:
-
-A kspace style and/or molecular topology (bonds, angles, etc.) running on
-the host CPU can overlap with a pair style running on the GPU. First compile
-with "--default-stream per-thread" added to CCFLAGS in the Kokkos CUDA Makefile.
-Then explicitly use the "/kk/host" suffix for kspace and bonds, angles, etc.
-in the input file and the "kk" suffix (equal to "kk/device") on the command line.
-Also make sure the environment variable CUDA_LAUNCH_BLOCKING is not set to "1"
+Conversely, if the "-sf kk/host" is used in the command line and then
+the "/kk" or "/kk/device" suffix is added to a specific style in your
+input script, then only that specific style will run on the GPU while
+everything else will run on the CPU in OpenMP mode. Note that the
+execution of the CPU and GPU styles will NOT overlap, except for a
+special case:
+
+A kspace style and/or molecular topology (bonds, angles, etc.) running
+on the host CPU can overlap with a pair style running on the
+GPU. First compile with "--default-stream per-thread" added to CCFLAGS
+in the Kokkos CUDA Makefile.  Then explicitly use the "/kk/host"
+suffix for kspace and bonds, angles, etc.  in the input file and the
+"kk" suffix (equal to "kk/device") on the command line.  Also make
+sure the environment variable CUDA_LAUNCH_BLOCKING is not set to "1"
 so CPU/GPU overlap can occur.
 
 [Speed-ups to expect:]
@@ -384,9 +401,8 @@ hardware.
 There are other allowed options when building with the KOKKOS package.
 As above, they can be set either as variables on the make command line
 or in Makefile.machine. This is the full list of options, including
-those discussed above. Each takes a value shown below. The
-default value is listed, which is set in the
-/lib/kokkos/Makefile.kokkos file.
+those discussed above. Each takes a value shown below. The default
+value is listed, which is set in the /lib/kokkos/Makefile.kokkos file.
 
 KOKKOS_DEVICES, values = {Serial}, {OpenMP}, {Pthreads}, {Cuda}, default = {OpenMP}
 KOKKOS_ARCH, values = {KNC}, {SNB}, {HSW}, {Kepler30}, {Kepler32}, {Kepler35}, {Kepler37}, {Maxwell50}, {Maxwell52}, {Maxwell53}, {Pascal60}, {Pascal61}, {ARMv80}, {ARMv81}, {ARMv81}, {ARMv8-ThunderX}, {BGQ}, {Power7}, {Power8}, {Power9}, {KNL}, {BDW}, {SKX}, default = {none}
@@ -444,13 +460,14 @@ within LAMMPS. KOKKOS_DEBUG=yes enables printing of run-time
 debugging information that can be useful. It also enables runtime
 bounds checking on Kokkos data structures.
 
-KOKKOS_CXX_STANDARD and KOKKOS_OPTIONS are typically not changed when building LAMMPS.
+KOKKOS_CXX_STANDARD and KOKKOS_OPTIONS are typically not changed when
+building LAMMPS.
 
-KOKKOS_CUDA_OPTIONS are additional options for CUDA. The LAMMPS KOKKOS package must be compiled
-with the {enable_lambda} option when using GPUs.
+KOKKOS_CUDA_OPTIONS are additional options for CUDA. The LAMMPS KOKKOS
+package must be compiled with the {enable_lambda} option when using
+GPUs.
 
 [Restrictions:]
 
-Currently, there are no precision options with the KOKKOS
-package. All compilation and computation is performed in double
-precision.
+Currently, there are no precision options with the KOKKOS package. All
+compilation and computation is performed in double precision.
diff --git a/doc/src/Speed_measure.txt b/doc/src/Speed_measure.txt
index 03c0345c20..78dc220088 100644
--- a/doc/src/Speed_measure.txt
+++ b/doc/src/Speed_measure.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Speed_omp.txt b/doc/src/Speed_omp.txt
index 9685b6d349..bcfc406902 100644
--- a/doc/src/Speed_omp.txt
+++ b/doc/src/Speed_omp.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Speed_opt.txt b/doc/src/Speed_opt.txt
index 7d0d7169f0..676a5d8418 100644
--- a/doc/src/Speed_opt.txt
+++ b/doc/src/Speed_opt.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Speed_packages.txt b/doc/src/Speed_packages.txt
index 13b5e183db..f463ed91b8 100644
--- a/doc/src/Speed_packages.txt
+++ b/doc/src/Speed_packages.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -71,11 +71,12 @@ Lennard-Jones "pair_style lj/cut"_pair_lj.html:
 "pair_style lj/cut/omp"_pair_lj.html
 "pair_style lj/cut/opt"_pair_lj.html :ul
 
-To see what accelerate styles are currently available, see
-"Section 3.5"_Section_commands.html#cmd_5 of the manual.  The
-doc pages for individual commands (e.g. "pair lj/cut"_pair_lj.html or
-"fix nve"_fix_nve.html) also list any accelerated variants available
-for that style.
+To see what accelerate styles are currently available for a particular
+style, find the style name in the "Commands_all"_Commands_all.html
+style pages (fix,compute,pair,etc) and see what suffixes are listed
+(g,i,k,o,t) with it.  The doc pages for individual commands
+(e.g. "pair lj/cut"_pair_lj.html or "fix nve"_fix_nve.html) also list
+any accelerated variants available for that style.
 
 To use an accelerator package in LAMMPS, and one or more of the styles
 it provides, follow these general steps.  Details vary from package to
diff --git a/doc/src/Speed_tips.txt b/doc/src/Speed_tips.txt
index c0d360cd8e..7c950779d5 100644
--- a/doc/src/Speed_tips.txt
+++ b/doc/src/Speed_tips.txt
@@ -3,7 +3,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/Tools.txt b/doc/src/Tools.txt
index bf0f9ae134..85ee531cfd 100644
--- a/doc/src/Tools.txt
+++ b/doc/src/Tools.txt
@@ -4,7 +4,7 @@ Section"_Modify.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_charmm.txt b/doc/src/angle_charmm.txt
index fe109d24fb..f72f086234 100644
--- a/doc/src/angle_charmm.txt
+++ b/doc/src/angle_charmm.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_class2.txt b/doc/src/angle_class2.txt
index c13a64afb6..3e5445d3a3 100644
--- a/doc/src/angle_class2.txt
+++ b/doc/src/angle_class2.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_coeff.txt b/doc/src/angle_coeff.txt
index 37298ba145..4c217bae7d 100644
--- a/doc/src/angle_coeff.txt
+++ b/doc/src/angle_coeff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -65,9 +65,9 @@ the style to display the formula it computes and coefficients
 specified by the associated "angle_coeff"_angle_coeff.html command.
 
 Note that there are also additional angle styles submitted by users
-which are included in the LAMMPS distribution.  The list of these with
-links to the individual styles are given in the angle section of "this
-page"_Section_commands.html#cmd_5.
+which are included in the LAMMPS distribution.  The full list of all
+angle styles is on the "Commands bond"_Commands_bond.html#angle doc
+page.
 
 "angle_style none"_angle_none.html - turn off angle interactions
 "angle_style hybrid"_angle_hybrid.html - define multiple styles of angle interactions :ul
diff --git a/doc/src/angle_cosine.txt b/doc/src/angle_cosine.txt
index 99264b02a6..5a1fe91c83 100644
--- a/doc/src/angle_cosine.txt
+++ b/doc/src/angle_cosine.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_cosine_buck6d.txt b/doc/src/angle_cosine_buck6d.txt
index 7182ffecc8..63a451b763 100644
--- a/doc/src/angle_cosine_buck6d.txt
+++ b/doc/src/angle_cosine_buck6d.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_cosine_delta.txt b/doc/src/angle_cosine_delta.txt
index 052300412f..b6ac0ed818 100644
--- a/doc/src/angle_cosine_delta.txt
+++ b/doc/src/angle_cosine_delta.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_cosine_periodic.txt b/doc/src/angle_cosine_periodic.txt
index 108b081533..c5b184e0b4 100644
--- a/doc/src/angle_cosine_periodic.txt
+++ b/doc/src/angle_cosine_periodic.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_cosine_shift.txt b/doc/src/angle_cosine_shift.txt
index 185b9f5309..90ac61fe23 100644
--- a/doc/src/angle_cosine_shift.txt
+++ b/doc/src/angle_cosine_shift.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_cosine_shift_exp.txt b/doc/src/angle_cosine_shift_exp.txt
index e5c7fdd709..f1c4c93c42 100644
--- a/doc/src/angle_cosine_shift_exp.txt
+++ b/doc/src/angle_cosine_shift_exp.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_cosine_squared.txt b/doc/src/angle_cosine_squared.txt
index e85c514d1e..ba5fd9d413 100644
--- a/doc/src/angle_cosine_squared.txt
+++ b/doc/src/angle_cosine_squared.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_dipole.txt b/doc/src/angle_dipole.txt
index 31ae2e9464..c001d9d920 100644
--- a/doc/src/angle_dipole.txt
+++ b/doc/src/angle_dipole.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_fourier.txt b/doc/src/angle_fourier.txt
index 18eb56b478..e0e32c1eed 100644
--- a/doc/src/angle_fourier.txt
+++ b/doc/src/angle_fourier.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_fourier_simple.txt b/doc/src/angle_fourier_simple.txt
index 6faff5f10d..3c50536a2c 100644
--- a/doc/src/angle_fourier_simple.txt
+++ b/doc/src/angle_fourier_simple.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_harmonic.txt b/doc/src/angle_harmonic.txt
index fe803be623..76c7a491e8 100644
--- a/doc/src/angle_harmonic.txt
+++ b/doc/src/angle_harmonic.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_hybrid.txt b/doc/src/angle_hybrid.txt
index bdd3707ccb..2646903421 100644
--- a/doc/src/angle_hybrid.txt
+++ b/doc/src/angle_hybrid.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_none.txt b/doc/src/angle_none.txt
index a4a9b07c78..1eca5cbbec 100644
--- a/doc/src/angle_none.txt
+++ b/doc/src/angle_none.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_quartic.txt b/doc/src/angle_quartic.txt
index a31214f435..294be330b1 100644
--- a/doc/src/angle_quartic.txt
+++ b/doc/src/angle_quartic.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_sdk.txt b/doc/src/angle_sdk.txt
index 0cc535e543..9c5630ef3a 100644
--- a/doc/src/angle_sdk.txt
+++ b/doc/src/angle_sdk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_style.txt b/doc/src/angle_style.txt
index f687e9286c..63295faf26 100644
--- a/doc/src/angle_style.txt
+++ b/doc/src/angle_style.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -58,9 +58,9 @@ the style to display the formula it computes and coefficients
 specified by the associated "angle_coeff"_angle_coeff.html command.
 
 Note that there are also additional angle styles submitted by users
-which are included in the LAMMPS distribution.  The list of these with
-links to the individual styles are given in the angle section of "this
-page"_Section_commands.html#cmd_5.
+which are included in the LAMMPS distribution.  The full list of all
+angle styles are is on the "Commands bond"_Commands_bond.html#angle
+doc page.
 
 "angle_style none"_angle_none.html - turn off angle interactions
 "angle_style zero"_angle_zero.html - topology but no interactions
diff --git a/doc/src/angle_table.txt b/doc/src/angle_table.txt
index 29b56875e7..31ab532be1 100644
--- a/doc/src/angle_table.txt
+++ b/doc/src/angle_table.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/angle_zero.txt b/doc/src/angle_zero.txt
index b8e8ebf953..c6c1958ec8 100644
--- a/doc/src/angle_zero.txt
+++ b/doc/src/angle_zero.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/atom_modify.txt b/doc/src/atom_modify.txt
index 1dc0fa6bfb..c882d1b0ba 100644
--- a/doc/src/atom_modify.txt
+++ b/doc/src/atom_modify.txt
@@ -3,7 +3,7 @@ Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/atom_style.txt b/doc/src/atom_style.txt
index 063f9e446c..abf05885a3 100644
--- a/doc/src/atom_style.txt
+++ b/doc/src/atom_style.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/balance.txt b/doc/src/balance.txt
index da6f59900d..06c4eca491 100644
--- a/doc/src/balance.txt
+++ b/doc/src/balance.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/body.txt b/doc/src/body.txt
index 96aedccf40..4de5b52911 100644
--- a/doc/src/body.txt
+++ b/doc/src/body.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_class2.txt b/doc/src/bond_class2.txt
index 049482c973..3d8d5007ba 100644
--- a/doc/src/bond_class2.txt
+++ b/doc/src/bond_class2.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_coeff.txt b/doc/src/bond_coeff.txt
index d93c0b223b..7485fa3d8d 100644
--- a/doc/src/bond_coeff.txt
+++ b/doc/src/bond_coeff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -61,9 +61,8 @@ the style to display the formula it computes and coefficients
 specified by the associated "bond_coeff"_bond_coeff.html command.
 
 Note that here are also additional bond styles submitted by users
-which are included in the LAMMPS distribution.  The list of these with
-links to the individual styles are given in the bond section of "this
-page"_Section_commands.html#cmd_5.
+which are included in the LAMMPS distribution.  The full list of all
+bond styles is on the "Commands bond"_Commands_bond.html doc page.
 
 "bond_style none"_bond_none.html - turn off bonded interactions
 "bond_style hybrid"_bond_hybrid.html - define multiple styles of bond interactions :ul
diff --git a/doc/src/bond_fene.txt b/doc/src/bond_fene.txt
index be154a53b1..e16307a710 100644
--- a/doc/src/bond_fene.txt
+++ b/doc/src/bond_fene.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_fene_expand.txt b/doc/src/bond_fene_expand.txt
index 77ebd977c8..8edd325885 100644
--- a/doc/src/bond_fene_expand.txt
+++ b/doc/src/bond_fene_expand.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_gromos.txt b/doc/src/bond_gromos.txt
index 7a56cb3afa..275036a421 100644
--- a/doc/src/bond_gromos.txt
+++ b/doc/src/bond_gromos.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_harmonic.txt b/doc/src/bond_harmonic.txt
index 54e89fcc72..e4b2015fed 100644
--- a/doc/src/bond_harmonic.txt
+++ b/doc/src/bond_harmonic.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_harmonic_shift.txt b/doc/src/bond_harmonic_shift.txt
index 0213b5cc6f..b6dc18a5fd 100644
--- a/doc/src/bond_harmonic_shift.txt
+++ b/doc/src/bond_harmonic_shift.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_harmonic_shift_cut.txt b/doc/src/bond_harmonic_shift_cut.txt
index d907bf4a62..b3054437d8 100644
--- a/doc/src/bond_harmonic_shift_cut.txt
+++ b/doc/src/bond_harmonic_shift_cut.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_hybrid.txt b/doc/src/bond_hybrid.txt
index 400c3e0be4..140fb72378 100644
--- a/doc/src/bond_hybrid.txt
+++ b/doc/src/bond_hybrid.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_morse.txt b/doc/src/bond_morse.txt
index 66f2d08cab..9b64e8c5c1 100644
--- a/doc/src/bond_morse.txt
+++ b/doc/src/bond_morse.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_none.txt b/doc/src/bond_none.txt
index 8cb262a50f..cace1919e1 100644
--- a/doc/src/bond_none.txt
+++ b/doc/src/bond_none.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_nonlinear.txt b/doc/src/bond_nonlinear.txt
index e0aa5629b3..08109bc699 100644
--- a/doc/src/bond_nonlinear.txt
+++ b/doc/src/bond_nonlinear.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_oxdna.txt b/doc/src/bond_oxdna.txt
index 927fea6403..a0e14a123a 100644
--- a/doc/src/bond_oxdna.txt
+++ b/doc/src/bond_oxdna.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_quartic.txt b/doc/src/bond_quartic.txt
index 760a5d7f07..87a21eff02 100644
--- a/doc/src/bond_quartic.txt
+++ b/doc/src/bond_quartic.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_style.txt b/doc/src/bond_style.txt
index 3bd8afda19..41fa1cabb2 100644
--- a/doc/src/bond_style.txt
+++ b/doc/src/bond_style.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -66,9 +66,8 @@ the style to display the formula it computes and coefficients
 specified by the associated "bond_coeff"_bond_coeff.html command.
 
 Note that there are also additional bond styles submitted by users
-which are included in the LAMMPS distribution.  The list of these with
-links to the individual styles are given in the bond section of "this
-page"_Section_commands.html#cmd_5.
+which are included in the LAMMPS distribution.  The full list of all
+bond styles is on the "Commands bond"_Commands_bond.html doc page.
 
 "bond_style none"_bond_none.html - turn off bonded interactions
 "bond_style zero"_bond_zero.html - topology but no interactions
diff --git a/doc/src/bond_table.txt b/doc/src/bond_table.txt
index fe0b3ce22b..e53cbdfa9f 100644
--- a/doc/src/bond_table.txt
+++ b/doc/src/bond_table.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_write.txt b/doc/src/bond_write.txt
index 4797d06cb1..711bd2c296 100644
--- a/doc/src/bond_write.txt
+++ b/doc/src/bond_write.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/bond_zero.txt b/doc/src/bond_zero.txt
index b599f291b4..554f26e7f0 100644
--- a/doc/src/bond_zero.txt
+++ b/doc/src/bond_zero.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/boundary.txt b/doc/src/boundary.txt
index 7ee897ffa4..f9685433b2 100644
--- a/doc/src/boundary.txt
+++ b/doc/src/boundary.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/box.txt b/doc/src/box.txt
index 6dc093ad81..38c874fb78 100644
--- a/doc/src/box.txt
+++ b/doc/src/box.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/change_box.txt b/doc/src/change_box.txt
index 8f3fda263f..adc5d6bdcb 100644
--- a/doc/src/change_box.txt
+++ b/doc/src/change_box.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/clear.txt b/doc/src/clear.txt
index 7ac4da5c8d..c4ad4c4030 100644
--- a/doc/src/clear.txt
+++ b/doc/src/clear.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/comm_modify.txt b/doc/src/comm_modify.txt
index 3e8d0eca4f..489278523b 100644
--- a/doc/src/comm_modify.txt
+++ b/doc/src/comm_modify.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/comm_style.txt b/doc/src/comm_style.txt
index 8248d654d3..39eb1d4ef5 100644
--- a/doc/src/comm_style.txt
+++ b/doc/src/comm_style.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute.txt b/doc/src/compute.txt
index 105571b82a..7d9e443e7d 100644
--- a/doc/src/compute.txt
+++ b/doc/src/compute.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -161,13 +161,19 @@ calculations accessed in the various ways described above.
 
 Each compute style has its own doc page which describes its arguments
 and what it does.  Here is an alphabetic list of compute styles
-available in LAMMPS.  They are also given in more compact form in the
-Compute section of "this page"_Section_commands.html#cmd_5.
+available in LAMMPS.  They are also listed in more compact form on the
+"Commands compute"_Commands_compute.html doc page.
 
 There are also additional compute styles (not listed here) submitted
-by users which are included in the LAMMPS distribution.  The list of
-these with links to the individual styles are given in the compute
-section of "this page"_Section_commands.html#cmd_5.
+by users which are included in the LAMMPS distribution.  The full list
+of all compute styles is on the "Commands
+compute"_Commands_compute.html doc page.
+
+There are also additional accelerated compute styles included in the
+LAMMPS distribution for faster performance on CPUs, GPUs, and KNLs.
+The individual style names on the "Commands
+compute"_Commands_compute.html doc page are followed by one or more of
+(g,i,k,o,t) to indicate which accerlerated styles exist.
 
 "aggregate/atom"_compute_cluster_atom.html - aggregate ID for each atom
 "angle/local"_compute_bond_local.html - theta and energy of each angle
@@ -243,16 +249,6 @@ section of "this page"_Section_commands.html#cmd_5.
 "vcm/chunk"_compute_vcm_chunk.html - velocity of center-of-mass for each chunk
 "voronoi/atom"_compute_voronoi_atom.html - Voronoi volume and neighbors for each atom :ul
 
-There are also additional compute styles submitted by users which are
-included in the LAMMPS distribution.  The list of these with links to
-the individual styles are given in the compute section of "this
-page"_Section_commands.html#cmd_5.
-
-There are also additional accelerated compute styles included in the
-LAMMPS distribution for faster performance on CPUs and GPUs.  The list
-of these with links to the individual styles are given in the pair
-section of "this page"_Section_commands.html#cmd_5.
-
 [Restrictions:] none
 
 [Related commands:]
diff --git a/doc/src/compute_ackland_atom.txt b/doc/src/compute_ackland_atom.txt
index e75ad534eb..485c191313 100644
--- a/doc/src/compute_ackland_atom.txt
+++ b/doc/src/compute_ackland_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_angle.txt b/doc/src/compute_angle.txt
index 1deb3a4b1b..64eb2f4bb1 100644
--- a/doc/src/compute_angle.txt
+++ b/doc/src/compute_angle.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_angle_local.txt b/doc/src/compute_angle_local.txt
index 487b41eaf3..3a321965ef 100644
--- a/doc/src/compute_angle_local.txt
+++ b/doc/src/compute_angle_local.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_angmom_chunk.txt b/doc/src/compute_angmom_chunk.txt
index c97af96f49..7e49ff3024 100644
--- a/doc/src/compute_angmom_chunk.txt
+++ b/doc/src/compute_angmom_chunk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_basal_atom.txt b/doc/src/compute_basal_atom.txt
index e0ac6b0a60..067a020c35 100644
--- a/doc/src/compute_basal_atom.txt
+++ b/doc/src/compute_basal_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_body_local.txt b/doc/src/compute_body_local.txt
index f387e61c78..8ac3f00c55 100644
--- a/doc/src/compute_body_local.txt
+++ b/doc/src/compute_body_local.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_bond.txt b/doc/src/compute_bond.txt
index ac0e50872b..a87c510538 100644
--- a/doc/src/compute_bond.txt
+++ b/doc/src/compute_bond.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_bond_local.txt b/doc/src/compute_bond_local.txt
index 868b43caa9..c3dc1cc4af 100644
--- a/doc/src/compute_bond_local.txt
+++ b/doc/src/compute_bond_local.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_centro_atom.txt b/doc/src/compute_centro_atom.txt
index bace0d8739..183537690f 100644
--- a/doc/src/compute_centro_atom.txt
+++ b/doc/src/compute_centro_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_chunk_atom.txt b/doc/src/compute_chunk_atom.txt
index fc0de28b6a..95e6e6c010 100644
--- a/doc/src/compute_chunk_atom.txt
+++ b/doc/src/compute_chunk_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_cluster_atom.txt b/doc/src/compute_cluster_atom.txt
index 12ecb8f173..e6138fe1e8 100644
--- a/doc/src/compute_cluster_atom.txt
+++ b/doc/src/compute_cluster_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_cna_atom.txt b/doc/src/compute_cna_atom.txt
index 9c4814560d..d69c5e9c46 100644
--- a/doc/src/compute_cna_atom.txt
+++ b/doc/src/compute_cna_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_cnp_atom.txt b/doc/src/compute_cnp_atom.txt
index aca7e351ec..44a77d23ca 100644
--- a/doc/src/compute_cnp_atom.txt
+++ b/doc/src/compute_cnp_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_com.txt b/doc/src/compute_com.txt
index 08bb08b142..fdc631a263 100644
--- a/doc/src/compute_com.txt
+++ b/doc/src/compute_com.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_com_chunk.txt b/doc/src/compute_com_chunk.txt
index f28355d6c5..b982f0d901 100644
--- a/doc/src/compute_com_chunk.txt
+++ b/doc/src/compute_com_chunk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_contact_atom.txt b/doc/src/compute_contact_atom.txt
index ea4158e3b1..efe524263a 100644
--- a/doc/src/compute_contact_atom.txt
+++ b/doc/src/compute_contact_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_coord_atom.txt b/doc/src/compute_coord_atom.txt
index 06b565aedc..66eecd195d 100644
--- a/doc/src/compute_coord_atom.txt
+++ b/doc/src/compute_coord_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_damage_atom.txt b/doc/src/compute_damage_atom.txt
index e262ee0b1f..74939e2280 100644
--- a/doc/src/compute_damage_atom.txt
+++ b/doc/src/compute_damage_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_dihedral.txt b/doc/src/compute_dihedral.txt
index 67c97b60f1..aa25f9dd10 100644
--- a/doc/src/compute_dihedral.txt
+++ b/doc/src/compute_dihedral.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_dihedral_local.txt b/doc/src/compute_dihedral_local.txt
index d2051a51bd..77812699d3 100644
--- a/doc/src/compute_dihedral_local.txt
+++ b/doc/src/compute_dihedral_local.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_dilatation_atom.txt b/doc/src/compute_dilatation_atom.txt
index 161e73c7ff..498110cf99 100644
--- a/doc/src/compute_dilatation_atom.txt
+++ b/doc/src/compute_dilatation_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_dipole_chunk.txt b/doc/src/compute_dipole_chunk.txt
index 5f8d6689c4..d45fde9af2 100644
--- a/doc/src/compute_dipole_chunk.txt
+++ b/doc/src/compute_dipole_chunk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_displace_atom.txt b/doc/src/compute_displace_atom.txt
index 5636cc02f0..669ab9f7ca 100644
--- a/doc/src/compute_displace_atom.txt
+++ b/doc/src/compute_displace_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_dpd.txt b/doc/src/compute_dpd.txt
index a5620d34b3..1721456e35 100644
--- a/doc/src/compute_dpd.txt
+++ b/doc/src/compute_dpd.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_dpd_atom.txt b/doc/src/compute_dpd_atom.txt
index ed0fd2410b..8e502d4a60 100644
--- a/doc/src/compute_dpd_atom.txt
+++ b/doc/src/compute_dpd_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_edpd_temp_atom.txt b/doc/src/compute_edpd_temp_atom.txt
index 9011c3c823..f33398e03d 100644
--- a/doc/src/compute_edpd_temp_atom.txt
+++ b/doc/src/compute_edpd_temp_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_entropy_atom.txt b/doc/src/compute_entropy_atom.txt
index 7fdc1f4af2..9c45fd2870 100644
--- a/doc/src/compute_entropy_atom.txt
+++ b/doc/src/compute_entropy_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_erotate_asphere.txt b/doc/src/compute_erotate_asphere.txt
index 24e6e5e6f7..5cdc099782 100644
--- a/doc/src/compute_erotate_asphere.txt
+++ b/doc/src/compute_erotate_asphere.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_erotate_rigid.txt b/doc/src/compute_erotate_rigid.txt
index c8527d7073..5b9077870e 100644
--- a/doc/src/compute_erotate_rigid.txt
+++ b/doc/src/compute_erotate_rigid.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_erotate_sphere.txt b/doc/src/compute_erotate_sphere.txt
index 8abc9a53ad..d0c176b50e 100644
--- a/doc/src/compute_erotate_sphere.txt
+++ b/doc/src/compute_erotate_sphere.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_erotate_sphere_atom.txt b/doc/src/compute_erotate_sphere_atom.txt
index 0bea315a89..fdd609a0e6 100644
--- a/doc/src/compute_erotate_sphere_atom.txt
+++ b/doc/src/compute_erotate_sphere_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_event_displace.txt b/doc/src/compute_event_displace.txt
index 17c4288911..561ded35c0 100644
--- a/doc/src/compute_event_displace.txt
+++ b/doc/src/compute_event_displace.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_fep.txt b/doc/src/compute_fep.txt
index f0ce3fd704..8b4a92e16e 100644
--- a/doc/src/compute_fep.txt
+++ b/doc/src/compute_fep.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_global_atom.txt b/doc/src/compute_global_atom.txt
index f40810b70c..a26dba72b0 100644
--- a/doc/src/compute_global_atom.txt
+++ b/doc/src/compute_global_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_group_group.txt b/doc/src/compute_group_group.txt
index 8f992791d2..cff3687354 100644
--- a/doc/src/compute_group_group.txt
+++ b/doc/src/compute_group_group.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_gyration.txt b/doc/src/compute_gyration.txt
index 3d698609ca..4dc883ad0b 100644
--- a/doc/src/compute_gyration.txt
+++ b/doc/src/compute_gyration.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_gyration_chunk.txt b/doc/src/compute_gyration_chunk.txt
index ef14a456f3..dcbfc65393 100644
--- a/doc/src/compute_gyration_chunk.txt
+++ b/doc/src/compute_gyration_chunk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_heat_flux.txt b/doc/src/compute_heat_flux.txt
index 84c4951328..81a2a3f517 100644
--- a/doc/src/compute_heat_flux.txt
+++ b/doc/src/compute_heat_flux.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_hexorder_atom.txt b/doc/src/compute_hexorder_atom.txt
index 1ab40b513c..082a3cad7a 100644
--- a/doc/src/compute_hexorder_atom.txt
+++ b/doc/src/compute_hexorder_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_improper.txt b/doc/src/compute_improper.txt
index 61c4f6cd29..867dd48cc1 100644
--- a/doc/src/compute_improper.txt
+++ b/doc/src/compute_improper.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_improper_local.txt b/doc/src/compute_improper_local.txt
index 2aec554d2f..f340d5a03f 100644
--- a/doc/src/compute_improper_local.txt
+++ b/doc/src/compute_improper_local.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_inertia_chunk.txt b/doc/src/compute_inertia_chunk.txt
index 3edd25d69b..d6cdb3fe79 100644
--- a/doc/src/compute_inertia_chunk.txt
+++ b/doc/src/compute_inertia_chunk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_ke.txt b/doc/src/compute_ke.txt
index d6f4e1b709..64ab83db48 100644
--- a/doc/src/compute_ke.txt
+++ b/doc/src/compute_ke.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_ke_atom.txt b/doc/src/compute_ke_atom.txt
index e0e96a80d8..d288ab0236 100644
--- a/doc/src/compute_ke_atom.txt
+++ b/doc/src/compute_ke_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_ke_atom_eff.txt b/doc/src/compute_ke_atom_eff.txt
index aa188a411b..f665f35055 100644
--- a/doc/src/compute_ke_atom_eff.txt
+++ b/doc/src/compute_ke_atom_eff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_ke_eff.txt b/doc/src/compute_ke_eff.txt
index 334b4121ed..d6d7fdb10f 100644
--- a/doc/src/compute_ke_eff.txt
+++ b/doc/src/compute_ke_eff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_ke_rigid.txt b/doc/src/compute_ke_rigid.txt
index 69cf4a598e..45ba2673b0 100644
--- a/doc/src/compute_ke_rigid.txt
+++ b/doc/src/compute_ke_rigid.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_meso_e_atom.txt b/doc/src/compute_meso_e_atom.txt
index 70a8969386..9a9c7fae11 100644
--- a/doc/src/compute_meso_e_atom.txt
+++ b/doc/src/compute_meso_e_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_meso_rho_atom.txt b/doc/src/compute_meso_rho_atom.txt
index 912587f4a2..30b1142b6c 100644
--- a/doc/src/compute_meso_rho_atom.txt
+++ b/doc/src/compute_meso_rho_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_meso_t_atom.txt b/doc/src/compute_meso_t_atom.txt
index c9db9bf50e..ab92f05018 100644
--- a/doc/src/compute_meso_t_atom.txt
+++ b/doc/src/compute_meso_t_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_modify.txt b/doc/src/compute_modify.txt
index 9a2480ec0a..192ea0bc9e 100644
--- a/doc/src/compute_modify.txt
+++ b/doc/src/compute_modify.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_msd.txt b/doc/src/compute_msd.txt
index 742f7ce113..b54e05bc64 100644
--- a/doc/src/compute_msd.txt
+++ b/doc/src/compute_msd.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_msd_chunk.txt b/doc/src/compute_msd_chunk.txt
index 3e1d8542ae..264f38d5fd 100644
--- a/doc/src/compute_msd_chunk.txt
+++ b/doc/src/compute_msd_chunk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_msd_nongauss.txt b/doc/src/compute_msd_nongauss.txt
index db8788db0b..814159121d 100644
--- a/doc/src/compute_msd_nongauss.txt
+++ b/doc/src/compute_msd_nongauss.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_omega_chunk.txt b/doc/src/compute_omega_chunk.txt
index 4a7a996d1d..84b25ac6f2 100644
--- a/doc/src/compute_omega_chunk.txt
+++ b/doc/src/compute_omega_chunk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_orientorder_atom.txt b/doc/src/compute_orientorder_atom.txt
index a8b4008012..7327a7b1d3 100644
--- a/doc/src/compute_orientorder_atom.txt
+++ b/doc/src/compute_orientorder_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_pair.txt b/doc/src/compute_pair.txt
index be40d7a550..a2c25fcc8d 100644
--- a/doc/src/compute_pair.txt
+++ b/doc/src/compute_pair.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_pair_local.txt b/doc/src/compute_pair_local.txt
index bbbc5823f2..7588e92527 100644
--- a/doc/src/compute_pair_local.txt
+++ b/doc/src/compute_pair_local.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_pe.txt b/doc/src/compute_pe.txt
index f3ce5678b0..37655dfd48 100644
--- a/doc/src/compute_pe.txt
+++ b/doc/src/compute_pe.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_pe_atom.txt b/doc/src/compute_pe_atom.txt
index e6bc5f9052..400621f8df 100644
--- a/doc/src/compute_pe_atom.txt
+++ b/doc/src/compute_pe_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_plasticity_atom.txt b/doc/src/compute_plasticity_atom.txt
index c992ca8200..50a51d9937 100644
--- a/doc/src/compute_plasticity_atom.txt
+++ b/doc/src/compute_plasticity_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_pressure.txt b/doc/src/compute_pressure.txt
index 51d3241ace..dea0a7f05b 100644
--- a/doc/src/compute_pressure.txt
+++ b/doc/src/compute_pressure.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_pressure_uef.txt b/doc/src/compute_pressure_uef.txt
index 5b252b369d..61cc85ad80 100644
--- a/doc/src/compute_pressure_uef.txt
+++ b/doc/src/compute_pressure_uef.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_property_atom.txt b/doc/src/compute_property_atom.txt
index 88bdf5a453..512009093c 100644
--- a/doc/src/compute_property_atom.txt
+++ b/doc/src/compute_property_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_property_chunk.txt b/doc/src/compute_property_chunk.txt
index ad131a8a60..a30b5a1f0a 100644
--- a/doc/src/compute_property_chunk.txt
+++ b/doc/src/compute_property_chunk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_property_local.txt b/doc/src/compute_property_local.txt
index 74595f00f6..b0ec088cf7 100644
--- a/doc/src/compute_property_local.txt
+++ b/doc/src/compute_property_local.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_rdf.txt b/doc/src/compute_rdf.txt
index c2d2c379fe..04b38682cc 100644
--- a/doc/src/compute_rdf.txt
+++ b/doc/src/compute_rdf.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_reduce.txt b/doc/src/compute_reduce.txt
index 614ef50581..ef3c7c6489 100644
--- a/doc/src/compute_reduce.txt
+++ b/doc/src/compute_reduce.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_rigid_local.txt b/doc/src/compute_rigid_local.txt
index 380713d091..b5e6954ab9 100644
--- a/doc/src/compute_rigid_local.txt
+++ b/doc/src/compute_rigid_local.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_saed.txt b/doc/src/compute_saed.txt
index 419ad3c489..8c17a30fca 100644
--- a/doc/src/compute_saed.txt
+++ b/doc/src/compute_saed.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_slice.txt b/doc/src/compute_slice.txt
index 69eb7976ad..51031aeab3 100644
--- a/doc/src/compute_slice.txt
+++ b/doc/src/compute_slice.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_contact_radius.txt b/doc/src/compute_smd_contact_radius.txt
index 5e043a1390..cd13816047 100644
--- a/doc/src/compute_smd_contact_radius.txt
+++ b/doc/src/compute_smd_contact_radius.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_damage.txt b/doc/src/compute_smd_damage.txt
index ea814ba064..afabe23d7c 100644
--- a/doc/src/compute_smd_damage.txt
+++ b/doc/src/compute_smd_damage.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_hourglass_error.txt b/doc/src/compute_smd_hourglass_error.txt
index 046f7e7f27..13fd20a589 100644
--- a/doc/src/compute_smd_hourglass_error.txt
+++ b/doc/src/compute_smd_hourglass_error.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_internal_energy.txt b/doc/src/compute_smd_internal_energy.txt
index b88bd8a1ce..6585c3429f 100644
--- a/doc/src/compute_smd_internal_energy.txt
+++ b/doc/src/compute_smd_internal_energy.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_plastic_strain.txt b/doc/src/compute_smd_plastic_strain.txt
index 7fd083726f..fb3c5c9138 100644
--- a/doc/src/compute_smd_plastic_strain.txt
+++ b/doc/src/compute_smd_plastic_strain.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_plastic_strain_rate.txt b/doc/src/compute_smd_plastic_strain_rate.txt
index b17684e05e..b913ae9097 100644
--- a/doc/src/compute_smd_plastic_strain_rate.txt
+++ b/doc/src/compute_smd_plastic_strain_rate.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_rho.txt b/doc/src/compute_smd_rho.txt
index 375513b9c7..a1ee1d9c5b 100644
--- a/doc/src/compute_smd_rho.txt
+++ b/doc/src/compute_smd_rho.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_tlsph_defgrad.txt b/doc/src/compute_smd_tlsph_defgrad.txt
index d07ff99f07..1663c84f65 100644
--- a/doc/src/compute_smd_tlsph_defgrad.txt
+++ b/doc/src/compute_smd_tlsph_defgrad.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_tlsph_dt.txt b/doc/src/compute_smd_tlsph_dt.txt
index 798278661a..c714f3266b 100644
--- a/doc/src/compute_smd_tlsph_dt.txt
+++ b/doc/src/compute_smd_tlsph_dt.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_tlsph_num_neighs.txt b/doc/src/compute_smd_tlsph_num_neighs.txt
index 632ab94208..af5b0741db 100644
--- a/doc/src/compute_smd_tlsph_num_neighs.txt
+++ b/doc/src/compute_smd_tlsph_num_neighs.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_tlsph_shape.txt b/doc/src/compute_smd_tlsph_shape.txt
index a3daf70222..927cd7c7ae 100644
--- a/doc/src/compute_smd_tlsph_shape.txt
+++ b/doc/src/compute_smd_tlsph_shape.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_tlsph_strain.txt b/doc/src/compute_smd_tlsph_strain.txt
index 899166359c..4536f26c8e 100644
--- a/doc/src/compute_smd_tlsph_strain.txt
+++ b/doc/src/compute_smd_tlsph_strain.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_tlsph_strain_rate.txt b/doc/src/compute_smd_tlsph_strain_rate.txt
index 29246a05d9..ae2883e4bb 100644
--- a/doc/src/compute_smd_tlsph_strain_rate.txt
+++ b/doc/src/compute_smd_tlsph_strain_rate.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_tlsph_stress.txt b/doc/src/compute_smd_tlsph_stress.txt
index c2c23b6836..50d6b7f434 100644
--- a/doc/src/compute_smd_tlsph_stress.txt
+++ b/doc/src/compute_smd_tlsph_stress.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_triangle_mesh_vertices.txt b/doc/src/compute_smd_triangle_mesh_vertices.txt
index 3080ef700e..9e167924d1 100644
--- a/doc/src/compute_smd_triangle_mesh_vertices.txt
+++ b/doc/src/compute_smd_triangle_mesh_vertices.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_ulsph_num_neighs.txt b/doc/src/compute_smd_ulsph_num_neighs.txt
index 8550838799..202b8f15e1 100644
--- a/doc/src/compute_smd_ulsph_num_neighs.txt
+++ b/doc/src/compute_smd_ulsph_num_neighs.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_ulsph_strain.txt b/doc/src/compute_smd_ulsph_strain.txt
index 3813e61f6c..76c47162a5 100644
--- a/doc/src/compute_smd_ulsph_strain.txt
+++ b/doc/src/compute_smd_ulsph_strain.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_ulsph_strain_rate.txt b/doc/src/compute_smd_ulsph_strain_rate.txt
index 251e5ddbf7..c851e767b3 100644
--- a/doc/src/compute_smd_ulsph_strain_rate.txt
+++ b/doc/src/compute_smd_ulsph_strain_rate.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_ulsph_stress.txt b/doc/src/compute_smd_ulsph_stress.txt
index 719cf006c9..a5692b2412 100644
--- a/doc/src/compute_smd_ulsph_stress.txt
+++ b/doc/src/compute_smd_ulsph_stress.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_smd_vol.txt b/doc/src/compute_smd_vol.txt
index 495c09a5f5..fc4871d6f3 100644
--- a/doc/src/compute_smd_vol.txt
+++ b/doc/src/compute_smd_vol.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_sna_atom.txt b/doc/src/compute_sna_atom.txt
index 6fdd85568b..3b302a0a71 100644
--- a/doc/src/compute_sna_atom.txt
+++ b/doc/src/compute_sna_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_spin.txt b/doc/src/compute_spin.txt
index fcc764c14c..792706ecdf 100644
--- a/doc/src/compute_spin.txt
+++ b/doc/src/compute_spin.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_stress_atom.txt b/doc/src/compute_stress_atom.txt
index 423c1dcfda..222513da61 100644
--- a/doc/src/compute_stress_atom.txt
+++ b/doc/src/compute_stress_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_tally.txt b/doc/src/compute_tally.txt
index 95ef4a553b..23fac43093 100644
--- a/doc/src/compute_tally.txt
+++ b/doc/src/compute_tally.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_tdpd_cc_atom.txt b/doc/src/compute_tdpd_cc_atom.txt
index ec077a33d1..9ee4d3da34 100644
--- a/doc/src/compute_tdpd_cc_atom.txt
+++ b/doc/src/compute_tdpd_cc_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp.txt b/doc/src/compute_temp.txt
index cce40261c6..9f3a1ca906 100644
--- a/doc/src/compute_temp.txt
+++ b/doc/src/compute_temp.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_asphere.txt b/doc/src/compute_temp_asphere.txt
index a5fc0e8927..6766729ae0 100644
--- a/doc/src/compute_temp_asphere.txt
+++ b/doc/src/compute_temp_asphere.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_body.txt b/doc/src/compute_temp_body.txt
index 580564b059..4e3ce3e77f 100644
--- a/doc/src/compute_temp_body.txt
+++ b/doc/src/compute_temp_body.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_chunk.txt b/doc/src/compute_temp_chunk.txt
index 5d7d64ce68..de8c850a70 100644
--- a/doc/src/compute_temp_chunk.txt
+++ b/doc/src/compute_temp_chunk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_com.txt b/doc/src/compute_temp_com.txt
index e8b46aec97..12df694e38 100644
--- a/doc/src/compute_temp_com.txt
+++ b/doc/src/compute_temp_com.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_cs.txt b/doc/src/compute_temp_cs.txt
index 9d2ceabd46..0236319f54 100644
--- a/doc/src/compute_temp_cs.txt
+++ b/doc/src/compute_temp_cs.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_deform.txt b/doc/src/compute_temp_deform.txt
index b81d07babd..26d322589e 100644
--- a/doc/src/compute_temp_deform.txt
+++ b/doc/src/compute_temp_deform.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_deform_eff.txt b/doc/src/compute_temp_deform_eff.txt
index 418180d93c..876d492f34 100644
--- a/doc/src/compute_temp_deform_eff.txt
+++ b/doc/src/compute_temp_deform_eff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_drude.txt b/doc/src/compute_temp_drude.txt
index 3e86dc8fda..20d9a5c056 100644
--- a/doc/src/compute_temp_drude.txt
+++ b/doc/src/compute_temp_drude.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_eff.txt b/doc/src/compute_temp_eff.txt
index 42d22a33a7..35ddb75b12 100644
--- a/doc/src/compute_temp_eff.txt
+++ b/doc/src/compute_temp_eff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_partial.txt b/doc/src/compute_temp_partial.txt
index 0fda274ca0..2769246532 100644
--- a/doc/src/compute_temp_partial.txt
+++ b/doc/src/compute_temp_partial.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_profile.txt b/doc/src/compute_temp_profile.txt
index 8f47c8f9f4..4ed04ca67e 100644
--- a/doc/src/compute_temp_profile.txt
+++ b/doc/src/compute_temp_profile.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_ramp.txt b/doc/src/compute_temp_ramp.txt
index 1ae0cdfc3e..15cad9c0cb 100644
--- a/doc/src/compute_temp_ramp.txt
+++ b/doc/src/compute_temp_ramp.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_region.txt b/doc/src/compute_temp_region.txt
index f05fa38e2c..f23901af98 100644
--- a/doc/src/compute_temp_region.txt
+++ b/doc/src/compute_temp_region.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_region_eff.txt b/doc/src/compute_temp_region_eff.txt
index 45c01b047f..95892eb257 100644
--- a/doc/src/compute_temp_region_eff.txt
+++ b/doc/src/compute_temp_region_eff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_rotate.txt b/doc/src/compute_temp_rotate.txt
index 8c5679b83f..189246d3e4 100644
--- a/doc/src/compute_temp_rotate.txt
+++ b/doc/src/compute_temp_rotate.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_sphere.txt b/doc/src/compute_temp_sphere.txt
index 4d4258182e..5a55126d12 100644
--- a/doc/src/compute_temp_sphere.txt
+++ b/doc/src/compute_temp_sphere.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_temp_uef.txt b/doc/src/compute_temp_uef.txt
index acd3a6218d..a94d5db8ed 100644
--- a/doc/src/compute_temp_uef.txt
+++ b/doc/src/compute_temp_uef.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_ti.txt b/doc/src/compute_ti.txt
index f5d26e1a03..e79b594e3f 100644
--- a/doc/src/compute_ti.txt
+++ b/doc/src/compute_ti.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_torque_chunk.txt b/doc/src/compute_torque_chunk.txt
index 254cd0fd85..6484076b37 100644
--- a/doc/src/compute_torque_chunk.txt
+++ b/doc/src/compute_torque_chunk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_vacf.txt b/doc/src/compute_vacf.txt
index d615f70e22..70f1e99490 100644
--- a/doc/src/compute_vacf.txt
+++ b/doc/src/compute_vacf.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_vcm_chunk.txt b/doc/src/compute_vcm_chunk.txt
index af1a4305d8..7e8ad71208 100644
--- a/doc/src/compute_vcm_chunk.txt
+++ b/doc/src/compute_vcm_chunk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_voronoi_atom.txt b/doc/src/compute_voronoi_atom.txt
index bbd68b16ea..a8ce77882a 100644
--- a/doc/src/compute_voronoi_atom.txt
+++ b/doc/src/compute_voronoi_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/compute_xrd.txt b/doc/src/compute_xrd.txt
index 03fd0ecdc2..609fde3582 100644
--- a/doc/src/compute_xrd.txt
+++ b/doc/src/compute_xrd.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/create_atoms.txt b/doc/src/create_atoms.txt
index 5d824ae1ef..d80e2d45f1 100644
--- a/doc/src/create_atoms.txt
+++ b/doc/src/create_atoms.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/create_bonds.txt b/doc/src/create_bonds.txt
index 6700ed29d3..8596cab51d 100644
--- a/doc/src/create_bonds.txt
+++ b/doc/src/create_bonds.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/create_box.txt b/doc/src/create_box.txt
index ed05775591..0993b4f927 100644
--- a/doc/src/create_box.txt
+++ b/doc/src/create_box.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/delete_atoms.txt b/doc/src/delete_atoms.txt
index 1aa71d341f..57faf97ad1 100644
--- a/doc/src/delete_atoms.txt
+++ b/doc/src/delete_atoms.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/delete_bonds.txt b/doc/src/delete_bonds.txt
index b1137a2288..b29fa82f2d 100644
--- a/doc/src/delete_bonds.txt
+++ b/doc/src/delete_bonds.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dielectric.txt b/doc/src/dielectric.txt
index e98badf87b..f93be8cc25 100644
--- a/doc/src/dielectric.txt
+++ b/doc/src/dielectric.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_charmm.txt b/doc/src/dihedral_charmm.txt
index f808649a44..8adef6cf4b 100644
--- a/doc/src/dihedral_charmm.txt
+++ b/doc/src/dihedral_charmm.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_class2.txt b/doc/src/dihedral_class2.txt
index 41282b22a3..1a2f37abbb 100644
--- a/doc/src/dihedral_class2.txt
+++ b/doc/src/dihedral_class2.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_coeff.txt b/doc/src/dihedral_coeff.txt
index 5b43cbbe7f..1db69e40d5 100644
--- a/doc/src/dihedral_coeff.txt
+++ b/doc/src/dihedral_coeff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -74,9 +74,9 @@ the style to display the formula it computes and coefficients
 specified by the associated "dihedral_coeff"_dihedral_coeff.html command.
 
 Note that there are also additional dihedral styles submitted by users
-which are included in the LAMMPS distribution.  The list of these with
-links to the individual styles are given in the dihedral section of
-"this page"_Section_commands.html#cmd_5.
+which are included in the LAMMPS distribution.  The full list of all
+dihedral styles is on the "Commands bond"_Commands_bond.html#dihedral
+doc page.
 
 "dihedral_style none"_dihedral_none.html - turn off dihedral interactions
 "dihedral_style hybrid"_dihedral_hybrid.html - define multiple styles of dihedral interactions :ul
diff --git a/doc/src/dihedral_cosine_shift_exp.txt b/doc/src/dihedral_cosine_shift_exp.txt
index 483745be41..7ef27e6bc9 100644
--- a/doc/src/dihedral_cosine_shift_exp.txt
+++ b/doc/src/dihedral_cosine_shift_exp.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_fourier.txt b/doc/src/dihedral_fourier.txt
index 0270139f68..f51cbc9c8c 100644
--- a/doc/src/dihedral_fourier.txt
+++ b/doc/src/dihedral_fourier.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_harmonic.txt b/doc/src/dihedral_harmonic.txt
index a25a7969fe..1eda0c5d02 100644
--- a/doc/src/dihedral_harmonic.txt
+++ b/doc/src/dihedral_harmonic.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_helix.txt b/doc/src/dihedral_helix.txt
index 814962a472..3af4b410bc 100644
--- a/doc/src/dihedral_helix.txt
+++ b/doc/src/dihedral_helix.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_hybrid.txt b/doc/src/dihedral_hybrid.txt
index 8cb40eff44..c9ca86680c 100644
--- a/doc/src/dihedral_hybrid.txt
+++ b/doc/src/dihedral_hybrid.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_multi_harmonic.txt b/doc/src/dihedral_multi_harmonic.txt
index 62cad4141a..7c22391923 100644
--- a/doc/src/dihedral_multi_harmonic.txt
+++ b/doc/src/dihedral_multi_harmonic.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_nharmonic.txt b/doc/src/dihedral_nharmonic.txt
index a49979fa66..aa8f1e0d7f 100644
--- a/doc/src/dihedral_nharmonic.txt
+++ b/doc/src/dihedral_nharmonic.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_none.txt b/doc/src/dihedral_none.txt
index 3ce2aa1729..4c1ff2ea5d 100644
--- a/doc/src/dihedral_none.txt
+++ b/doc/src/dihedral_none.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_opls.txt b/doc/src/dihedral_opls.txt
index 9b33173da4..f0cf91f30a 100644
--- a/doc/src/dihedral_opls.txt
+++ b/doc/src/dihedral_opls.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_quadratic.txt b/doc/src/dihedral_quadratic.txt
index f90c4b79f1..e65cf2dee8 100644
--- a/doc/src/dihedral_quadratic.txt
+++ b/doc/src/dihedral_quadratic.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_spherical.txt b/doc/src/dihedral_spherical.txt
index 7c17fbf5ef..10a757e898 100644
--- a/doc/src/dihedral_spherical.txt
+++ b/doc/src/dihedral_spherical.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_style.txt b/doc/src/dihedral_style.txt
index ca592b29b5..6aff3f0994 100644
--- a/doc/src/dihedral_style.txt
+++ b/doc/src/dihedral_style.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -81,9 +81,9 @@ the style to display the formula it computes and coefficients
 specified by the associated "dihedral_coeff"_dihedral_coeff.html command.
 
 Note that there are also additional dihedral styles submitted by users
-which are included in the LAMMPS distribution.  The list of these with
-links to the individual styles are given in the dihedral section of
-"this page"_Section_commands.html#cmd_5.
+which are included in the LAMMPS distribution.  The full list of all
+dihedral styles is on the "Commands bond"_Commands_bond.html#dihedral
+doc page.
 
 "dihedral_style none"_dihedral_none.html - turn off dihedral interactions
 "dihedral_style zero"_dihedral_zero.html - topology but no interactions
diff --git a/doc/src/dihedral_table.txt b/doc/src/dihedral_table.txt
index 6a480fec93..d722ef7c82 100644
--- a/doc/src/dihedral_table.txt
+++ b/doc/src/dihedral_table.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_table_cut.txt b/doc/src/dihedral_table_cut.txt
index 1c83d4ffa0..cc7df8cdf9 100644
--- a/doc/src/dihedral_table_cut.txt
+++ b/doc/src/dihedral_table_cut.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dihedral_zero.txt b/doc/src/dihedral_zero.txt
index 4d33126eeb..0c9995a563 100644
--- a/doc/src/dihedral_zero.txt
+++ b/doc/src/dihedral_zero.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dimension.txt b/doc/src/dimension.txt
index f079f17f99..b7dde76524 100644
--- a/doc/src/dimension.txt
+++ b/doc/src/dimension.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/displace_atoms.txt b/doc/src/displace_atoms.txt
index 634add196b..b4afd5c3a9 100644
--- a/doc/src/displace_atoms.txt
+++ b/doc/src/displace_atoms.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dump.txt b/doc/src/dump.txt
index cd8bab2e65..5b478b7301 100644
--- a/doc/src/dump.txt
+++ b/doc/src/dump.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dump_cfg_uef.txt b/doc/src/dump_cfg_uef.txt
index e257f9c4f1..665be14be1 100644
--- a/doc/src/dump_cfg_uef.txt
+++ b/doc/src/dump_cfg_uef.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dump_h5md.txt b/doc/src/dump_h5md.txt
index 93c87d85b7..fbd682dad9 100644
--- a/doc/src/dump_h5md.txt
+++ b/doc/src/dump_h5md.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dump_image.txt b/doc/src/dump_image.txt
index fcc9b25b62..06332b5dcf 100644
--- a/doc/src/dump_image.txt
+++ b/doc/src/dump_image.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dump_modify.txt b/doc/src/dump_modify.txt
index 5365610d64..73107d07f7 100644
--- a/doc/src/dump_modify.txt
+++ b/doc/src/dump_modify.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dump_molfile.txt b/doc/src/dump_molfile.txt
index 7e68490a68..9fa04bd1ae 100644
--- a/doc/src/dump_molfile.txt
+++ b/doc/src/dump_molfile.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dump_netcdf.txt b/doc/src/dump_netcdf.txt
index 70111a36a8..b1c6373651 100644
--- a/doc/src/dump_netcdf.txt
+++ b/doc/src/dump_netcdf.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/dump_vtk.txt b/doc/src/dump_vtk.txt
index d4d28c81fc..afc6099534 100644
--- a/doc/src/dump_vtk.txt
+++ b/doc/src/dump_vtk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/echo.txt b/doc/src/echo.txt
index 3141c7a719..dc6918dc89 100644
--- a/doc/src/echo.txt
+++ b/doc/src/echo.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix.txt b/doc/src/fix.txt
index a51dc1637d..fd966b5bd9 100644
--- a/doc/src/fix.txt
+++ b/doc/src/fix.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -151,16 +151,20 @@ for further info.
 
 :line
 
-Each fix style has its own documentation page which describes its
-arguments and what it does, as listed below.  Here is an alphabetic
-list of fix styles available in LAMMPS.  They are also given in more
-compact form in the Fix section of "this
-page"_Section_commands.html#cmd_5.
+Each fix style has its own doc page which describes its arguments and
+what it does, as listed below.  Here is an alphabetic list of fix
+styles available in LAMMPS.  They are also listed in more compact form
+on the "Commands fix"_Commands_fix.html doc page.
 
 There are also additional fix styles (not listed here) submitted by
-users which are included in the LAMMPS distribution.  The list of
-these with links to the individual styles are given in the fix section
-of "this page"_Section_commands.html#cmd_5.
+users which are included in the LAMMPS distribution.  The full list of
+all fix styles is on the "Commands fix"_Commands_fix.html doc page.
+
+There are also additional accelerated fix styles included in the
+LAMMPS distribution for faster performance on CPUs, GPUs, and KNLs.
+The individual style names on the "Commands fix"_Commands_fix.html doc
+page are followed by one or more of (g,i,k,o,t) to indicate which
+accerlerated styles exist.
 
 "adapt"_fix_adapt.html - change a simulation parameter over time
 "addforce"_fix_addforce.html - add a force to each atom
diff --git a/doc/src/fix_adapt.txt b/doc/src/fix_adapt.txt
index 0764d04e6d..0ca28fb869 100644
--- a/doc/src/fix_adapt.txt
+++ b/doc/src/fix_adapt.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_adapt_fep.txt b/doc/src/fix_adapt_fep.txt
index 43c87a1601..7e30a1d29d 100644
--- a/doc/src/fix_adapt_fep.txt
+++ b/doc/src/fix_adapt_fep.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_addforce.txt b/doc/src/fix_addforce.txt
index c77cdb62af..51be39fdb2 100644
--- a/doc/src/fix_addforce.txt
+++ b/doc/src/fix_addforce.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_addtorque.txt b/doc/src/fix_addtorque.txt
index 589cb37cc0..c80fad26da 100644
--- a/doc/src/fix_addtorque.txt
+++ b/doc/src/fix_addtorque.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_append_atoms.txt b/doc/src/fix_append_atoms.txt
index ba7b4a3e74..c6af361afc 100644
--- a/doc/src/fix_append_atoms.txt
+++ b/doc/src/fix_append_atoms.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_atc.txt b/doc/src/fix_atc.txt
index af3270ff52..6de917e571 100644
--- a/doc/src/fix_atc.txt
+++ b/doc/src/fix_atc.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_atom_swap.txt b/doc/src/fix_atom_swap.txt
index 0b3be3ce5e..c1d84dade1 100644
--- a/doc/src/fix_atom_swap.txt
+++ b/doc/src/fix_atom_swap.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_ave_atom.txt b/doc/src/fix_ave_atom.txt
index 05bd0f6fa7..10deaf64cd 100644
--- a/doc/src/fix_ave_atom.txt
+++ b/doc/src/fix_ave_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_ave_chunk.txt b/doc/src/fix_ave_chunk.txt
index e9d0ef7e72..d331e51295 100644
--- a/doc/src/fix_ave_chunk.txt
+++ b/doc/src/fix_ave_chunk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_ave_correlate.txt b/doc/src/fix_ave_correlate.txt
index 74ce3f340e..22e8768f1d 100644
--- a/doc/src/fix_ave_correlate.txt
+++ b/doc/src/fix_ave_correlate.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_ave_correlate_long.txt b/doc/src/fix_ave_correlate_long.txt
index 7b4bc53701..ac0ef873aa 100644
--- a/doc/src/fix_ave_correlate_long.txt
+++ b/doc/src/fix_ave_correlate_long.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_ave_histo.txt b/doc/src/fix_ave_histo.txt
index e2fd2e04e8..f1da130ff7 100644
--- a/doc/src/fix_ave_histo.txt
+++ b/doc/src/fix_ave_histo.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_ave_time.txt b/doc/src/fix_ave_time.txt
index e973a36360..a53e318d3f 100644
--- a/doc/src/fix_ave_time.txt
+++ b/doc/src/fix_ave_time.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_aveforce.txt b/doc/src/fix_aveforce.txt
index 3497b33ef4..1fc7e4a18d 100644
--- a/doc/src/fix_aveforce.txt
+++ b/doc/src/fix_aveforce.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_balance.txt b/doc/src/fix_balance.txt
index b98fd85c3b..2de17cdd2a 100644
--- a/doc/src/fix_balance.txt
+++ b/doc/src/fix_balance.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_bocs.txt b/doc/src/fix_bocs.txt
index f53b7c785c..f5bbc8a251 100644
--- a/doc/src/fix_bocs.txt
+++ b/doc/src/fix_bocs.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_bond_break.txt b/doc/src/fix_bond_break.txt
index b43053c461..bdb2f2a862 100644
--- a/doc/src/fix_bond_break.txt
+++ b/doc/src/fix_bond_break.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_bond_create.txt b/doc/src/fix_bond_create.txt
index a55ba1ff6e..ab34433cec 100644
--- a/doc/src/fix_bond_create.txt
+++ b/doc/src/fix_bond_create.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_bond_react.txt b/doc/src/fix_bond_react.txt
index 006f59100f..883968e012 100644
--- a/doc/src/fix_bond_react.txt
+++ b/doc/src/fix_bond_react.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_bond_swap.txt b/doc/src/fix_bond_swap.txt
index 8d5df7e4e0..a829171f33 100644
--- a/doc/src/fix_bond_swap.txt
+++ b/doc/src/fix_bond_swap.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_box_relax.txt b/doc/src/fix_box_relax.txt
index a625f0c5b8..8e21ec2c74 100644
--- a/doc/src/fix_box_relax.txt
+++ b/doc/src/fix_box_relax.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_cmap.txt b/doc/src/fix_cmap.txt
index d352f0e652..6f3769fafe 100644
--- a/doc/src/fix_cmap.txt
+++ b/doc/src/fix_cmap.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_colvars.txt b/doc/src/fix_colvars.txt
index 2d3000e6ea..4a1d84de64 100644
--- a/doc/src/fix_colvars.txt
+++ b/doc/src/fix_colvars.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_controller.txt b/doc/src/fix_controller.txt
index 710642c0ea..7458f1bcfa 100644
--- a/doc/src/fix_controller.txt
+++ b/doc/src/fix_controller.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_deform.txt b/doc/src/fix_deform.txt
index 09261e2423..e92d1e6b19 100644
--- a/doc/src/fix_deform.txt
+++ b/doc/src/fix_deform.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_deposit.txt b/doc/src/fix_deposit.txt
index 285e720555..277ca8777a 100644
--- a/doc/src/fix_deposit.txt
+++ b/doc/src/fix_deposit.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_dpd_energy.txt b/doc/src/fix_dpd_energy.txt
index 4f2b5d573f..f539bc534e 100644
--- a/doc/src/fix_dpd_energy.txt
+++ b/doc/src/fix_dpd_energy.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_dpd_source.txt b/doc/src/fix_dpd_source.txt
index bbfc99e8c8..04af9a28a1 100644
--- a/doc/src/fix_dpd_source.txt
+++ b/doc/src/fix_dpd_source.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_drag.txt b/doc/src/fix_drag.txt
index a67ec6aaf2..92e68d13a4 100644
--- a/doc/src/fix_drag.txt
+++ b/doc/src/fix_drag.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_drude.txt b/doc/src/fix_drude.txt
index 4a3d30a9ca..80eb79201b 100644
--- a/doc/src/fix_drude.txt
+++ b/doc/src/fix_drude.txt
@@ -3,7 +3,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_drude_transform.txt b/doc/src/fix_drude_transform.txt
index 54cdfa956e..8864cc4eb6 100644
--- a/doc/src/fix_drude_transform.txt
+++ b/doc/src/fix_drude_transform.txt
@@ -9,7 +9,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_dt_reset.txt b/doc/src/fix_dt_reset.txt
index 428128feda..be4fbd255b 100644
--- a/doc/src/fix_dt_reset.txt
+++ b/doc/src/fix_dt_reset.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_efield.txt b/doc/src/fix_efield.txt
index a248a03b07..b5a43f68aa 100644
--- a/doc/src/fix_efield.txt
+++ b/doc/src/fix_efield.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_ehex.txt b/doc/src/fix_ehex.txt
index 40752a811f..cfcc917d01 100644
--- a/doc/src/fix_ehex.txt
+++ b/doc/src/fix_ehex.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_enforce2d.txt b/doc/src/fix_enforce2d.txt
index b0d8c691b5..2925e44bda 100644
--- a/doc/src/fix_enforce2d.txt
+++ b/doc/src/fix_enforce2d.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_eos_cv.txt b/doc/src/fix_eos_cv.txt
index 4c97304335..b94e2c64a9 100644
--- a/doc/src/fix_eos_cv.txt
+++ b/doc/src/fix_eos_cv.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_eos_table.txt b/doc/src/fix_eos_table.txt
index 42778d7978..743c51f415 100644
--- a/doc/src/fix_eos_table.txt
+++ b/doc/src/fix_eos_table.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_eos_table_rx.txt b/doc/src/fix_eos_table_rx.txt
index f74a838c47..f9deab61c8 100644
--- a/doc/src/fix_eos_table_rx.txt
+++ b/doc/src/fix_eos_table_rx.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_evaporate.txt b/doc/src/fix_evaporate.txt
index be8b351986..6237a137fd 100644
--- a/doc/src/fix_evaporate.txt
+++ b/doc/src/fix_evaporate.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_external.txt b/doc/src/fix_external.txt
index bf80b1b231..1dec226414 100644
--- a/doc/src/fix_external.txt
+++ b/doc/src/fix_external.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_filter_corotate.txt b/doc/src/fix_filter_corotate.txt
index a75a3b7b44..d1e5e12f3e 100644
--- a/doc/src/fix_filter_corotate.txt
+++ b/doc/src/fix_filter_corotate.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_flow_gauss.txt b/doc/src/fix_flow_gauss.txt
index 0980076062..843c2a66a5 100644
--- a/doc/src/fix_flow_gauss.txt
+++ b/doc/src/fix_flow_gauss.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_freeze.txt b/doc/src/fix_freeze.txt
index 43714df802..76a9fd3b1a 100644
--- a/doc/src/fix_freeze.txt
+++ b/doc/src/fix_freeze.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_gcmc.txt b/doc/src/fix_gcmc.txt
index 9630d856be..394690ea5d 100644
--- a/doc/src/fix_gcmc.txt
+++ b/doc/src/fix_gcmc.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_gld.txt b/doc/src/fix_gld.txt
index 06ac5d68cb..1c5db6157d 100644
--- a/doc/src/fix_gld.txt
+++ b/doc/src/fix_gld.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_gle.txt b/doc/src/fix_gle.txt
index d91dd8dee9..9fdc72bf9f 100644
--- a/doc/src/fix_gle.txt
+++ b/doc/src/fix_gle.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_gravity.txt b/doc/src/fix_gravity.txt
index 786f145608..832c677f81 100644
--- a/doc/src/fix_gravity.txt
+++ b/doc/src/fix_gravity.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_grem.txt b/doc/src/fix_grem.txt
index 661f68ed99..506e266505 100644
--- a/doc/src/fix_grem.txt
+++ b/doc/src/fix_grem.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_halt.txt b/doc/src/fix_halt.txt
index 55f313e40f..ec117518d2 100644
--- a/doc/src/fix_halt.txt
+++ b/doc/src/fix_halt.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_heat.txt b/doc/src/fix_heat.txt
index a0e9b945fc..6db7592609 100644
--- a/doc/src/fix_heat.txt
+++ b/doc/src/fix_heat.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_imd.txt b/doc/src/fix_imd.txt
index 1a1f11c2cf..8e21a1619b 100644
--- a/doc/src/fix_imd.txt
+++ b/doc/src/fix_imd.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_indent.txt b/doc/src/fix_indent.txt
index 1f67c0b242..9931793c0b 100644
--- a/doc/src/fix_indent.txt
+++ b/doc/src/fix_indent.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_ipi.txt b/doc/src/fix_ipi.txt
index 07e8025d77..eba30ef088 100644
--- a/doc/src/fix_ipi.txt
+++ b/doc/src/fix_ipi.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_langevin.txt b/doc/src/fix_langevin.txt
index 769b188604..4d7728cdba 100644
--- a/doc/src/fix_langevin.txt
+++ b/doc/src/fix_langevin.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_langevin_drude.txt b/doc/src/fix_langevin_drude.txt
index bda8ec7881..19a3f87ffc 100644
--- a/doc/src/fix_langevin_drude.txt
+++ b/doc/src/fix_langevin_drude.txt
@@ -9,7 +9,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_langevin_eff.txt b/doc/src/fix_langevin_eff.txt
index ef22e99bcf..cf42f9c036 100644
--- a/doc/src/fix_langevin_eff.txt
+++ b/doc/src/fix_langevin_eff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_langevin_spin.txt b/doc/src/fix_langevin_spin.txt
index b089cd7f58..1b1936376d 100644
--- a/doc/src/fix_langevin_spin.txt
+++ b/doc/src/fix_langevin_spin.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_latte.txt b/doc/src/fix_latte.txt
index 4f7e99dea8..9bc589520b 100644
--- a/doc/src/fix_latte.txt
+++ b/doc/src/fix_latte.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_lb_fluid.txt b/doc/src/fix_lb_fluid.txt
index 925ca991c4..5347f0147f 100644
--- a/doc/src/fix_lb_fluid.txt
+++ b/doc/src/fix_lb_fluid.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_lb_momentum.txt b/doc/src/fix_lb_momentum.txt
index 78a1f497eb..a58c5d257e 100644
--- a/doc/src/fix_lb_momentum.txt
+++ b/doc/src/fix_lb_momentum.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_lb_pc.txt b/doc/src/fix_lb_pc.txt
index f93d02f677..bd121b7813 100644
--- a/doc/src/fix_lb_pc.txt
+++ b/doc/src/fix_lb_pc.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_lb_rigid_pc_sphere.txt b/doc/src/fix_lb_rigid_pc_sphere.txt
index 50e91df849..bc8fa2ea25 100644
--- a/doc/src/fix_lb_rigid_pc_sphere.txt
+++ b/doc/src/fix_lb_rigid_pc_sphere.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_lb_viscous.txt b/doc/src/fix_lb_viscous.txt
index 27f089496e..7bbdd204e3 100644
--- a/doc/src/fix_lb_viscous.txt
+++ b/doc/src/fix_lb_viscous.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_lineforce.txt b/doc/src/fix_lineforce.txt
index ad651862f6..3114ed6250 100644
--- a/doc/src/fix_lineforce.txt
+++ b/doc/src/fix_lineforce.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_manifoldforce.txt b/doc/src/fix_manifoldforce.txt
index fe8a04051b..aa32a875bf 100644
--- a/doc/src/fix_manifoldforce.txt
+++ b/doc/src/fix_manifoldforce.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_meso.txt b/doc/src/fix_meso.txt
index 95f58bedaa..8f5ad29929 100644
--- a/doc/src/fix_meso.txt
+++ b/doc/src/fix_meso.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_meso_stationary.txt b/doc/src/fix_meso_stationary.txt
index 3b197c079f..38d26b34d6 100644
--- a/doc/src/fix_meso_stationary.txt
+++ b/doc/src/fix_meso_stationary.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_modify.txt b/doc/src/fix_modify.txt
index 308bba1ac3..ddb5f9a4cd 100644
--- a/doc/src/fix_modify.txt
+++ b/doc/src/fix_modify.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_momentum.txt b/doc/src/fix_momentum.txt
index 28fd2addf2..f7fe35be2a 100644
--- a/doc/src/fix_momentum.txt
+++ b/doc/src/fix_momentum.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_move.txt b/doc/src/fix_move.txt
index 9a1d25b623..08f38d0ed6 100644
--- a/doc/src/fix_move.txt
+++ b/doc/src/fix_move.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_mscg.txt b/doc/src/fix_mscg.txt
index 7d16967955..aadc3caf5a 100644
--- a/doc/src/fix_mscg.txt
+++ b/doc/src/fix_mscg.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_msst.txt b/doc/src/fix_msst.txt
index d79b549580..91ffbbb0fa 100644
--- a/doc/src/fix_msst.txt
+++ b/doc/src/fix_msst.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_mvv_dpd.txt b/doc/src/fix_mvv_dpd.txt
index 7a07642c54..1e9bf631fd 100644
--- a/doc/src/fix_mvv_dpd.txt
+++ b/doc/src/fix_mvv_dpd.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_neb.txt b/doc/src/fix_neb.txt
index 5cfefbf819..5341d6999c 100644
--- a/doc/src/fix_neb.txt
+++ b/doc/src/fix_neb.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nh.txt b/doc/src/fix_nh.txt
index d18f4a3e16..f6b155e2db 100644
--- a/doc/src/fix_nh.txt
+++ b/doc/src/fix_nh.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nh_eff.txt b/doc/src/fix_nh_eff.txt
index 1731f1f331..afb319bfa5 100644
--- a/doc/src/fix_nh_eff.txt
+++ b/doc/src/fix_nh_eff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nh_uef.txt b/doc/src/fix_nh_uef.txt
index bde1818371..0e73c57e08 100644
--- a/doc/src/fix_nh_uef.txt
+++ b/doc/src/fix_nh_uef.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nph_asphere.txt b/doc/src/fix_nph_asphere.txt
index ff8c300c47..6bfd9d3fe2 100644
--- a/doc/src/fix_nph_asphere.txt
+++ b/doc/src/fix_nph_asphere.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nph_body.txt b/doc/src/fix_nph_body.txt
index 9263470e9e..377e1980eb 100644
--- a/doc/src/fix_nph_body.txt
+++ b/doc/src/fix_nph_body.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nph_sphere.txt b/doc/src/fix_nph_sphere.txt
index ba3b2f6c06..8b7639c4c6 100644
--- a/doc/src/fix_nph_sphere.txt
+++ b/doc/src/fix_nph_sphere.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nphug.txt b/doc/src/fix_nphug.txt
index 1276a5697d..0bd5153152 100644
--- a/doc/src/fix_nphug.txt
+++ b/doc/src/fix_nphug.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_npt_asphere.txt b/doc/src/fix_npt_asphere.txt
index a21caa1042..9c95a80d33 100644
--- a/doc/src/fix_npt_asphere.txt
+++ b/doc/src/fix_npt_asphere.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_npt_body.txt b/doc/src/fix_npt_body.txt
index 0f678a1b7d..0d2b797299 100644
--- a/doc/src/fix_npt_body.txt
+++ b/doc/src/fix_npt_body.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_npt_sphere.txt b/doc/src/fix_npt_sphere.txt
index 862f95603f..dcb25d1c73 100644
--- a/doc/src/fix_npt_sphere.txt
+++ b/doc/src/fix_npt_sphere.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nve.txt b/doc/src/fix_nve.txt
index 8aa4197a60..e446b27397 100644
--- a/doc/src/fix_nve.txt
+++ b/doc/src/fix_nve.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nve_asphere.txt b/doc/src/fix_nve_asphere.txt
index b9ee48f9dd..b7fb3e922c 100644
--- a/doc/src/fix_nve_asphere.txt
+++ b/doc/src/fix_nve_asphere.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nve_asphere_noforce.txt b/doc/src/fix_nve_asphere_noforce.txt
index 164e3db104..e57417bda5 100644
--- a/doc/src/fix_nve_asphere_noforce.txt
+++ b/doc/src/fix_nve_asphere_noforce.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nve_body.txt b/doc/src/fix_nve_body.txt
index 3696425374..d072bfa161 100644
--- a/doc/src/fix_nve_body.txt
+++ b/doc/src/fix_nve_body.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nve_dot.txt b/doc/src/fix_nve_dot.txt
index 0e0c8f8ecf..1041a248d8 100644
--- a/doc/src/fix_nve_dot.txt
+++ b/doc/src/fix_nve_dot.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nve_dotc_langevin.txt b/doc/src/fix_nve_dotc_langevin.txt
index 93d875bca5..68c1b42328 100644
--- a/doc/src/fix_nve_dotc_langevin.txt
+++ b/doc/src/fix_nve_dotc_langevin.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nve_eff.txt b/doc/src/fix_nve_eff.txt
index 608e5e12ad..7343ddc429 100644
--- a/doc/src/fix_nve_eff.txt
+++ b/doc/src/fix_nve_eff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nve_limit.txt b/doc/src/fix_nve_limit.txt
index ffaffd59b7..8c8c66a0da 100644
--- a/doc/src/fix_nve_limit.txt
+++ b/doc/src/fix_nve_limit.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nve_line.txt b/doc/src/fix_nve_line.txt
index a919e648e1..dd5101489b 100644
--- a/doc/src/fix_nve_line.txt
+++ b/doc/src/fix_nve_line.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nve_manifold_rattle.txt b/doc/src/fix_nve_manifold_rattle.txt
index 89922ea80d..b333d093fb 100644
--- a/doc/src/fix_nve_manifold_rattle.txt
+++ b/doc/src/fix_nve_manifold_rattle.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nve_noforce.txt b/doc/src/fix_nve_noforce.txt
index c1a4f76eaf..da8d16bbb7 100644
--- a/doc/src/fix_nve_noforce.txt
+++ b/doc/src/fix_nve_noforce.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nve_sphere.txt b/doc/src/fix_nve_sphere.txt
index 36c4178de9..6e259bdb8e 100644
--- a/doc/src/fix_nve_sphere.txt
+++ b/doc/src/fix_nve_sphere.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nve_spin.txt b/doc/src/fix_nve_spin.txt
index f4b38c270b..e31185bc88 100644
--- a/doc/src/fix_nve_spin.txt
+++ b/doc/src/fix_nve_spin.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nve_tri.txt b/doc/src/fix_nve_tri.txt
index 9c03eb872a..ebdda19e36 100644
--- a/doc/src/fix_nve_tri.txt
+++ b/doc/src/fix_nve_tri.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nvk.txt b/doc/src/fix_nvk.txt
index 2106ee5235..e3189f8e8a 100644
--- a/doc/src/fix_nvk.txt
+++ b/doc/src/fix_nvk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nvt_asphere.txt b/doc/src/fix_nvt_asphere.txt
index 031c60e4be..7b97637175 100644
--- a/doc/src/fix_nvt_asphere.txt
+++ b/doc/src/fix_nvt_asphere.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nvt_body.txt b/doc/src/fix_nvt_body.txt
index 80de7fd7c3..4493a89277 100644
--- a/doc/src/fix_nvt_body.txt
+++ b/doc/src/fix_nvt_body.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nvt_manifold_rattle.txt b/doc/src/fix_nvt_manifold_rattle.txt
index 4261f9a4db..1b4ad79166 100644
--- a/doc/src/fix_nvt_manifold_rattle.txt
+++ b/doc/src/fix_nvt_manifold_rattle.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nvt_sllod.txt b/doc/src/fix_nvt_sllod.txt
index bb3c092939..9eb5065369 100644
--- a/doc/src/fix_nvt_sllod.txt
+++ b/doc/src/fix_nvt_sllod.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nvt_sllod_eff.txt b/doc/src/fix_nvt_sllod_eff.txt
index 408eb1da01..0200d5cb00 100644
--- a/doc/src/fix_nvt_sllod_eff.txt
+++ b/doc/src/fix_nvt_sllod_eff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_nvt_sphere.txt b/doc/src/fix_nvt_sphere.txt
index 897d5606d7..a87e4abe67 100644
--- a/doc/src/fix_nvt_sphere.txt
+++ b/doc/src/fix_nvt_sphere.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_oneway.txt b/doc/src/fix_oneway.txt
index d9217ab14b..433ceb50f2 100644
--- a/doc/src/fix_oneway.txt
+++ b/doc/src/fix_oneway.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_orient.txt b/doc/src/fix_orient.txt
index c57cccd322..7552bea8c5 100644
--- a/doc/src/fix_orient.txt
+++ b/doc/src/fix_orient.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_phonon.txt b/doc/src/fix_phonon.txt
index 63df4e6801..30e5864e3d 100644
--- a/doc/src/fix_phonon.txt
+++ b/doc/src/fix_phonon.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_pimd.txt b/doc/src/fix_pimd.txt
index 8958063d2e..b61b3f3065 100644
--- a/doc/src/fix_pimd.txt
+++ b/doc/src/fix_pimd.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_planeforce.txt b/doc/src/fix_planeforce.txt
index 4a74301066..ffe1952e31 100644
--- a/doc/src/fix_planeforce.txt
+++ b/doc/src/fix_planeforce.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_poems.txt b/doc/src/fix_poems.txt
index 0690923b45..1a79c2a048 100644
--- a/doc/src/fix_poems.txt
+++ b/doc/src/fix_poems.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_pour.txt b/doc/src/fix_pour.txt
index 4b86405522..e58d8ebc3a 100644
--- a/doc/src/fix_pour.txt
+++ b/doc/src/fix_pour.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_precession_spin.txt b/doc/src/fix_precession_spin.txt
index bc18fa0e8c..fafe78448b 100644
--- a/doc/src/fix_precession_spin.txt
+++ b/doc/src/fix_precession_spin.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_press_berendsen.txt b/doc/src/fix_press_berendsen.txt
index 0e41abd1f8..7f47a29ba3 100644
--- a/doc/src/fix_press_berendsen.txt
+++ b/doc/src/fix_press_berendsen.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_print.txt b/doc/src/fix_print.txt
index f7a7b333c4..d23c1103d3 100644
--- a/doc/src/fix_print.txt
+++ b/doc/src/fix_print.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_property_atom.txt b/doc/src/fix_property_atom.txt
index 624fc5f7df..136ed6c15e 100644
--- a/doc/src/fix_property_atom.txt
+++ b/doc/src/fix_property_atom.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_python_invoke.txt b/doc/src/fix_python_invoke.txt
index 787940d9eb..5e0c0369a5 100644
--- a/doc/src/fix_python_invoke.txt
+++ b/doc/src/fix_python_invoke.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_python_move.txt b/doc/src/fix_python_move.txt
index 2f49427a9e..a4e0eb3937 100644
--- a/doc/src/fix_python_move.txt
+++ b/doc/src/fix_python_move.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_qbmsst.txt b/doc/src/fix_qbmsst.txt
index 56ace85e57..e96bd97f45 100644
--- a/doc/src/fix_qbmsst.txt
+++ b/doc/src/fix_qbmsst.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_qeq.txt b/doc/src/fix_qeq.txt
index c142d4a06d..27fb613ef9 100644
--- a/doc/src/fix_qeq.txt
+++ b/doc/src/fix_qeq.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_qeq_comb.txt b/doc/src/fix_qeq_comb.txt
index 0eb38fcae6..99e86df030 100644
--- a/doc/src/fix_qeq_comb.txt
+++ b/doc/src/fix_qeq_comb.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_qeq_reax.txt b/doc/src/fix_qeq_reax.txt
index ea25ddbf57..cf16daf847 100644
--- a/doc/src/fix_qeq_reax.txt
+++ b/doc/src/fix_qeq_reax.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_qmmm.txt b/doc/src/fix_qmmm.txt
index 5e730ac8af..657ee84181 100644
--- a/doc/src/fix_qmmm.txt
+++ b/doc/src/fix_qmmm.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_qtb.txt b/doc/src/fix_qtb.txt
index 07a6af39ba..5b212934a9 100644
--- a/doc/src/fix_qtb.txt
+++ b/doc/src/fix_qtb.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_reax_bonds.txt b/doc/src/fix_reax_bonds.txt
index 2f7c38f815..49d61f4db8 100644
--- a/doc/src/fix_reax_bonds.txt
+++ b/doc/src/fix_reax_bonds.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_reaxc_species.txt b/doc/src/fix_reaxc_species.txt
index 4f1249744f..5be1c46230 100644
--- a/doc/src/fix_reaxc_species.txt
+++ b/doc/src/fix_reaxc_species.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_recenter.txt b/doc/src/fix_recenter.txt
index a2477d11c7..cfac756cd1 100644
--- a/doc/src/fix_recenter.txt
+++ b/doc/src/fix_recenter.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_restrain.txt b/doc/src/fix_restrain.txt
index b8cc7c0d45..2edc7e3296 100644
--- a/doc/src/fix_restrain.txt
+++ b/doc/src/fix_restrain.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_rhok.txt b/doc/src/fix_rhok.txt
index 2db920ac4b..68cce694e9 100644
--- a/doc/src/fix_rhok.txt
+++ b/doc/src/fix_rhok.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_rigid.txt b/doc/src/fix_rigid.txt
index a5f00c16e9..d5e3b01668 100644
--- a/doc/src/fix_rigid.txt
+++ b/doc/src/fix_rigid.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_rx.txt b/doc/src/fix_rx.txt
index aff3303f43..d39e41e922 100644
--- a/doc/src/fix_rx.txt
+++ b/doc/src/fix_rx.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_saed_vtk.txt b/doc/src/fix_saed_vtk.txt
index 814e17b8e9..60708cd696 100644
--- a/doc/src/fix_saed_vtk.txt
+++ b/doc/src/fix_saed_vtk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_setforce.txt b/doc/src/fix_setforce.txt
index c6a01e5492..14fceb7b49 100644
--- a/doc/src/fix_setforce.txt
+++ b/doc/src/fix_setforce.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_shake.txt b/doc/src/fix_shake.txt
index 9297bcc87a..ea38de41cd 100644
--- a/doc/src/fix_shake.txt
+++ b/doc/src/fix_shake.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_shardlow.txt b/doc/src/fix_shardlow.txt
index 6d14346334..33db2bf7cc 100644
--- a/doc/src/fix_shardlow.txt
+++ b/doc/src/fix_shardlow.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_smd.txt b/doc/src/fix_smd.txt
index e9403b22cc..2f083dafc3 100644
--- a/doc/src/fix_smd.txt
+++ b/doc/src/fix_smd.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_smd_adjust_dt.txt b/doc/src/fix_smd_adjust_dt.txt
index 86b7363300..740b10559d 100644
--- a/doc/src/fix_smd_adjust_dt.txt
+++ b/doc/src/fix_smd_adjust_dt.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_smd_integrate_tlsph.txt b/doc/src/fix_smd_integrate_tlsph.txt
index 17c9c0f400..cd676a51ce 100644
--- a/doc/src/fix_smd_integrate_tlsph.txt
+++ b/doc/src/fix_smd_integrate_tlsph.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_smd_integrate_ulsph.txt b/doc/src/fix_smd_integrate_ulsph.txt
index 28e38c7f97..7f16b4b7ce 100644
--- a/doc/src/fix_smd_integrate_ulsph.txt
+++ b/doc/src/fix_smd_integrate_ulsph.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_smd_move_triangulated_surface.txt b/doc/src/fix_smd_move_triangulated_surface.txt
index 2cba001267..aeabf18768 100644
--- a/doc/src/fix_smd_move_triangulated_surface.txt
+++ b/doc/src/fix_smd_move_triangulated_surface.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_smd_setvel.txt b/doc/src/fix_smd_setvel.txt
index d64726d9b3..6634751d6a 100644
--- a/doc/src/fix_smd_setvel.txt
+++ b/doc/src/fix_smd_setvel.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_smd_wall_surface.txt b/doc/src/fix_smd_wall_surface.txt
index feb65b2312..a19b2c4cfb 100644
--- a/doc/src/fix_smd_wall_surface.txt
+++ b/doc/src/fix_smd_wall_surface.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_spring.txt b/doc/src/fix_spring.txt
index 047e5a6797..690fc3e67c 100644
--- a/doc/src/fix_spring.txt
+++ b/doc/src/fix_spring.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_spring_chunk.txt b/doc/src/fix_spring_chunk.txt
index e46f299771..9d4e8afd09 100644
--- a/doc/src/fix_spring_chunk.txt
+++ b/doc/src/fix_spring_chunk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_spring_rg.txt b/doc/src/fix_spring_rg.txt
index 4afdc02d5a..b252163958 100644
--- a/doc/src/fix_spring_rg.txt
+++ b/doc/src/fix_spring_rg.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_spring_self.txt b/doc/src/fix_spring_self.txt
index e5b5c3dfd0..0ac1d5eecb 100644
--- a/doc/src/fix_spring_self.txt
+++ b/doc/src/fix_spring_self.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_srd.txt b/doc/src/fix_srd.txt
index 7c5179fb3f..893557b9ac 100644
--- a/doc/src/fix_srd.txt
+++ b/doc/src/fix_srd.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_store_force.txt b/doc/src/fix_store_force.txt
index 93437c85b6..33ebc962d5 100644
--- a/doc/src/fix_store_force.txt
+++ b/doc/src/fix_store_force.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_store_state.txt b/doc/src/fix_store_state.txt
index dee8070bbd..df05adc5b9 100644
--- a/doc/src/fix_store_state.txt
+++ b/doc/src/fix_store_state.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_surface_global.txt b/doc/src/fix_surface_global.txt
index b470babab7..ade64d2056 100644
--- a/doc/src/fix_surface_global.txt
+++ b/doc/src/fix_surface_global.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_temp_berendsen.txt b/doc/src/fix_temp_berendsen.txt
index 9092bbd30e..c1f1626782 100644
--- a/doc/src/fix_temp_berendsen.txt
+++ b/doc/src/fix_temp_berendsen.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_temp_csvr.txt b/doc/src/fix_temp_csvr.txt
index 6ce6ad7d9d..e50f821bfe 100644
--- a/doc/src/fix_temp_csvr.txt
+++ b/doc/src/fix_temp_csvr.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_temp_rescale.txt b/doc/src/fix_temp_rescale.txt
index 89f1777e36..5640317f1c 100644
--- a/doc/src/fix_temp_rescale.txt
+++ b/doc/src/fix_temp_rescale.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_temp_rescale_eff.txt b/doc/src/fix_temp_rescale_eff.txt
index 8a79dc3275..0e08e4f1e8 100644
--- a/doc/src/fix_temp_rescale_eff.txt
+++ b/doc/src/fix_temp_rescale_eff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_tfmc.txt b/doc/src/fix_tfmc.txt
index 3c81d62ee0..ddfa462619 100644
--- a/doc/src/fix_tfmc.txt
+++ b/doc/src/fix_tfmc.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_thermal_conductivity.txt b/doc/src/fix_thermal_conductivity.txt
index 2e10a89738..86fc6f2c72 100644
--- a/doc/src/fix_thermal_conductivity.txt
+++ b/doc/src/fix_thermal_conductivity.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_ti_spring.txt b/doc/src/fix_ti_spring.txt
index b116d8e8a3..afe5373220 100644
--- a/doc/src/fix_ti_spring.txt
+++ b/doc/src/fix_ti_spring.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_tmd.txt b/doc/src/fix_tmd.txt
index e1815e61d3..c2541692f5 100644
--- a/doc/src/fix_tmd.txt
+++ b/doc/src/fix_tmd.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_ttm.txt b/doc/src/fix_ttm.txt
index d83118d427..6001def581 100644
--- a/doc/src/fix_ttm.txt
+++ b/doc/src/fix_ttm.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_tune_kspace.txt b/doc/src/fix_tune_kspace.txt
index 60a34a26c9..b4e8472591 100644
--- a/doc/src/fix_tune_kspace.txt
+++ b/doc/src/fix_tune_kspace.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_vector.txt b/doc/src/fix_vector.txt
index 69c999fd1a..e1bfbe5738 100644
--- a/doc/src/fix_vector.txt
+++ b/doc/src/fix_vector.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_viscosity.txt b/doc/src/fix_viscosity.txt
index 8d73deb7c5..934da3efdd 100644
--- a/doc/src/fix_viscosity.txt
+++ b/doc/src/fix_viscosity.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_viscous.txt b/doc/src/fix_viscous.txt
index 7ff517aec1..c5a3ede0b2 100644
--- a/doc/src/fix_viscous.txt
+++ b/doc/src/fix_viscous.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_wall.txt b/doc/src/fix_wall.txt
index fcd920934f..2ac59d9588 100644
--- a/doc/src/fix_wall.txt
+++ b/doc/src/fix_wall.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_wall_body_polygon.txt b/doc/src/fix_wall_body_polygon.txt
index ebd25c2bbc..0946a85131 100644
--- a/doc/src/fix_wall_body_polygon.txt
+++ b/doc/src/fix_wall_body_polygon.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_wall_body_polyhedron.txt b/doc/src/fix_wall_body_polyhedron.txt
index d3d8bc35a3..407cf9fb33 100644
--- a/doc/src/fix_wall_body_polyhedron.txt
+++ b/doc/src/fix_wall_body_polyhedron.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_wall_ees.txt b/doc/src/fix_wall_ees.txt
index f141a19405..ae16ca40d2 100644
--- a/doc/src/fix_wall_ees.txt
+++ b/doc/src/fix_wall_ees.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_wall_gran.txt b/doc/src/fix_wall_gran.txt
index 9796c39459..6c2769fc12 100644
--- a/doc/src/fix_wall_gran.txt
+++ b/doc/src/fix_wall_gran.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_wall_gran_region.txt b/doc/src/fix_wall_gran_region.txt
index 908bcc3941..187214c1a3 100644
--- a/doc/src/fix_wall_gran_region.txt
+++ b/doc/src/fix_wall_gran_region.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_wall_piston.txt b/doc/src/fix_wall_piston.txt
index 26018329eb..eecf69ebf2 100644
--- a/doc/src/fix_wall_piston.txt
+++ b/doc/src/fix_wall_piston.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_wall_reflect.txt b/doc/src/fix_wall_reflect.txt
index 2956046e20..78be84eb63 100644
--- a/doc/src/fix_wall_reflect.txt
+++ b/doc/src/fix_wall_reflect.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_wall_region.txt b/doc/src/fix_wall_region.txt
index 8b3b3ff173..559a2f0d89 100644
--- a/doc/src/fix_wall_region.txt
+++ b/doc/src/fix_wall_region.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/fix_wall_srd.txt b/doc/src/fix_wall_srd.txt
index 3a8c2e41cd..3a50c45ab7 100644
--- a/doc/src/fix_wall_srd.txt
+++ b/doc/src/fix_wall_srd.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/group.txt b/doc/src/group.txt
index dddb0459e3..8472677372 100644
--- a/doc/src/group.txt
+++ b/doc/src/group.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/group2ndx.txt b/doc/src/group2ndx.txt
index 94d188399b..242d6a69a4 100644
--- a/doc/src/group2ndx.txt
+++ b/doc/src/group2ndx.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/if.txt b/doc/src/if.txt
index 52fad5aea7..513e451034 100644
--- a/doc/src/if.txt
+++ b/doc/src/if.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -65,9 +65,9 @@ above.
 NOTE: If a command itself requires a quoted argument (e.g. a
 "print"_print.html command), then double and single quotes can be used
 and nested in the usual manner, as in the examples above and below.
-See "Section 3.2"_Section_commands.html#cmd_2 of the manual for
-more details on using quotes in arguments.  Only one of level of
-nesting is allowed, but that should be sufficient for most use cases.
+The "Commands parse"_Commands_parse.html doc page has more details on
+using quotes in arguments.  Only one of level of nesting is allowed,
+but that should be sufficient for most use cases.
 
 Note that by using the line continuation character "&", the if command
 can be spread across many lines, though it is still a single command:
diff --git a/doc/src/improper_class2.txt b/doc/src/improper_class2.txt
index ef2abf5091..c38f73c64d 100644
--- a/doc/src/improper_class2.txt
+++ b/doc/src/improper_class2.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/improper_coeff.txt b/doc/src/improper_coeff.txt
index 5c01a23ae9..8ed65f9535 100644
--- a/doc/src/improper_coeff.txt
+++ b/doc/src/improper_coeff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -67,9 +67,9 @@ the style to display the formula it computes and coefficients
 specified by the associated "improper_coeff"_improper_coeff.html command.
 
 Note that there are also additional improper styles submitted by users
-which are included in the LAMMPS distribution.  The list of these with
-links to the individual styles are given in the improper section of
-"this page"_Section_commands.html#cmd_5.
+which are included in the LAMMPS distribution.  The full list of all
+improper styles is on the "Commands bond"_Commands_bond.html#improper
+doc page.
 
 "improper_style none"_improper_none.html - turn off improper interactions
 "improper_style hybrid"_improper_hybrid.html - define multiple styles of improper interactions :ul
diff --git a/doc/src/improper_cossq.txt b/doc/src/improper_cossq.txt
index 22ba990ba4..04aa45255c 100644
--- a/doc/src/improper_cossq.txt
+++ b/doc/src/improper_cossq.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/improper_cvff.txt b/doc/src/improper_cvff.txt
index 1662d93b14..d01faf2885 100644
--- a/doc/src/improper_cvff.txt
+++ b/doc/src/improper_cvff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/improper_distance.txt b/doc/src/improper_distance.txt
index 7d49d17c97..93235fe601 100644
--- a/doc/src/improper_distance.txt
+++ b/doc/src/improper_distance.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/improper_fourier.txt b/doc/src/improper_fourier.txt
index 99132b8931..78cc1b3f76 100644
--- a/doc/src/improper_fourier.txt
+++ b/doc/src/improper_fourier.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/improper_harmonic.txt b/doc/src/improper_harmonic.txt
index f37338e468..f398dc425f 100644
--- a/doc/src/improper_harmonic.txt
+++ b/doc/src/improper_harmonic.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/improper_hybrid.txt b/doc/src/improper_hybrid.txt
index 0c2beaef18..42afbe8577 100644
--- a/doc/src/improper_hybrid.txt
+++ b/doc/src/improper_hybrid.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/improper_inversion_harmonic.txt b/doc/src/improper_inversion_harmonic.txt
index 34683ca2bb..2c0f2f0af8 100644
--- a/doc/src/improper_inversion_harmonic.txt
+++ b/doc/src/improper_inversion_harmonic.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/improper_none.txt b/doc/src/improper_none.txt
index af9964c743..f97af101fc 100644
--- a/doc/src/improper_none.txt
+++ b/doc/src/improper_none.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/improper_ring.txt b/doc/src/improper_ring.txt
index 84c35f9f5c..60bbca170a 100644
--- a/doc/src/improper_ring.txt
+++ b/doc/src/improper_ring.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/improper_style.txt b/doc/src/improper_style.txt
index 861701590f..3d29b28ec4 100644
--- a/doc/src/improper_style.txt
+++ b/doc/src/improper_style.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -60,9 +60,9 @@ specified by the associated "improper_coeff"_improper_coeff.html
 command.
 
 Note that there are also additional improper styles submitted by users
-which are included in the LAMMPS distribution.  The list of these with
-links to the individual styles are given in the improper section of
-"this page"_Section_commands.html#cmd_5.
+which are included in the LAMMPS distribution.  The full list of all
+improper styles is on the "Commands bond"_Commands_bond.html#improper
+doc page.
 
 "improper_style none"_improper_none.html - turn off improper interactions
 "improper_style zero"_improper_zero.html - topology but no interactions
diff --git a/doc/src/improper_umbrella.txt b/doc/src/improper_umbrella.txt
index 59fee0a664..b05cf4b181 100644
--- a/doc/src/improper_umbrella.txt
+++ b/doc/src/improper_umbrella.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/improper_zero.txt b/doc/src/improper_zero.txt
index 2a298573d5..f3f3485b57 100644
--- a/doc/src/improper_zero.txt
+++ b/doc/src/improper_zero.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/include.txt b/doc/src/include.txt
index 95d08db352..c114056313 100644
--- a/doc/src/include.txt
+++ b/doc/src/include.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/info.txt b/doc/src/info.txt
index d5b5bd97b9..99211de4fb 100644
--- a/doc/src/info.txt
+++ b/doc/src/info.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/jump.txt b/doc/src/jump.txt
index 4e3799f7b1..b5afeb6559 100644
--- a/doc/src/jump.txt
+++ b/doc/src/jump.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/kspace_modify.txt b/doc/src/kspace_modify.txt
index 37c8c5b1d7..dd7b1e8dea 100644
--- a/doc/src/kspace_modify.txt
+++ b/doc/src/kspace_modify.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/kspace_style.txt b/doc/src/kspace_style.txt
index fa717b70ef..55ad4ab610 100644
--- a/doc/src/kspace_style.txt
+++ b/doc/src/kspace_style.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/label.txt b/doc/src/label.txt
index c6a573141b..adab44188c 100644
--- a/doc/src/label.txt
+++ b/doc/src/label.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index a25d6e0629..9cb2d8cd6c 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -9,7 +9,17 @@ Intro_opensource.html
 Intro_authors.html
 Intro_website.html
 Section_start.html
-Section_commands.html
+Commands.html
+Commands_input.html
+Commands_parse.html
+Commands_structure.html
+Commands_category.html
+Commands_all.html
+Commands_fix.html
+Commands_compute.html
+Commands_pair.html
+Commands_bond.html
+Commands_kspace.html
 Packages.html
 Packages_standard.html
 Packages_user.html
diff --git a/doc/src/lattice.txt b/doc/src/lattice.txt
index 7a90df1f5d..6f16dc5432 100644
--- a/doc/src/lattice.txt
+++ b/doc/src/lattice.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/log.txt b/doc/src/log.txt
index 92bb12e6db..7603768519 100644
--- a/doc/src/log.txt
+++ b/doc/src/log.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/manifolds.txt b/doc/src/manifolds.txt
index 1013d8fab6..194a755868 100644
--- a/doc/src/manifolds.txt
+++ b/doc/src/manifolds.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/mass.txt b/doc/src/mass.txt
index 4b75132ccf..c693963044 100644
--- a/doc/src/mass.txt
+++ b/doc/src/mass.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/min_modify.txt b/doc/src/min_modify.txt
index 73d142f5fa..9408eea167 100644
--- a/doc/src/min_modify.txt
+++ b/doc/src/min_modify.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/min_style.txt b/doc/src/min_style.txt
index 245ac5864c..4948a34864 100644
--- a/doc/src/min_style.txt
+++ b/doc/src/min_style.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 :line
 
 min_style command :h3
diff --git a/doc/src/minimize.txt b/doc/src/minimize.txt
index a3f2c5d0bf..910fc7f821 100644
--- a/doc/src/minimize.txt
+++ b/doc/src/minimize.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/molecule.txt b/doc/src/molecule.txt
index b2ad547cf0..88c6292d8b 100644
--- a/doc/src/molecule.txt
+++ b/doc/src/molecule.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/neb.txt b/doc/src/neb.txt
index 5c6053fca0..fbd77ee329 100644
--- a/doc/src/neb.txt
+++ b/doc/src/neb.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/neigh_modify.txt b/doc/src/neigh_modify.txt
index c4544cb29b..6c4218cff5 100644
--- a/doc/src/neigh_modify.txt
+++ b/doc/src/neigh_modify.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/neighbor.txt b/doc/src/neighbor.txt
index 062f79a5bb..7c7e7b05e5 100644
--- a/doc/src/neighbor.txt
+++ b/doc/src/neighbor.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/newton.txt b/doc/src/newton.txt
index a3e7f4fa91..fd7b536920 100644
--- a/doc/src/newton.txt
+++ b/doc/src/newton.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/next.txt b/doc/src/next.txt
index 08f73b896c..5a0b30b2a7 100644
--- a/doc/src/next.txt
+++ b/doc/src/next.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/package.txt b/doc/src/package.txt
index 81e1db9bd8..c2e7345bb7 100644
--- a/doc/src/package.txt
+++ b/doc/src/package.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_adp.txt b/doc/src/pair_adp.txt
index 1ba59b7732..382a97ecea 100644
--- a/doc/src/pair_adp.txt
+++ b/doc/src/pair_adp.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_agni.txt b/doc/src/pair_agni.txt
index 352e00249a..34f9900139 100644
--- a/doc/src/pair_agni.txt
+++ b/doc/src/pair_agni.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_airebo.txt b/doc/src/pair_airebo.txt
index b5add21f24..94a692226d 100644
--- a/doc/src/pair_airebo.txt
+++ b/doc/src/pair_airebo.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_awpmd.txt b/doc/src/pair_awpmd.txt
index fe0e3c952a..ec87101d0d 100644
--- a/doc/src/pair_awpmd.txt
+++ b/doc/src/pair_awpmd.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_beck.txt b/doc/src/pair_beck.txt
index 1aca4b4f9a..ca4186e27b 100644
--- a/doc/src/pair_beck.txt
+++ b/doc/src/pair_beck.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_body_nparticle.txt b/doc/src/pair_body_nparticle.txt
index 78a9f2bb38..9fb88102eb 100644
--- a/doc/src/pair_body_nparticle.txt
+++ b/doc/src/pair_body_nparticle.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt
index 19807fbe39..e724874032 100644
--- a/doc/src/pair_body_rounded_polygon.txt
+++ b/doc/src/pair_body_rounded_polygon.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_body_rounded_polyhedron.txt b/doc/src/pair_body_rounded_polyhedron.txt
index d70a86f881..0f8548d98e 100644
--- a/doc/src/pair_body_rounded_polyhedron.txt
+++ b/doc/src/pair_body_rounded_polyhedron.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_bop.txt b/doc/src/pair_bop.txt
index 2a611e4bd0..654a7eb0b3 100644
--- a/doc/src/pair_bop.txt
+++ b/doc/src/pair_bop.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_born.txt b/doc/src/pair_born.txt
index 143549cf2d..c408de6db6 100644
--- a/doc/src/pair_born.txt
+++ b/doc/src/pair_born.txt
@@ -3,7 +3,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_brownian.txt b/doc/src/pair_brownian.txt
index 8d30f0cec6..eaff85cbbc 100644
--- a/doc/src/pair_brownian.txt
+++ b/doc/src/pair_brownian.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_buck.txt b/doc/src/pair_buck.txt
index 2483a6c9e2..cc782c11cf 100644
--- a/doc/src/pair_buck.txt
+++ b/doc/src/pair_buck.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_buck6d_coul_gauss.txt b/doc/src/pair_buck6d_coul_gauss.txt
index 879972772b..485c35c6b2 100644
--- a/doc/src/pair_buck6d_coul_gauss.txt
+++ b/doc/src/pair_buck6d_coul_gauss.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_buck_long.txt b/doc/src/pair_buck_long.txt
index 94bf6a2d7c..551204f1a7 100644
--- a/doc/src/pair_buck_long.txt
+++ b/doc/src/pair_buck_long.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_charmm.txt b/doc/src/pair_charmm.txt
index af20661bbd..39c6f29b04 100644
--- a/doc/src/pair_charmm.txt
+++ b/doc/src/pair_charmm.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_class2.txt b/doc/src/pair_class2.txt
index e62971a645..104c51474c 100644
--- a/doc/src/pair_class2.txt
+++ b/doc/src/pair_class2.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_coeff.txt b/doc/src/pair_coeff.txt
index fe9238f423..63f85f23d5 100644
--- a/doc/src/pair_coeff.txt
+++ b/doc/src/pair_coeff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -111,9 +111,8 @@ Windows:
 :line
 
 The alphabetic list of pair styles defined in LAMMPS is given on the
-"pair_style"_pair_style.html doc page.  They are also given in more
-compact form in the pair section of "this
-page"_Section_commands.html#cmd_5.
+"pair_style"_pair_style.html doc page.  They are also listed in more
+compact form on the "Commands pair"_Commands_pair.html doc page.
 
 Click on the style to display the formula it computes, arguments
 specified in the pair_style command, and coefficients specified by the
@@ -121,15 +120,15 @@ associated "pair_coeff"_pair_coeff.html command.
 
 Note that there are also additional pair styles (not listed on the
 "pair_style"_pair_style.html doc page) submitted by users which are
-included in the LAMMPS distribution.  The list of these with links to
-the individual styles are given in the pair section of "this
-page"_Section_commands.html#cmd_5.
+included in the LAMMPS distribution.  The full list of all pair styles
+is on the "Commands pair"_Commands_pair.html doc page.
 
 There are also additional accelerated pair styles (not listed on the
 "pair_style"_pair_style.html doc page) included in the LAMMPS
-distribution for faster performance on CPUs and GPUs.  The list of
-these with links to the individual styles are given in the pair
-section of "this page"_Section_commands.html#cmd_5.
+distribution for faster performance on CPUs, GPUs, and KNLs.  The
+individual style names on the "Commands pair"_Commands_pair.html doc
+page are followed by one or more of (g,i,k,o,t) to indicate which
+accerlerated styles exist.
 
 :line
 
diff --git a/doc/src/pair_colloid.txt b/doc/src/pair_colloid.txt
index a7bb0db08a..08540cfee0 100644
--- a/doc/src/pair_colloid.txt
+++ b/doc/src/pair_colloid.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_comb.txt b/doc/src/pair_comb.txt
index 6949ca50c2..fc4cddbbae 100644
--- a/doc/src/pair_comb.txt
+++ b/doc/src/pair_comb.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_coul.txt b/doc/src/pair_coul.txt
index e2bc78a2e6..2fd9445785 100644
--- a/doc/src/pair_coul.txt
+++ b/doc/src/pair_coul.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_coul_diel.txt b/doc/src/pair_coul_diel.txt
index f651cb4b5e..14932c4835 100644
--- a/doc/src/pair_coul_diel.txt
+++ b/doc/src/pair_coul_diel.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_coul_shield.txt b/doc/src/pair_coul_shield.txt
index 19f69688d5..029e6e5b3b 100644
--- a/doc/src/pair_coul_shield.txt
+++ b/doc/src/pair_coul_shield.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_cs.txt b/doc/src/pair_cs.txt
index 86eb02b0d7..6540c4b8f0 100644
--- a/doc/src/pair_cs.txt
+++ b/doc/src/pair_cs.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_dipole.txt b/doc/src/pair_dipole.txt
index e7d196d599..1d8abc4521 100644
--- a/doc/src/pair_dipole.txt
+++ b/doc/src/pair_dipole.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_dpd.txt b/doc/src/pair_dpd.txt
index a36029ea63..1b636795d9 100644
--- a/doc/src/pair_dpd.txt
+++ b/doc/src/pair_dpd.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_dpd_fdt.txt b/doc/src/pair_dpd_fdt.txt
index 129d3c84af..0d180ba068 100644
--- a/doc/src/pair_dpd_fdt.txt
+++ b/doc/src/pair_dpd_fdt.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_dsmc.txt b/doc/src/pair_dsmc.txt
index 9e24100ab7..2478a96d5f 100644
--- a/doc/src/pair_dsmc.txt
+++ b/doc/src/pair_dsmc.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_eam.txt b/doc/src/pair_eam.txt
index b3c770179f..361dacb703 100644
--- a/doc/src/pair_eam.txt
+++ b/doc/src/pair_eam.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_edip.txt b/doc/src/pair_edip.txt
index f0d1927812..cce564856e 100644
--- a/doc/src/pair_edip.txt
+++ b/doc/src/pair_edip.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_eff.txt b/doc/src/pair_eff.txt
index ee7dc99932..a55860297e 100644
--- a/doc/src/pair_eff.txt
+++ b/doc/src/pair_eff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_eim.txt b/doc/src/pair_eim.txt
index 7f94d919f2..6490a859c1 100644
--- a/doc/src/pair_eim.txt
+++ b/doc/src/pair_eim.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_exp6_rx.txt b/doc/src/pair_exp6_rx.txt
index dec660fd1d..08ab1cf3c9 100644
--- a/doc/src/pair_exp6_rx.txt
+++ b/doc/src/pair_exp6_rx.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_extep.txt b/doc/src/pair_extep.txt
index 9a784e2501..3acad1132d 100644
--- a/doc/src/pair_extep.txt
+++ b/doc/src/pair_extep.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_gauss.txt b/doc/src/pair_gauss.txt
index 7716f89f17..9662a4f29c 100644
--- a/doc/src/pair_gauss.txt
+++ b/doc/src/pair_gauss.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_gayberne.txt b/doc/src/pair_gayberne.txt
index e9a98a0b84..af41f6879e 100644
--- a/doc/src/pair_gayberne.txt
+++ b/doc/src/pair_gayberne.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_gran.txt b/doc/src/pair_gran.txt
index 86b04f96de..55b00a172f 100644
--- a/doc/src/pair_gran.txt
+++ b/doc/src/pair_gran.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_gromacs.txt b/doc/src/pair_gromacs.txt
index 7daf805e2b..9f34ac8c43 100644
--- a/doc/src/pair_gromacs.txt
+++ b/doc/src/pair_gromacs.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_gw.txt b/doc/src/pair_gw.txt
index 8f1251cf1f..809ff008bc 100644
--- a/doc/src/pair_gw.txt
+++ b/doc/src/pair_gw.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_hbond_dreiding.txt b/doc/src/pair_hbond_dreiding.txt
index d641cb73ad..60b0b02174 100644
--- a/doc/src/pair_hbond_dreiding.txt
+++ b/doc/src/pair_hbond_dreiding.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_hybrid.txt b/doc/src/pair_hybrid.txt
index 9503256d26..9b36109c27 100644
--- a/doc/src/pair_hybrid.txt
+++ b/doc/src/pair_hybrid.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_ilp_graphene_hbn.txt b/doc/src/pair_ilp_graphene_hbn.txt
index dbc9c458e2..9c9304c4a7 100644
--- a/doc/src/pair_ilp_graphene_hbn.txt
+++ b/doc/src/pair_ilp_graphene_hbn.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_kim.txt b/doc/src/pair_kim.txt
index fc2c1405af..889c1e892f 100644
--- a/doc/src/pair_kim.txt
+++ b/doc/src/pair_kim.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_kolmogorov_crespi_full.txt b/doc/src/pair_kolmogorov_crespi_full.txt
index a16d123b89..8fc6bbff49 100644
--- a/doc/src/pair_kolmogorov_crespi_full.txt
+++ b/doc/src/pair_kolmogorov_crespi_full.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_kolmogorov_crespi_z.txt b/doc/src/pair_kolmogorov_crespi_z.txt
index 97f132eacd..7dad2e3701 100644
--- a/doc/src/pair_kolmogorov_crespi_z.txt
+++ b/doc/src/pair_kolmogorov_crespi_z.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_lcbop.txt b/doc/src/pair_lcbop.txt
index 148a1d47a0..ddf8551d56 100644
--- a/doc/src/pair_lcbop.txt
+++ b/doc/src/pair_lcbop.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_line_lj.txt b/doc/src/pair_line_lj.txt
index 44cfeb48e9..c2c6beb97f 100644
--- a/doc/src/pair_line_lj.txt
+++ b/doc/src/pair_line_lj.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_list.txt b/doc/src/pair_list.txt
index 653e8b0c2d..023cc0be4f 100644
--- a/doc/src/pair_list.txt
+++ b/doc/src/pair_list.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_lj.txt b/doc/src/pair_lj.txt
index a0f7effbb1..a55cb348d7 100644
--- a/doc/src/pair_lj.txt
+++ b/doc/src/pair_lj.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_lj96.txt b/doc/src/pair_lj96.txt
index a0a9971474..7c68e26ace 100644
--- a/doc/src/pair_lj96.txt
+++ b/doc/src/pair_lj96.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_lj_cubic.txt b/doc/src/pair_lj_cubic.txt
index c4e2af5062..d04a3d8b9d 100644
--- a/doc/src/pair_lj_cubic.txt
+++ b/doc/src/pair_lj_cubic.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_lj_expand.txt b/doc/src/pair_lj_expand.txt
index c156fefef2..3e9996da4d 100644
--- a/doc/src/pair_lj_expand.txt
+++ b/doc/src/pair_lj_expand.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_lj_long.txt b/doc/src/pair_lj_long.txt
index 0dd55b7e32..1ba3610f86 100644
--- a/doc/src/pair_lj_long.txt
+++ b/doc/src/pair_lj_long.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_lj_smooth.txt b/doc/src/pair_lj_smooth.txt
index 653520966b..575c023579 100644
--- a/doc/src/pair_lj_smooth.txt
+++ b/doc/src/pair_lj_smooth.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_lj_smooth_linear.txt b/doc/src/pair_lj_smooth_linear.txt
index aebde2e653..0fab768b8f 100644
--- a/doc/src/pair_lj_smooth_linear.txt
+++ b/doc/src/pair_lj_smooth_linear.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_lj_soft.txt b/doc/src/pair_lj_soft.txt
index 7add9f623d..d10fcd0472 100644
--- a/doc/src/pair_lj_soft.txt
+++ b/doc/src/pair_lj_soft.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_lubricate.txt b/doc/src/pair_lubricate.txt
index 2a16aa2a9d..e9a0a0d291 100644
--- a/doc/src/pair_lubricate.txt
+++ b/doc/src/pair_lubricate.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_lubricateU.txt b/doc/src/pair_lubricateU.txt
index 720a8539b8..6b74c208bf 100644
--- a/doc/src/pair_lubricateU.txt
+++ b/doc/src/pair_lubricateU.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_mdf.txt b/doc/src/pair_mdf.txt
index ca06f1bf8e..e5a8cac845 100644
--- a/doc/src/pair_mdf.txt
+++ b/doc/src/pair_mdf.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_meam.txt b/doc/src/pair_meam.txt
index c7449428bd..45f88f0bbe 100644
--- a/doc/src/pair_meam.txt
+++ b/doc/src/pair_meam.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_meam_spline.txt b/doc/src/pair_meam_spline.txt
index 74242e32b9..9615512041 100644
--- a/doc/src/pair_meam_spline.txt
+++ b/doc/src/pair_meam_spline.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_meam_sw_spline.txt b/doc/src/pair_meam_sw_spline.txt
index fa731799dd..ba0953a17c 100644
--- a/doc/src/pair_meam_sw_spline.txt
+++ b/doc/src/pair_meam_sw_spline.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_meso.txt b/doc/src/pair_meso.txt
index bcdf717d68..ad3880e642 100644
--- a/doc/src/pair_meso.txt
+++ b/doc/src/pair_meso.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_mgpt.txt b/doc/src/pair_mgpt.txt
index f8b0c9f071..09fe611686 100644
--- a/doc/src/pair_mgpt.txt
+++ b/doc/src/pair_mgpt.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_mie.txt b/doc/src/pair_mie.txt
index ad602db9f1..818e37272b 100644
--- a/doc/src/pair_mie.txt
+++ b/doc/src/pair_mie.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_modify.txt b/doc/src/pair_modify.txt
index 34dbb5bc3d..c043fde5a7 100644
--- a/doc/src/pair_modify.txt
+++ b/doc/src/pair_modify.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_momb.txt b/doc/src/pair_momb.txt
index 77c4f184d9..545b650f75 100644
--- a/doc/src/pair_momb.txt
+++ b/doc/src/pair_momb.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_morse.txt b/doc/src/pair_morse.txt
index 34876011a1..85a42986ec 100644
--- a/doc/src/pair_morse.txt
+++ b/doc/src/pair_morse.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_multi_lucy.txt b/doc/src/pair_multi_lucy.txt
index 38fd1ede4a..31d52a58c8 100644
--- a/doc/src/pair_multi_lucy.txt
+++ b/doc/src/pair_multi_lucy.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_multi_lucy_rx.txt b/doc/src/pair_multi_lucy_rx.txt
index b043030907..e09dde3f80 100644
--- a/doc/src/pair_multi_lucy_rx.txt
+++ b/doc/src/pair_multi_lucy_rx.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_nb3b_harmonic.txt b/doc/src/pair_nb3b_harmonic.txt
index e6e103f517..720b9ea2a1 100644
--- a/doc/src/pair_nb3b_harmonic.txt
+++ b/doc/src/pair_nb3b_harmonic.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_nm.txt b/doc/src/pair_nm.txt
index 08c3393993..355bfd5573 100644
--- a/doc/src/pair_nm.txt
+++ b/doc/src/pair_nm.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_none.txt b/doc/src/pair_none.txt
index f4e9525198..960dc05d97 100644
--- a/doc/src/pair_none.txt
+++ b/doc/src/pair_none.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_oxdna.txt b/doc/src/pair_oxdna.txt
index f272d15a86..5ec9915297 100644
--- a/doc/src/pair_oxdna.txt
+++ b/doc/src/pair_oxdna.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_oxdna2.txt b/doc/src/pair_oxdna2.txt
index 1b55031b2c..a1d2cfdb7c 100644
--- a/doc/src/pair_oxdna2.txt
+++ b/doc/src/pair_oxdna2.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_peri.txt b/doc/src/pair_peri.txt
index 4327003057..14abd4541e 100644
--- a/doc/src/pair_peri.txt
+++ b/doc/src/pair_peri.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_polymorphic.txt b/doc/src/pair_polymorphic.txt
index c088e8bb22..eb0c30f249 100644
--- a/doc/src/pair_polymorphic.txt
+++ b/doc/src/pair_polymorphic.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_python.txt b/doc/src/pair_python.txt
index 2f8ed7a27c..1433557e03 100644
--- a/doc/src/pair_python.txt
+++ b/doc/src/pair_python.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_quip.txt b/doc/src/pair_quip.txt
index 9436b0c4ed..3570a52801 100644
--- a/doc/src/pair_quip.txt
+++ b/doc/src/pair_quip.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_reax.txt b/doc/src/pair_reax.txt
index 1d13f93706..a3b84955cd 100644
--- a/doc/src/pair_reax.txt
+++ b/doc/src/pair_reax.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_reaxc.txt b/doc/src/pair_reaxc.txt
index 8d8c7e84e7..ec57548640 100644
--- a/doc/src/pair_reaxc.txt
+++ b/doc/src/pair_reaxc.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_resquared.txt b/doc/src/pair_resquared.txt
index 6ea5c73c0d..6e72408ebc 100644
--- a/doc/src/pair_resquared.txt
+++ b/doc/src/pair_resquared.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_sdk.txt b/doc/src/pair_sdk.txt
index 4cd56bc43d..ccf704b6f7 100644
--- a/doc/src/pair_sdk.txt
+++ b/doc/src/pair_sdk.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_smd_hertz.txt b/doc/src/pair_smd_hertz.txt
index eeaa3387a4..f2d633903a 100644
--- a/doc/src/pair_smd_hertz.txt
+++ b/doc/src/pair_smd_hertz.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_smd_tlsph.txt b/doc/src/pair_smd_tlsph.txt
index f73acf74ee..3aeaa31553 100644
--- a/doc/src/pair_smd_tlsph.txt
+++ b/doc/src/pair_smd_tlsph.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_smd_triangulated_surface.txt b/doc/src/pair_smd_triangulated_surface.txt
index c32bf3a22e..65526cfba8 100644
--- a/doc/src/pair_smd_triangulated_surface.txt
+++ b/doc/src/pair_smd_triangulated_surface.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_smd_ulsph.txt b/doc/src/pair_smd_ulsph.txt
index 268fe78d02..a5bda54d5f 100644
--- a/doc/src/pair_smd_ulsph.txt
+++ b/doc/src/pair_smd_ulsph.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_smtbq.txt b/doc/src/pair_smtbq.txt
index c8d6b21b3f..c70202c2e1 100644
--- a/doc/src/pair_smtbq.txt
+++ b/doc/src/pair_smtbq.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_snap.txt b/doc/src/pair_snap.txt
index c3d6e67e82..f9bd8910e4 100644
--- a/doc/src/pair_snap.txt
+++ b/doc/src/pair_snap.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_soft.txt b/doc/src/pair_soft.txt
index adbfa596c9..374711825b 100644
--- a/doc/src/pair_soft.txt
+++ b/doc/src/pair_soft.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_sph_heatconduction.txt b/doc/src/pair_sph_heatconduction.txt
index 2387056a1b..d19c28a3cb 100644
--- a/doc/src/pair_sph_heatconduction.txt
+++ b/doc/src/pair_sph_heatconduction.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_sph_idealgas.txt b/doc/src/pair_sph_idealgas.txt
index 957f901425..a670949a89 100644
--- a/doc/src/pair_sph_idealgas.txt
+++ b/doc/src/pair_sph_idealgas.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_sph_lj.txt b/doc/src/pair_sph_lj.txt
index ef89c4ad3e..152e6cf8a2 100644
--- a/doc/src/pair_sph_lj.txt
+++ b/doc/src/pair_sph_lj.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_sph_rhosum.txt b/doc/src/pair_sph_rhosum.txt
index 352e717f76..3cd1c5abb2 100644
--- a/doc/src/pair_sph_rhosum.txt
+++ b/doc/src/pair_sph_rhosum.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_sph_taitwater.txt b/doc/src/pair_sph_taitwater.txt
index 9177ca80b8..7b9a8188f2 100644
--- a/doc/src/pair_sph_taitwater.txt
+++ b/doc/src/pair_sph_taitwater.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_sph_taitwater_morris.txt b/doc/src/pair_sph_taitwater_morris.txt
index e6c5a6bb20..02f16d8982 100644
--- a/doc/src/pair_sph_taitwater_morris.txt
+++ b/doc/src/pair_sph_taitwater_morris.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_spin_dmi.txt b/doc/src/pair_spin_dmi.txt
index a1d0cb2265..375e59fe89 100644
--- a/doc/src/pair_spin_dmi.txt
+++ b/doc/src/pair_spin_dmi.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_spin_exchange.txt b/doc/src/pair_spin_exchange.txt
index a4f37a98eb..24eb635b81 100644
--- a/doc/src/pair_spin_exchange.txt
+++ b/doc/src/pair_spin_exchange.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_spin_magelec.txt b/doc/src/pair_spin_magelec.txt
index 8ba24c46af..b338fae5dc 100644
--- a/doc/src/pair_spin_magelec.txt
+++ b/doc/src/pair_spin_magelec.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_spin_neel.txt b/doc/src/pair_spin_neel.txt
index 8551f8d636..0967632ed2 100644
--- a/doc/src/pair_spin_neel.txt
+++ b/doc/src/pair_spin_neel.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_srp.txt b/doc/src/pair_srp.txt
index e7f1e00d10..e784ac3d17 100644
--- a/doc/src/pair_srp.txt
+++ b/doc/src/pair_srp.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_style.txt b/doc/src/pair_style.txt
index 2763eb3d66..cd39513329 100644
--- a/doc/src/pair_style.txt
+++ b/doc/src/pair_style.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -78,22 +78,22 @@ previously specified pair_coeff values.
 :line
 
 Here is an alphabetic list of pair styles defined in LAMMPS.  They are
-also given in more compact form in the pair section of "this
-page"_Section_commands.html#cmd_5.
+also listed in more compact form on the "Commands
+pair"_Commands_pair.html doc page.
 
 Click on the style to display the formula it computes, arguments
 specified in the pair_style command, and coefficients specified by the
 associated "pair_coeff"_pair_coeff.html command.
 
 There are also additional pair styles (not listed here) submitted by
-users which are included in the LAMMPS distribution.  The list of
-these with links to the individual styles are given in the pair
-section of "this page"_Section_commands.html#cmd_5.
+users which are included in the LAMMPS distribution.  The full list of
+all pair styles is on the "Commands pair"_Commands_pair.html doc page.
 
 There are also additional accelerated pair styles (not listed here)
-included in the LAMMPS distribution for faster performance on CPUs and
-GPUs.  The list of these with links to the individual styles are given
-in the pair section of "this page"_Section_commands.html#cmd_5.
+included in the LAMMPS distribution for faster performance on CPUs,
+GPUs, and KNLs.  The individual style names on the "Commands
+pair"_Commands_pair.html doc page are followed by one or more of
+(g,i,k,o,t) to indicate which accerlerated styles exist.
 
 "pair_style none"_pair_none.html - turn off pairwise interactions
 "pair_style hybrid"_pair_hybrid.html - multiple styles of pairwise interactions
diff --git a/doc/src/pair_sw.txt b/doc/src/pair_sw.txt
index 7c9ce4a4f9..e6741791df 100644
--- a/doc/src/pair_sw.txt
+++ b/doc/src/pair_sw.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_table.txt b/doc/src/pair_table.txt
index f5e69a6d54..5e3c1f5ff6 100644
--- a/doc/src/pair_table.txt
+++ b/doc/src/pair_table.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_table_rx.txt b/doc/src/pair_table_rx.txt
index 52760c396b..41be067bac 100644
--- a/doc/src/pair_table_rx.txt
+++ b/doc/src/pair_table_rx.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_tersoff.txt b/doc/src/pair_tersoff.txt
index 70fe207f0a..821c38f3e4 100644
--- a/doc/src/pair_tersoff.txt
+++ b/doc/src/pair_tersoff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_tersoff_mod.txt b/doc/src/pair_tersoff_mod.txt
index aced6d40d6..ac1f79a80b 100644
--- a/doc/src/pair_tersoff_mod.txt
+++ b/doc/src/pair_tersoff_mod.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_tersoff_zbl.txt b/doc/src/pair_tersoff_zbl.txt
index 838c2f39cf..a89d4e3ea1 100644
--- a/doc/src/pair_tersoff_zbl.txt
+++ b/doc/src/pair_tersoff_zbl.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_thole.txt b/doc/src/pair_thole.txt
index 42c58e9882..7ce8b7cf4b 100644
--- a/doc/src/pair_thole.txt
+++ b/doc/src/pair_thole.txt
@@ -9,7 +9,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_tri_lj.txt b/doc/src/pair_tri_lj.txt
index 42a5bbdfe2..3915ffc238 100644
--- a/doc/src/pair_tri_lj.txt
+++ b/doc/src/pair_tri_lj.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_ufm.txt b/doc/src/pair_ufm.txt
index 5af8741502..dbc6fd0664 100644
--- a/doc/src/pair_ufm.txt
+++ b/doc/src/pair_ufm.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_vashishta.txt b/doc/src/pair_vashishta.txt
index e90a9d8f50..2e404e8bef 100644
--- a/doc/src/pair_vashishta.txt
+++ b/doc/src/pair_vashishta.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_write.txt b/doc/src/pair_write.txt
index 9f5970fcbc..48ad76e76e 100644
--- a/doc/src/pair_write.txt
+++ b/doc/src/pair_write.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_yukawa.txt b/doc/src/pair_yukawa.txt
index 979165dda0..5a8363260a 100644
--- a/doc/src/pair_yukawa.txt
+++ b/doc/src/pair_yukawa.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_yukawa_colloid.txt b/doc/src/pair_yukawa_colloid.txt
index a1752c261e..515062d9eb 100644
--- a/doc/src/pair_yukawa_colloid.txt
+++ b/doc/src/pair_yukawa_colloid.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_zbl.txt b/doc/src/pair_zbl.txt
index 0507083295..1472c7b672 100644
--- a/doc/src/pair_zbl.txt
+++ b/doc/src/pair_zbl.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/pair_zero.txt b/doc/src/pair_zero.txt
index e58b33c75f..b324003bd1 100644
--- a/doc/src/pair_zero.txt
+++ b/doc/src/pair_zero.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/partition.txt b/doc/src/partition.txt
index 610eee99b3..d4fe06c098 100644
--- a/doc/src/partition.txt
+++ b/doc/src/partition.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/prd.txt b/doc/src/prd.txt
index f298d83385..b2145ebad1 100644
--- a/doc/src/prd.txt
+++ b/doc/src/prd.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/print.txt b/doc/src/print.txt
index 77e0c7cfd3..476d4104fa 100644
--- a/doc/src/print.txt
+++ b/doc/src/print.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/processors.txt b/doc/src/processors.txt
index e54b2cede3..df13ae1f61 100644
--- a/doc/src/processors.txt
+++ b/doc/src/processors.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/python.txt b/doc/src/python.txt
index d670fcc77f..4f4faca8f4 100644
--- a/doc/src/python.txt
+++ b/doc/src/python.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -199,9 +199,9 @@ The {here} keyword does the same thing, except that the Python code
 follows as a single argument to the {here} keyword.  This can be done
 using triple quotes as delimiters, as in the examples above.  This
 allows Python code to be listed verbatim in your input script, with
-proper indentation, blank lines, and comments, as desired.  See
-"Section 3.2"_Section_commands.html#cmd_2, for an explanation of how
-triple quotes can be used as part of input script syntax.
+proper indentation, blank lines, and comments, as desired.  See the
+"Commands parse"_Commands_parse.html doc page, for an explanation of
+how triple quotes can be used as part of input script syntax.
 
 The {exists} keyword takes no argument.  It means that Python code
 containing the required Python function defined by the {func} setting,
diff --git a/doc/src/quit.txt b/doc/src/quit.txt
index 843d3de7f3..802df97711 100644
--- a/doc/src/quit.txt
+++ b/doc/src/quit.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/read_data.txt b/doc/src/read_data.txt
index 4f6a3988b9..ded51a4d99 100644
--- a/doc/src/read_data.txt
+++ b/doc/src/read_data.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/read_dump.txt b/doc/src/read_dump.txt
index 21c6df5017..a3c0733e07 100644
--- a/doc/src/read_dump.txt
+++ b/doc/src/read_dump.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/read_restart.txt b/doc/src/read_restart.txt
index 6f6a828229..488c36f020 100644
--- a/doc/src/read_restart.txt
+++ b/doc/src/read_restart.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/region.txt b/doc/src/region.txt
index b32c09ed6f..21396ae1fd 100644
--- a/doc/src/region.txt
+++ b/doc/src/region.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/replicate.txt b/doc/src/replicate.txt
index 08523ecdd8..0195dce911 100644
--- a/doc/src/replicate.txt
+++ b/doc/src/replicate.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/rerun.txt b/doc/src/rerun.txt
index edf94cc711..8eb3ebd5a1 100644
--- a/doc/src/rerun.txt
+++ b/doc/src/rerun.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/reset_ids.txt b/doc/src/reset_ids.txt
index 8655a9d54f..391b51fde9 100644
--- a/doc/src/reset_ids.txt
+++ b/doc/src/reset_ids.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/reset_timestep.txt b/doc/src/reset_timestep.txt
index 79a5812ca1..0d518655fb 100644
--- a/doc/src/reset_timestep.txt
+++ b/doc/src/reset_timestep.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/restart.txt b/doc/src/restart.txt
index 7c39ae1404..6f2dc5ca46 100644
--- a/doc/src/restart.txt
+++ b/doc/src/restart.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/run.txt b/doc/src/run.txt
index 02860c0b97..c7c73463d9 100644
--- a/doc/src/run.txt
+++ b/doc/src/run.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/run_style.txt b/doc/src/run_style.txt
index 6f1f719d64..deee51cfd3 100644
--- a/doc/src/run_style.txt
+++ b/doc/src/run_style.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/set.txt b/doc/src/set.txt
index d2235d5c32..b83ad54f4e 100644
--- a/doc/src/set.txt
+++ b/doc/src/set.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/shell.txt b/doc/src/shell.txt
index 205164f874..d274f498e5 100644
--- a/doc/src/shell.txt
+++ b/doc/src/shell.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/special_bonds.txt b/doc/src/special_bonds.txt
index 1021c4856b..a57b61664d 100644
--- a/doc/src/special_bonds.txt
+++ b/doc/src/special_bonds.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/suffix.txt b/doc/src/suffix.txt
index 74f69b6dfe..bb0619f1e0 100644
--- a/doc/src/suffix.txt
+++ b/doc/src/suffix.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/tad.txt b/doc/src/tad.txt
index 9ffa24d012..a26ff79318 100644
--- a/doc/src/tad.txt
+++ b/doc/src/tad.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/temper.txt b/doc/src/temper.txt
index e65f59ebed..c7b482acc6 100644
--- a/doc/src/temper.txt
+++ b/doc/src/temper.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/temper_grem.txt b/doc/src/temper_grem.txt
index 6145c8704c..9cb1bab784 100644
--- a/doc/src/temper_grem.txt
+++ b/doc/src/temper_grem.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/temper_npt.txt b/doc/src/temper_npt.txt
index 4ad49f9e33..4eee225de7 100644
--- a/doc/src/temper_npt.txt
+++ b/doc/src/temper_npt.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 temper/npt command :h3
diff --git a/doc/src/thermo.txt b/doc/src/thermo.txt
index 1d5d34995c..5f12f98707 100644
--- a/doc/src/thermo.txt
+++ b/doc/src/thermo.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/thermo_modify.txt b/doc/src/thermo_modify.txt
index e9aca0f20a..ca2957de77 100644
--- a/doc/src/thermo_modify.txt
+++ b/doc/src/thermo_modify.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/thermo_style.txt b/doc/src/thermo_style.txt
index 64e0785586..cbc2612f28 100644
--- a/doc/src/thermo_style.txt
+++ b/doc/src/thermo_style.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/timer.txt b/doc/src/timer.txt
index 768c3e1353..10737dbda0 100644
--- a/doc/src/timer.txt
+++ b/doc/src/timer.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/timestep.txt b/doc/src/timestep.txt
index 639ad6f311..ee0ace05b9 100644
--- a/doc/src/timestep.txt
+++ b/doc/src/timestep.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/uncompute.txt b/doc/src/uncompute.txt
index 49b46781d7..4c788d4722 100644
--- a/doc/src/uncompute.txt
+++ b/doc/src/uncompute.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/undump.txt b/doc/src/undump.txt
index a2a371aca5..cc3d8b9103 100644
--- a/doc/src/undump.txt
+++ b/doc/src/undump.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/unfix.txt b/doc/src/unfix.txt
index dcc4499b20..9608b39c7e 100644
--- a/doc/src/unfix.txt
+++ b/doc/src/unfix.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/units.txt b/doc/src/units.txt
index 0b856dcc68..8df8fe6810 100644
--- a/doc/src/units.txt
+++ b/doc/src/units.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/variable.txt b/doc/src/variable.txt
index 717c77c079..c6598ccb51 100644
--- a/doc/src/variable.txt
+++ b/doc/src/variable.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -124,8 +124,8 @@ provide, so that the variable gets its value from the evaluation of
 the Python code.  Variables of style {internal} are used by a few
 commands which set their value directly.
 
-NOTE: As discussed in "Section 3.2"_Section_commands.html#cmd_2 of the
-manual, an input script can use "immediate" variables, specified as
+NOTE: As discussed on the "Commands parse"_Commands_parse.html doc
+page, an input script can use "immediate" variables, specified as
 $(formula) with parenthesis, where the formula has the same syntax as
 equal-style variables described on this page.  This is a convenient
 way to evaluate a formula immediately without using the variable
@@ -198,7 +198,7 @@ the same thing.
 
 :line
 
-"This section"_Section_commands.html#cmd_2 of the manual explains how
+The "Commands parse"_Commands_parse.html doc page explains how
 occurrences of a variable name in an input script line are replaced by
 the variable's string.  The variable name can be referenced as $x if
 the name "x" is a single character, or as $\{LoopVar\} if the name
@@ -312,8 +312,8 @@ If you simply wish to print a variable value with desired precision to
 the screen or logfile via the "print"_print.html or "fix
 print"_fix_print.html commands, you can also do this by specifying an
 "immediate" variable with a trailing colon and format string, as part
-of the string argument of those commands.  This is explained in
-"Section 3.2"_Section_commands.html#cmd_2.
+of the string argument of those commands.  This is explained on the
+"Commands parse"_Commands_parse.html doc page.
 
 For the {getenv} style, a single string is assigned to the variable
 which should be the name of an environment variable.  When the
@@ -1119,24 +1119,23 @@ Vectors" discussion above.
 
 If you want an equal-style variable to be evaluated immediately, it
 may be the case that you do not need to define a variable at all.  See
-"Section 3.2"_Section_commands.html#cmd_2 of the manual, which
-describes the use of "immediate" variables in an input script,
-specified as $(formula) with parenthesis, where the formula has the
-same syntax as equal-style variables described on this page.  This
-effectively evaluates a formula immediately without using the variable
-command to define a named variable.
+the "Commands parse"_Commands_parse.html doc page for info on how to
+use "immediate" variables in an input script, specified as $(formula)
+with parenthesis, where the formula has the same syntax as equal-style
+variables described on this page.  This effectively evaluates a
+formula immediately without using the variable command to define a
+named variable.
 
 More generally, there is a difference between referencing a variable
 with a leading $ sign (e.g. $x or $\{abc\}) versus with a leading "v_"
 (e.g. v_x or v_abc).  The former can be used in any input script
 command, including a variable command.  The input script parser
 evaluates the reference variable immediately and substitutes its value
-into the command.  As explained in "Section
-3.2"_Section_commands.html#cmd_2 for "Parsing rules", you can also use
-un-named "immediate" variables for this purpose.  For example, a
-string like this $((xlo+xhi)/2+sqrt(v_area)) in an input script
-command evaluates the string between the parenthesis as an equal-style
-variable formula.
+into the command.  As explained on the "Commands
+parse"_Commands_parse.html doc page, you can also use un-named
+"immediate" variables for this purpose.  For example, a string like
+this $((xlo+xhi)/2+sqrt(v_area)) in an input script command evaluates
+the string between the parenthesis as an equal-style variable formula.
 
 Referencing a variable with a leading "v_" is an optional or required
 kind of argument for some commands (e.g. the "fix
@@ -1180,10 +1179,9 @@ quotes if it contains variables preceded by $ signs.  For example,
 
 variable vratio equal "$\{vfinal\}/$\{v0\}" :pre
 
-This is because the quotes prevent variable substitution (see "this
-section"_Section_commands.html#cmd_2 on parsing input script
-commands), and thus an error will occur when the formula for "vratio"
-is evaluated later.
+This is because the quotes prevent variable substitution (explained on
+the "Commands parse"_Commands_parse.html doc page), and thus an error
+will occur when the formula for "vratio" is evaluated later.
 
 :line
 
diff --git a/doc/src/velocity.txt b/doc/src/velocity.txt
index 057f0054be..96d3fa6dc4 100644
--- a/doc/src/velocity.txt
+++ b/doc/src/velocity.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/write_coeff.txt b/doc/src/write_coeff.txt
index 764e119a9d..5dc4b331de 100644
--- a/doc/src/write_coeff.txt
+++ b/doc/src/write_coeff.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/write_data.txt b/doc/src/write_data.txt
index c76f20319c..d8a33f457f 100644
--- a/doc/src/write_data.txt
+++ b/doc/src/write_data.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/write_dump.txt b/doc/src/write_dump.txt
index 840716085f..e676979001 100644
--- a/doc/src/write_dump.txt
+++ b/doc/src/write_dump.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
diff --git a/doc/src/write_restart.txt b/doc/src/write_restart.txt
index ff3b652dba..3935a5d538 100644
--- a/doc/src/write_restart.txt
+++ b/doc/src/write_restart.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
-- 
GitLab


From 6de3dab72a152652acb6d5591f84401fd2b9366e Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Sun, 5 Aug 2018 23:59:52 -0400
Subject: [PATCH 144/243] Remove duplicates

---
 doc/src/body.txt           | 456 -------------------------------------
 doc/src/lammps.book        |   4 -
 doc/src/lammps_support.txt |   7 -
 doc/src/manifolds.txt      |  41 ----
 4 files changed, 508 deletions(-)
 delete mode 100644 doc/src/body.txt
 delete mode 100644 doc/src/lammps_support.txt
 delete mode 100644 doc/src/manifolds.txt

diff --git a/doc/src/body.txt b/doc/src/body.txt
deleted file mode 100644
index 4de5b52911..0000000000
--- a/doc/src/body.txt
+++ /dev/null
@@ -1,456 +0,0 @@
-"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
-
-:link(lws,http://lammps.sandia.gov)
-:link(ld,Manual.html)
-:link(lc,Commands_all.html)
-
-:line
-
-Body particles :h2
-
-[Overview:]
-
-This doc page is not about a LAMMPS input script command, but about
-body particles, which are generalized finite-size particles.
-Individual body particles can represent complex entities, such as
-surface meshes of discrete points, collections of sub-particles,
-deformable objects, etc.  Note that other kinds of finite-size
-spherical and aspherical particles are also supported by LAMMPS, such
-as spheres, ellipsoids, line segments, and triangles, but they are
-simpler entities that body particles.  See the "Howto
-body"_Howto_.html doc page for a general overview of all
-these particle types.
-
-Body particles are used via the "atom_style body"_atom_style.html
-command.  It takes a body style as an argument.  The current body
-styles supported by LAMMPS are as follows.  The name in the first
-column is used as the {bstyle} argument for the "atom_style
-body"_atom_style.html command.
-
-{nparticle} : rigid body with N sub-particles
-{rounded/polygon} : 2d polygons with N vertices
-{rounded/polyhedron} : 3d polyhedra with N vertices, E edges and F faces :tb(s=:)
-
-The body style determines what attributes are stored for each body and
-thus how they can be used to compute pairwise body/body or
-bond/non-body (point particle) interactions.  More details of each
-style are described below.
-
-More styles may be added in the future.  See the "Modify
-body"_Modify_body.html doc page for details on how to add a new body
-style to the code.
-
-:line
-
-[When to use body particles:]
-
-You should not use body particles to model a rigid body made of
-simpler particles (e.g. point, sphere, ellipsoid, line segment,
-triangular particles), if the interaction between pairs of rigid
-bodies is just the summation of pairwise interactions between the
-simpler particles.  LAMMPS already supports this kind of model via the
-"fix rigid"_fix_rigid.html command.  Any of the numerous pair styles
-that compute interactions between simpler particles can be used.  The
-"fix rigid"_fix_rigid.html command time integrates the motion of the
-rigid bodies.  All of the standard LAMMPS commands for thermostatting,
-adding constraints, performing output, etc will operate as expected on
-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, 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,
-it would need to loop over the entire collection of interactions
-between pairs of simple particles within the two bodies, each time a
-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, 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
-
-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
-
-"fix nve/body"_fix_nve_body.html : integrate motion of a body particle in NVE ensemble
-"fix nvt/body"_fix_nvt_body.html : ditto for NVT ensemble
-"fix npt/body"_fix_npt_body.html : ditto for NPT ensemble
-"fix nph/body"_fix_nph_body.html : ditto for NPH ensemble
-"compute body/local"_compute_body_local.html : store sub-particle attributes of a body particle
-"compute temp/body"_compute_temp_body.html : compute temperature of body particles
-"dump local"_dump.html : output sub-particle attributes of a body particle
-"dump image"_dump_image.html : output body particle attributes as an image :tb(s=:)
-
-The pair styles defined for use with specific body styles are listed
-in the sections below.
-
-:line
-
-[Specifics of body style nparticle:]
-
-The {nparticle} body style represents body particles as a rigid body
-with a variable number N of sub-particles.  It is provided as a
-vanilla, prototypical example of a body particle, although as
-mentioned above, the "fix rigid"_fix_rigid.html command already
-duplicates its functionality.
-
-The atom_style body command for this body style takes two additional
-arguments:
-
-atom_style body nparticle Nmin Nmax
-Nmin = minimum # of sub-particles in any body in the system
-Nmax = maximum # of sub-particles in any body in the system :pre
-
-The Nmin and Nmax arguments are used to bound the size of data
-structures used internally by each particle.
-
-When the "read_data"_read_data.html command reads a data file for this
-body style, the following information must be provided for each entry
-in the {Bodies} section of the data file:
-
-atom-ID 1 M
-N
-ixx iyy izz ixy ixz iyz
-x1 y1 z1
-...
-xN yN zN :pre
-
-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
-as many lines as you wish; see the "read_data"_read_data.html command
-for more details.
-
-The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the
-values consistent with the current orientation of the rigid body
-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 sub-particle 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, as is the total mass
-of the body particle.
-
-The "pair_style body/nparticle"_pair_body_nparticle.html command can be used with this
-body style to compute body/body and body/non-body interactions.
-
-For output purposes via the "compute
-body/local"_compute_body_local.html and "dump local"_dump.html
-commands, this body style produces one datum for each of the N
-sub-particles in a body particle.  The datum has 3 values:
-
-1 = x position of sub-particle
-2 = y position of sub-particle
-3 = z position of sub-particle :pre
-
-These values are the current position of the sub-particle within the
-simulation domain, not a displacement from the center-of-mass (COM) of
-the body particle itself.  These values are calculated using the
-current COM and orientation of the body particle.
-
-For images created by the "dump image"_dump_image.html command, if the
-{body} keyword is set, then each body particle is drawn as a
-collection of spheres, one for each sub-particle.  The size of each
-sphere is determined by the {bflag1} parameter for the {body} keyword.
-The {bflag2} argument is ignored.
-
-:line
-
-[Specifics of body style rounded/polygon:]
-
-The {rounded/polygon} body style represents body particles as a 2d
-polygon with a variable number of N vertices.  This style can only be
-used for 2d models; see the "boundary"_boundary.html command.  See the
-"pair_style body/rounded/polygon" doc page for a diagram of two
-squares with rounded circles at the vertices.  Special cases for N = 1
-(circle) and N = 2 (rod with rounded ends) can also be specified.
-
-One use of this body style is for 2d discrete element models, as
-described in "Fraige"_#body-Fraige.
-
-Similar to body style {nparticle}, the atom_style body command for
-this body style takes two additional arguments:
-
-atom_style body rounded/polygon Nmin Nmax
-Nmin = minimum # of vertices in any body in the system
-Nmax = maximum # of vertices in any body in the system :pre
-
-The Nmin and Nmax arguments are used to bound the size of data
-structures used internally by each particle.
-
-When the "read_data"_read_data.html command reads a data file for this
-body style, the following information must be provided for each entry
-in the {Bodies} section of the data file:
-
-atom-ID 1 M
-N
-ixx iyy izz ixy ixz iyz
-x1 y1 z1
-...
-xN yN zN
-i j j k k ...
-diameter :pre
-
-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 (with z = 0.0 for each), followed by
-2N vertex indices corresponding to the end points of the N edges,
-followed by a single diameter value = the rounded diameter of the
-circle that surrounds each vertex. The diameter value can be different
-for each body particle. These floating-point values can be listed on
-as many lines as you wish; see the "read_data"_read_data.html command
-for more details.
-
-The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the
-values consistent with the current orientation of the rigid body
-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 square particle
-whose edge length is sqrt(2) and rounded diameter is 1.0.  The
-orientation of the square is aligned with the xy coordinate axes which
-is consistent with the 6 moments of inertia: ixx iyy izz ixy ixz iyz =
-1 1 4 0 0 0. Note that only Izz matters in 2D simulations.
-
-3 1 27
-4
-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
-
-A rod in 2D, whose length is 4.0, mass 1.0, rounded at two ends
-by circles of diameter 0.5, is specified as follows:
-
-1 1 13
-2
-1 1 1.33333 0 0 0
--2 0 0
-2 0 0
-0.5 :pre
-
-A disk, whose diameter is 3.0, mass 1.0, is specified as follows:
-
-1 1 10
-1
-1 1 4.5 0 0 0
-0 0 0
-3.0 :pre
-
-The "pair_style body/rounded/polygon"_pair_body_rounded_polygon.html
-command can be used with this body style to compute body/body
-interactions.  The "fix wall/body/polygon"_fix_wall_body_polygon.html
-command can be used with this body style to compute the interaction of
-body particles with a wall.
-
-:line
-
-[Specifics of body style rounded/polyhedron:]
-
-The {rounded/polyhedron} body style represents body particles as a 3d
-polyhedron with a variable number of N vertices, E edges and F faces.
-This style can only be used for 3d models; see the
-"boundary"_boundary.html command.  See the "pair_style
-body/rounded/polygon" doc page for a diagram of a two 2d squares with
-rounded circles at the vertices.  A 3d cube with rounded spheres at
-the 8 vertices and 12 rounded edges would be similar.  Special cases
-for N = 1 (sphere) and N = 2 (rod with rounded ends) can also be
-specified.
-
-This body style is for 3d discrete element models, as described in
-"Wang"_#body-Wang.
-
-Similar to body style {rounded/polygon}, the atom_style body command
-for this body style takes two additional arguments:
-
-atom_style body rounded/polyhedron Nmin Nmax
-Nmin = minimum # of vertices in any body in the system
-Nmax = maximum # of vertices in any body in the system :pre
-
-The Nmin and Nmax arguments are used to bound the size of data
-structures used internally by each particle.
-
-When the "read_data"_read_data.html command reads a data file for this
-body style, the following information must be provided for each entry
-in the {Bodies} section of the data file:
-
-atom-ID 3 M
-N E F
-ixx iyy izz ixy ixz iyz
-x1 y1 z1
-...
-xN yN zN
-0 1
-1 2 
-2 3
-...
-0 1 2 -1
-0 2 3 -1
-...
-1 2 3 4
-diameter :pre
-
-where M = 6 + 3*N + 2*E + 4*F + 1, and N is the number of vertices in
-the body particle, E = number of edges, F = number of faces.
-
-The integer line has three values: number of vertices (N), number of
-edges (E) and number of faces (F). The floating point line(s) list 6
-moments of inertia followed by the coordinates of the N vertices (x1
-to zN) as 3N values, followed by 2N vertex indices corresponding to
-the end points of the E edges, then 4*F vertex indices defining F
-faces.  The last value is the diameter value = the rounded diameter of
-the sphere that surrounds each vertex. The diameter value can be
-different for each body particle. These floating-point values can be
-listed on as many lines as you wish; see the
-"read_data"_read_data.html command for more details.  Because the
-maxmimum vertices per face is hard-coded to be 4
-(i.e. quadrilaterals), faces with more than 4 vertices need to be
-split into triangles or quadrilaterals.  For triangular faces, the
-last vertex index should be set to -1.
-
-The ordering of the 4 vertices within a face should follow
-the right-hand rule so that the normal vector of the face points
-outwards from the center of mass.
-
-The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the
-values consistent with the current orientation of the rigid body
-around its center of mass.  The values are with respect to the
-simulation box XYZ axes, not with respect to the principal axes of the
-rigid body itself.  LAMMPS performs the latter calculation internally.
-The coordinates of each vertex are specified as its x,y,z displacement
-from the center-of-mass of the body particle.  The center-of-mass
-position of the particle is specified by the x,y,z values in the
-{Atoms} section of the data file.
-
-For example, the following information would specify a cubic particle
-whose edge length is 2.0 and rounded diameter is 0.5.
-The orientation of the cube is aligned with the xyz coordinate axes
-which is consistent with the 6 moments of inertia: ixx iyy izz ixy ixz
-iyz = 0.667 0.667 0.667 0 0 0.
-
-1 3 79
-8 12 6
-0.667 0.667 0.667 0 0 0
-1 1 1
-1 -1 1
--1 -1 1
--1 1 1
-1 1 -1
-1 -1 -1
--1 -1 -1
--1 1 -1
-0 1
-1 2
-2 3
-3 0
-4 5
-5 6
-6 7
-7 4
-0 4
-1 5
-2 6
-3 7
-0 1 2 3
-4 5 6 7
-0 1 5 4
-1 2 6 5
-2 3 7 6
-3 0 4 7
-0.5 :pre
-
-A rod in 3D, whose length is 4.0, mass 1.0 and rounded at two ends
-by circles of diameter 0.5, is specified as follows:
-
-1 1 13
-2
-0 1.33333 1.33333 0 0 0
--2 0 0
-2 0 0
-0.5 :pre
-
-A sphere whose diameter is 3.0 and mass 1.0, is specified as follows:
-
-1 1 10
-1
-0.9 0.9 0.9 0 0 0
-0 0 0
-3.0 :pre
-
-The "pair_style
-body/rounded/polhedron"_pair_body_rounded_polyhedron.html command can
-be used with this body style to compute body/body interactions.  The
-"fix wall/body/polyhedron"_fix_wall_body_polygon.html command can be
-used with this body style to compute the interaction of body particles
-with a wall.
-
-:line
-
-For output purposes via the "compute
-body/local"_compute_body_local.html and "dump local"_dump.html
-commands, this body style produces one datum for each of the N
-sub-particles in a body particle.  The datum has 3 values:
-
-1 = x position of vertex
-2 = y position of vertex
-3 = z position of vertex :pre
-
-These values are the current position of the vertex within the
-simulation domain, not a displacement from the center-of-mass (COM) of
-the body particle itself.  These values are calculated using the
-current COM and orientation of the body particle.
-
-For images created by the "dump image"_dump_image.html command, if the
-{body} keyword is set, then each body particle is drawn as a polygon
-consisting of N line segments.  Note that the line segments are drawn
-between the N vertices, which does not correspond exactly to the
-physical extent of the body (because the "pair_style
-rounded/polygon"_pair_body_rounded_polygon.html defines finite-size
-spheres at those point and the line segments between the spheres are
-tangent to the spheres).  The drawn diameter of each line segment is
-determined by the {bflag1} parameter for the {body} keyword.  The
-{bflag2} argument is ignored.
-
-:line
-
-:link(body-Fraige)
-[(Fraige)] F. Y. Fraige, P. A. Langston, A. J. Matchett, J. Dodds,
-Particuology, 6, 455 (2008).
-
-:link(body-Wang)
-[(Wang)] J. Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular
-Matter, 13, 1 (2011).
diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index 9cb2d8cd6c..c0ca357f21 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -107,10 +107,6 @@ Errors_bugs.html
 Errors_messages.html
 Errors_warnings.html
 
-lammps_support.html
-body.html
-manifolds.html
-
 lammps_commands.html
 atom_modify.html
 atom_style.html
diff --git a/doc/src/lammps_support.txt b/doc/src/lammps_support.txt
deleted file mode 100644
index fa460ce6c2..0000000000
--- a/doc/src/lammps_support.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-
-Supporting Information :h1
-
-This section of the manual contains supporting information that
-is not documenting individual commands but general concepts and
-supporting information about entities like body particles or
-manifolds.
diff --git a/doc/src/manifolds.txt b/doc/src/manifolds.txt
deleted file mode 100644
index 194a755868..0000000000
--- a/doc/src/manifolds.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
-
-:link(lws,http://lammps.sandia.gov)
-:link(ld,Manual.html)
-:link(lc,Commands_all.html)
-
-:line
-
-Manifolds (surfaces) :h2
-
-[Overview:]
-
-This doc page is not about a LAMMPS input script command, but about
-manifolds, which are generalized surfaces, as defined and used by the
-USER-MANIFOLD package, to track particle motion on the manifolds.  See
-the src/USER-MANIFOLD/README file for more details about the package
-and its commands.
-
-Below is a list of currently supported manifolds by the USER-MANIFOLD
-package, their parameters and a short description of them.  The
-parameters listed here are in the same order as they should be passed
-to the relevant fixes.
-
-{manifold} @ {parameters} @ {equation} @ {description}
-cylinder @ R @ x^2 + y^2 - R^2 = 0 @ Cylinder along z-axis, axis going through (0,0,0)
-cylinder_dent @ R l a @ x^2 + y^2 - r(z)^2 = 0, r(x) = R if | z | > l, r(z) = R - a*(1 + cos(z/l))/2 otherwise @ A cylinder with a dent around z = 0
-dumbbell @ a A B c @ -( x^2 + y^2 ) + (a^2 - z^2/c^2) * ( 1 + (A*sin(B*z^2))^4) = 0 @ A dumbbell
-ellipsoid @ a  b c @ (x/a)^2 + (y/b)^2 + (z/c)^2 = 0 @ An ellipsoid
-gaussian_bump @ A l rc1 rc2 @ if( x < rc1) -z + A * exp( -x^2 / (2 l^2) ); else if( x < rc2 ) -z + a + b*x + c*x^2 + d*x^3; else z @ A Gaussian bump at x = y = 0, smoothly tapered to a flat plane z = 0.
-plane @ a b c x0 y0 z0 @ a*(x-x0) + b*(y-y0) + c*(z-z0) = 0 @ A plane with normal (a,b,c) going through point (x0,y0,z0)
-plane_wiggle @ a w @ z - a*sin(w*x) = 0 @ A plane with a sinusoidal modulation on z along x.
-sphere @ R @ x^2 + y^2 + z^2 - R^2 = 0 @ A sphere of radius R
-supersphere @ R q @ | x |^q + | y |^q + | z |^q - R^q = 0 @ A supersphere of hyperradius R
-spine @ a, A, B, B2, c @ -(x^2 + y^2) + (a^2 - z^2/f(z)^2)*(1 + (A*sin(g(z)*z^2))^4), f(z) = c if z > 0, 1 otherwise; g(z) = B if z > 0, B2 otherwise  @ An approximation to a dendtritic spine
-spine_two @ a, A, B, B2, c @ -(x^2 + y^2) + (a^2 - z^2/f(z)^2)*(1 + (A*sin(g(z)*z^2))^2), f(z) = c if z > 0, 1 otherwise; g(z) = B if z > 0, B2 otherwise  @ Another approximation to a dendtritic spine
-thylakoid @ wB LB lB @ Various, see "(Paquay)"_#Paquay1 @ A model grana thylakoid consisting of two block-like compartments connected by a bridge of width wB, length LB and taper length lB
-torus @ R r  @  (R - sqrt( x^2 + y^2 ) )^2 + z^2 - r^2  @ A torus with large radius R and small radius r, centered on (0,0,0) :tb(s=@)
-
-:link(Paquay1)
-[(Paquay)] Paquay and Kusters, Biophys. J., 110, 6, (2016).
-preprint available at "arXiv:1411.3019"_http://arxiv.org/abs/1411.3019/.
-- 
GitLab


From 6927ed5eb9d6aa8a985428c3a3748ca0e6545035 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Mon, 6 Aug 2018 00:01:38 -0400
Subject: [PATCH 145/243] Fix pair body rounded polygon and polyhedron links

---
 doc/src/Commands_pair.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/Commands_pair.txt b/doc/src/Commands_pair.txt
index 02b22942ae..eaf2720613 100644
--- a/doc/src/Commands_pair.txt
+++ b/doc/src/Commands_pair.txt
@@ -36,8 +36,8 @@ OPT.
 "awpmd/cut"_pair_awpmd.html,
 "beck (go)"_pair_beck.html,
 "body/nparticle"_pair_body_nparticle.html,
-"body/rounded/polygon"_pair_body_rounded/polygon.html,
-"body/rounded/polyhedron"_pair_body_rounded/polyhedron.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,
-- 
GitLab


From fba9f0aaae4eb5e41c448e1aba068ccdc9709549 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Mon, 6 Aug 2018 00:10:06 -0400
Subject: [PATCH 146/243] Fix various links

---
 doc/src/Intro_authors.txt  | 2 +-
 doc/src/Intro_features.txt | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/src/Intro_authors.txt b/doc/src/Intro_authors.txt
index b48c1eb59a..ce418d0ce1 100644
--- a/doc/src/Intro_authors.txt
+++ b/doc/src/Intro_authors.txt
@@ -140,7 +140,7 @@ Aug15 : timer command : Axel Kohlmeyer (Temple U)
 Aug15 : USER-H5MD package : Pierre de Buyl (KU Leuven)
 Aug15 : COMPRESS package : Axel Kohlmeyer (Temple U)
 Aug15 : USER-SMD package : Georg Gunzenmueller (EMI)
-Jul15 : new HTML format for "doc pages"_doc/Manual.html with search option : Richard Berger (JKU)
+Jul15 : new HTML format for "doc pages"_Manual.html with search option : Richard Berger (JKU)
 Jul15 : rRESPA with pair hybrid : Sam Genheden (U of Southampton)
 Jul15 : pair_modify special : Axel Kohlmeyer (Temple U)
 Jul15 : pair polymorphic : Xiaowang Zhou and Reese Jones (Sandia)
diff --git a/doc/src/Intro_features.txt b/doc/src/Intro_features.txt
index 4b7d1d41e2..2bb7e25683 100644
--- a/doc/src/Intro_features.txt
+++ b/doc/src/Intro_features.txt
@@ -186,14 +186,14 @@ These are LAMMPS capabilities which you may not think of as typical
 classical MD options:
 
 "static"_balance.html and "dynamic load-balancing"_fix_balance.html
-"generalized aspherical particles"_body.html
+"generalized aspherical particles"_Howto_body.html
 "stochastic rotation dynamics (SRD)"_fix_srd.html
 "real-time visualization and interactive MD"_fix_imd.html
 calculate "virtual diffraction patterns"_compute_xrd.html
 "atom-to-continuum coupling"_fix_atc.html with finite elements
 coupled rigid body integration via the "POEMS"_fix_poems.html library
 "QM/MM coupling"_fix_qmmm.html
-Monte Carlo via "GCMC"_fix_gcmc.html and "tfMC"_fix_tfmc.html and "atom swapping"_fix_swap.html
+Monte Carlo via "GCMC"_fix_gcmc.html and "tfMC"_fix_tfmc.html and "atom swapping"_fix_atom_swap.html
 "path-integral molecular dynamics (PIMD)"_fix_ipi.html and "this as well"_fix_pimd.html
 "Direct Simulation Monte Carlo"_pair_dsmc.html for low-density fluids
 "Peridynamics mesoscale modeling"_pair_peri.html
-- 
GitLab


From 32917f4caa7d1beb8526d02e9ce2fd247704641e Mon Sep 17 00:00:00 2001
From: Stan Moore <stamoor@sandia.gov>
Date: Mon, 6 Aug 2018 10:50:06 -0600
Subject: [PATCH 147/243] Workaround for issue 1037

---
 lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp
index 49b11f3ae0..11aa695f08 100644
--- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp
+++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp
@@ -292,7 +292,8 @@ public:
 
 #if ! defined( KOKKOS_ENABLE_CUDA_LDG_INTRINSIC )
       if ( 0 == r ) {
-        Kokkos::abort("Cuda const random access View using Cuda texture memory requires Kokkos to allocate the View's memory");
+        //Kokkos::abort("Cuda const random access View using Cuda texture memory requires Kokkos to allocate the View's memory");
+        return handle_type();
       }
 #endif
 
-- 
GitLab


From d27215b7e1a303defc72ad3eb1c3b27c60eb67bc Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Tue, 7 Aug 2018 15:05:07 -0600
Subject: [PATCH 148/243] enable more correct natoms computation when atoms are
 lost

---
 src/fix_group.cpp |  2 +-
 src/group.cpp     | 12 ++++++++++++
 src/group.h       |  1 +
 src/thermo.cpp    |  2 +-
 4 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/fix_group.cpp b/src/fix_group.cpp
index 2447002bc5..68d74b8b1f 100644
--- a/src/fix_group.cpp
+++ b/src/fix_group.cpp
@@ -84,7 +84,7 @@ idregion(NULL), idvar(NULL), idprop(NULL)
       idprop = new char[n];
       strcpy(idprop,arg[iarg+1]);
       iarg += 2;
-        } else if (strcmp(arg[iarg],"every") == 0) {
+    } else if (strcmp(arg[iarg],"every") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal group command");
       nevery = force->inumeric(FLERR,arg[iarg+1]);
       if (nevery <= 0) error->all(FLERR,"Illegal group command");
diff --git a/src/group.cpp b/src/group.cpp
index 9d33da9acb..dd5e53bb3c 100644
--- a/src/group.cpp
+++ b/src/group.cpp
@@ -754,6 +754,18 @@ void Group::read_restart(FILE *fp)
 // computations on a group of atoms
 // ----------------------------------------------------------------------
 
+/* ----------------------------------------------------------------------
+   count atoms in group all
+------------------------------------------------------------------------- */
+
+bigint Group::count_all()
+{
+  bigint nme = atom->nlocal;
+  bigint nall;
+  MPI_Allreduce(&nme,&nall,1,MPI_LMP_BIGINT,MPI_SUM,world);
+  return nall;
+}
+
 /* ----------------------------------------------------------------------
    count atoms in group
 ------------------------------------------------------------------------- */
diff --git a/src/group.h b/src/group.h
index 6b6cbb1def..962d37b32a 100644
--- a/src/group.h
+++ b/src/group.h
@@ -37,6 +37,7 @@ class Group : protected Pointers {
   void write_restart(FILE *);
   void read_restart(FILE *);
 
+  bigint count_all();                      // count atoms in group all
   bigint count(int);                       // count atoms in group
   bigint count(int,int);                   // count atoms in group & region
   double mass(int);                        // total mass of atoms in group
diff --git a/src/thermo.cpp b/src/thermo.cpp
index ade7a3c333..ddbbd0f496 100644
--- a/src/thermo.cpp
+++ b/src/thermo.cpp
@@ -1698,7 +1698,7 @@ void Thermo::compute_timeremain()
 
 void Thermo::compute_atoms()
 {
-  bivalue = atom->natoms;
+  bivalue = group->count_all();
 }
 
 /* ---------------------------------------------------------------------- */
-- 
GitLab


From ac7aeb68626c61b484591dee82b12b95b4de0da0 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Tue, 7 Aug 2018 21:43:59 -0400
Subject: [PATCH 149/243] Add extra check for OpenCL timers

Fixes issue #1034 by preventing time() to access non-existent OpenCL events
---
 lib/gpu/geryon/ocl_timer.h | 40 +++++++++++++++++++++++++++-----------
 1 file changed, 29 insertions(+), 11 deletions(-)

diff --git a/lib/gpu/geryon/ocl_timer.h b/lib/gpu/geryon/ocl_timer.h
index 1f56aeb364..bdfec64f54 100644
--- a/lib/gpu/geryon/ocl_timer.h
+++ b/lib/gpu/geryon/ocl_timer.h
@@ -38,8 +38,8 @@ namespace ucl_opencl {
 /// Class for timing OpenCL events
 class UCL_Timer {
  public:
-  inline UCL_Timer() : _total_time(0.0f), _initialized(false) { }
-  inline UCL_Timer(UCL_Device &dev) : _total_time(0.0f), _initialized(false)
+  inline UCL_Timer() : _total_time(0.0f), _initialized(false), has_measured_time(false) { }
+  inline UCL_Timer(UCL_Device &dev) : _total_time(0.0f), _initialized(false), has_measured_time(false)
     { init(dev); }
 
   inline ~UCL_Timer() { clear(); }
@@ -52,6 +52,7 @@ class UCL_Timer {
       _initialized=false;
       _total_time=0.0;
     }
+    has_measured_time = false;
   }
 
   /// Initialize default command queue for timing
@@ -64,25 +65,39 @@ class UCL_Timer {
     _cq=cq;
     clRetainCommandQueue(_cq);
     _initialized=true;
+    has_measured_time = false;
   }
 
   /// Start timing on default command queue
-  inline void start() { UCL_OCL_MARKER(_cq,&start_event); }
+  inline void start() {
+    UCL_OCL_MARKER(_cq,&start_event);
+    has_measured_time = false;
+  }
 
   /// Stop timing on default command queue
-  inline void stop() { UCL_OCL_MARKER(_cq,&stop_event); }
+  inline void stop() {
+    UCL_OCL_MARKER(_cq,&stop_event);
+    has_measured_time = true;
+  }
 
   /// Block until the start event has been reached on device
-  inline void sync_start()
-    { CL_SAFE_CALL(clWaitForEvents(1,&start_event)); }
+  inline void sync_start() {
+    CL_SAFE_CALL(clWaitForEvents(1,&start_event));
+    has_measured_time = false;
+  }
 
   /// Block until the stop event has been reached on device
-  inline void sync_stop()
-    { CL_SAFE_CALL(clWaitForEvents(1,&stop_event)); }
+  inline void sync_stop() {
+    CL_SAFE_CALL(clWaitForEvents(1,&stop_event));
+    has_measured_time = true;
+  }
 
   /// Set the time elapsed to zero (not the total_time)
-  inline void zero()
-    { UCL_OCL_MARKER(_cq,&start_event); UCL_OCL_MARKER(_cq,&stop_event); }
+  inline void zero() {
+    has_measured_time = false;
+    UCL_OCL_MARKER(_cq,&start_event);
+    UCL_OCL_MARKER(_cq,&stop_event);
+  }
 
   /// Set the total time to zero
   inline void zero_total() { _total_time=0.0; }
@@ -97,6 +112,7 @@ class UCL_Timer {
 
   /// Return the time (ms) of last start to stop - Forces synchronization
   inline double time() {
+    if(!has_measured_time) return 0.0;
     cl_ulong tstart,tend;
     CL_SAFE_CALL(clWaitForEvents(1,&stop_event));
     CL_SAFE_CALL(clGetEventProfilingInfo(stop_event,
@@ -107,6 +123,7 @@ class UCL_Timer {
                                          sizeof(cl_ulong), &tstart, NULL));
     clReleaseEvent(start_event);
     clReleaseEvent(stop_event);
+    has_measured_time = false;
     return (tend-tstart)*t_factor;
   }
 
@@ -123,8 +140,9 @@ class UCL_Timer {
   cl_event start_event, stop_event;
   cl_command_queue _cq;
   double _total_time;
-  bool _initialized;
   double t_factor;
+  bool _initialized;
+  bool has_measured_time;
 };
 
 } // namespace
-- 
GitLab


From b6c458192cbb752d466f602cc51f60d8e6814238 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Wed, 8 Aug 2018 10:19:48 +0200
Subject: [PATCH 150/243] reword misleading message about GPU usage

---
 src/KOKKOS/kokkos.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp
index 3bbff6be7e..4a28a55be9 100644
--- a/src/KOKKOS/kokkos.cpp
+++ b/src/KOKKOS/kokkos.cpp
@@ -106,8 +106,8 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
   // initialize Kokkos
 
   if (me == 0) {
-    if (screen) fprintf(screen,"  using %d GPU(s)\n",ngpu);
-    if (logfile) fprintf(logfile,"  using %d GPU(s)\n",ngpu);
+    if (screen) fprintf(screen,"  will use up to %d GPU(s) per node\n",ngpu);
+    if (logfile) fprintf(logfile,"  will use up to %d GPU(s) per node\n",ngpu);
   }
 
 #ifdef KOKKOS_HAVE_CUDA
-- 
GitLab


From 3d537850fd7478b2b0cc98a7d029e3d530664127 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Wed, 8 Aug 2018 10:20:24 +0200
Subject: [PATCH 151/243] make communication settings consistent, in case the
 package command is used multiple times.

---
 src/KOKKOS/kokkos.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp
index 4a28a55be9..04315e0bb3 100644
--- a/src/KOKKOS/kokkos.cpp
+++ b/src/KOKKOS/kokkos.cpp
@@ -204,6 +204,7 @@ void KokkosLMP::accelerator(int narg, char **arg)
       if (iarg+2 > narg) error->all(FLERR,"Illegal package kokkos command");
       if (strcmp(arg[iarg+1],"no") == 0) {
         exchange_comm_classic = forward_comm_classic = reverse_comm_classic = 1;
+        exchange_comm_on_host = forward_comm_on_host = reverse_comm_on_host = 0;
       } else if (strcmp(arg[iarg+1],"host") == 0) {
         exchange_comm_classic = forward_comm_classic = reverse_comm_classic = 0;
         exchange_comm_on_host = forward_comm_on_host = reverse_comm_on_host = 1;
-- 
GitLab


From 5d87e0c6515f52c68180194496f9b21a8a66e6a4 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Wed, 8 Aug 2018 13:57:41 +0200
Subject: [PATCH 152/243] add wrapper for MPI implementation specific
 GPU-direct detection

this adds a local wrapper function have_gpu_direct(), that informs about
the support for GPU-direct, if possible and add a warning message in case
it cannot be detected or is not available and using more than 1 MPI rank.
---
 src/KOKKOS/kokkos.cpp | 53 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp
index 04315e0bb3..7acee89c81 100644
--- a/src/KOKKOS/kokkos.cpp
+++ b/src/KOKKOS/kokkos.cpp
@@ -11,6 +11,7 @@
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
+#include <mpi.h>
 #include <cstdio>
 #include <cstring>
 #include <cstdlib>
@@ -25,6 +26,37 @@
 #include "error.h"
 #include "memory_kokkos.h"
 
+#ifdef KOKKOS_HAVE_CUDA
+
+// for detecting GPU-direct support:
+// the function  int have_gpu_direct()
+// - returns -1 if GPU-direct support is unknown
+// - returns  0 if no GPU-direct support available
+// - returns  1 if GPU-direct support is available
+
+#define GPU_DIRECT_UNKNOWN static int have_gpu_direct() {return -1;}
+
+// OpenMPI supports detecting GPU-direct as of version 2.0.0
+#if OPEN_MPI
+
+#if (OMPI_MAJOR_VERSION >= 2)
+#include <mpi-ext.h>
+#if defined(MPIX_CUDA_AWARE_SUPPORT)
+static int have_gpu_direct() { return MPIX_Query_cuda_support(); }
+#else
+GPU_DIRECT_UNKNOWN
+#endif
+
+#else // old OpenMPI
+GPU_DIRECT_UNKNOWN
+#endif
+
+#else // unknown MPI library
+GPU_DIRECT_UNKNOWN
+#endif
+
+#endif // KOKKOS_HAVE_CUDA
+
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
@@ -113,6 +145,27 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
 #ifdef KOKKOS_HAVE_CUDA
   if (ngpu <= 0)
     error->all(FLERR,"Kokkos has been compiled for CUDA but no GPUs are requested");
+
+  // check and warn about GPU-direct availability when using multiple MPI tasks
+
+  int nmpi = 0;
+  MPI_Comm_size(world,&nmpi);
+  if ((nmpi > 1) && (me == 0)) {
+    if ( 1 == have_gpu_direct() ) {
+      ; // all good, nothing to warn about
+    } else if (-1 == have_gpu_direct() ) {
+      error->warning(FLERR,"Kokkos with CUDA assumes GPU-direct is available,"
+                     " but cannot determine if this is the case\n         try"
+                     " '-pk kokkos comm no' when getting segmentation faults");
+    } else if ( 0 == have_gpu_direct() ) {
+      error->warning(FLERR,"GPU-direct is NOT available, but some parts of "
+                     "Kokkos with CUDA require it\n         try"
+                     " '-pk kokkos comm no' when getting segmentation faults");
+    } else {
+      ; // should never get here
+    }
+  }
+    
 #endif
 
   Kokkos::InitArguments args;
-- 
GitLab


From 64e152bced4dfb792e2c71f5d83f87b85704e354 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Wed, 8 Aug 2018 14:25:49 +0200
Subject: [PATCH 153/243] add some notes about GPU-direct support requirements
 to the manual

---
 doc/src/Speed_kokkos.txt | 22 +++++++++++++++++++---
 doc/src/package.txt      | 13 +++++++------
 2 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/doc/src/Speed_kokkos.txt b/doc/src/Speed_kokkos.txt
index 14f4103aed..d7ae35bc12 100644
--- a/doc/src/Speed_kokkos.txt
+++ b/doc/src/Speed_kokkos.txt
@@ -96,6 +96,19 @@ software version 7.5 or later must be installed on your system. See
 the discussion for the "GPU package"_Speed_gpu.html for details of how
 to check and do this.
 
+NOTE: Kokkos with CUDA currently implicitly assumes, that the MPI
+library is CUDA-aware and has support for GPU-direct. This is not always
+the case, especially when using pre-compiled MPI libraries provided by
+a Linux distribution. This is not a problem when using only a single
+GPU and a single MPI rank on a desktop. When running with multiple
+MPI ranks, you may see segmentation faults without GPU-direct support.
+Many of those can be avoided by adding the flags '-pk kokkos comm no'
+to the LAMMPS command line or using "package kokkos comm on"_package.html
+in the input file, however for some KOKKOS enabled styles like 
+"EAM"_pair_eam.html or "PPPM"_kspace_style.html, this is not the case
+and a GPU-direct enabled MPI library is REQUIRED.
+
+
 Use a C++11 compatible compiler and set KOKKOS_ARCH variable in
 /src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi for both GPU and CPU as
 described above.  Then do the following:
@@ -262,9 +275,12 @@ the # of physical GPUs on the node.  You can assign multiple MPI tasks
 to the same GPU with the KOKKOS package, but this is usually only
 faster if significant portions of the input script have not been
 ported to use Kokkos. Using CUDA MPS is recommended in this
-scenario. As above for multi-core CPUs (and no GPU), if N is the
-number of physical cores/node, then the number of MPI tasks/node
-should not exceed N.
+scenario. Using a CUDA-aware MPI library with support for GPU-direct
+is highly recommended and for some KOKKOS-enabled styles even required.
+Most GPU-direct use can be avoided by using "-pk kokkos comm no".
+As above for multi-core CPUs (and no GPU), if N is the number of
+physical cores/node, then the number of MPI tasks/node should not
+exceed N.
 
 -k on g Ng :pre
 
diff --git a/doc/src/package.txt b/doc/src/package.txt
index c2e7345bb7..55f6c6d30f 100644
--- a/doc/src/package.txt
+++ b/doc/src/package.txt
@@ -480,15 +480,16 @@ The value options for all 3 keywords are {no} or {host} or {device}.
 A value of {no} means to use the standard non-KOKKOS method of
 packing/unpacking data for the communication.  A value of {host} means
 to use the host, typically a multi-core CPU, and perform the
-packing/unpacking in parallel with threads.  A value of {device} means
-to use the device, typically a GPU, to perform the packing/unpacking
-operation.
+packing/unpacking in parallel with threads.  A value of {device}
+means to use the device, typically a GPU, to perform the
+packing/unpacking operation.
 
 The optimal choice for these keywords depends on the input script and
 the hardware used.  The {no} value is useful for verifying that the
-Kokkos-based {host} and {device} values are working correctly.  It may
-also be the fastest choice when using Kokkos styles in MPI-only mode
-(i.e. with a thread count of 1).
+Kokkos-based {host} and {device} values are working correctly.  The {no}
+value should also be used, in case of using an MPI library that does
+not support GPU-direct. It may also be the fastest choice when using
+Kokkos styles in MPI-only mode (i.e. with a thread count of 1).
 
 When running on CPUs or Xeon Phi, the {host} and {device} values work
 identically.  When using GPUs, the {device} value will typically be
-- 
GitLab


From 9202896e75330db552759ddfa84cb2ffe97f0d8b Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 8 Aug 2018 09:31:16 -0600
Subject: [PATCH 154/243] bug fix for compute cluster/atom when computing
 values used to update a dynamic group

---
 src/compute_cluster_atom.cpp | 40 +++++++++++++++++++++++++++++-------
 src/fix_group.cpp            |  7 ++++++-
 src/update.cpp               |  4 ++--
 src/update.h                 |  1 +
 4 files changed, 42 insertions(+), 10 deletions(-)

diff --git a/src/compute_cluster_atom.cpp b/src/compute_cluster_atom.cpp
index 146f8fd1b3..85934c5e6d 100644
--- a/src/compute_cluster_atom.cpp
+++ b/src/compute_cluster_atom.cpp
@@ -31,6 +31,8 @@
 
 using namespace LAMMPS_NS;
 
+enum{CLUSTER,MASK,COORDS};
+
 /* ---------------------------------------------------------------------- */
 
 ComputeClusterAtom::ComputeClusterAtom(LAMMPS *lmp, int narg, char **arg) :
@@ -44,7 +46,7 @@ ComputeClusterAtom::ComputeClusterAtom(LAMMPS *lmp, int narg, char **arg) :
 
   peratom_flag = 1;
   size_peratom_cols = 0;
-  comm_forward = 1;
+  comm_forward = 3;
 
   nmax = 0;
 }
@@ -122,10 +124,19 @@ void ComputeClusterAtom::compute_peratom()
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
+  // if update->post_integrate set:
+  // a dynamic group in FixGroup is invoking a variable with this compute
+  // thus ghost atom coords need to be up-to-date after initial_integrate()
+
+  if (update->post_integrate) {
+    commflag = COORDS;
+    comm->forward_comm_compute(this);
+  }
+
   // if group is dynamic, insure ghost atom masks are current
 
   if (group->dynamic[igroup]) {
-    commflag = 0;
+    commflag = MASK;
     comm->forward_comm_compute(this);
   }
 
@@ -147,7 +158,7 @@ void ComputeClusterAtom::compute_peratom()
   // iterate until no changes in my atoms
   // then check if any proc made changes
 
-  commflag = 1;
+  commflag = CLUSTER;
   double **x = atom->x;
 
   int change,done,anychange;
@@ -203,17 +214,25 @@ int ComputeClusterAtom::pack_forward_comm(int n, int *list, double *buf,
   int i,j,m;
 
   m = 0;
-  if (commflag) {
+  if (commflag == CLUSTER) {
     for (i = 0; i < n; i++) {
       j = list[i];
       buf[m++] = clusterID[j];
     }
-  } else {
+  } else if (commflag == MASK) {
     int *mask = atom->mask;
     for (i = 0; i < n; i++) {
       j = list[i];
       buf[m++] = ubuf(mask[j]).d;
     }
+  } else if (commflag == COORDS) {
+    double **x = atom->x;
+    for (i = 0; i < n; i++) {
+      j = list[i];
+      buf[m++] = x[j][0];
+      buf[m++] = x[j][1];
+      buf[m++] = x[j][2];
+    }
   }
 
   return m;
@@ -227,11 +246,18 @@ void ComputeClusterAtom::unpack_forward_comm(int n, int first, double *buf)
 
   m = 0;
   last = first + n;
-  if (commflag)
+  if (commflag == CLUSTER) {
     for (i = first; i < last; i++) clusterID[i] = buf[m++];
-  else {
+  } else if (commflag == MASK) {
     int *mask = atom->mask;
     for (i = first; i < last; i++) mask[i] = (int) ubuf(buf[m++]).i;
+  } else if (commflag == COORDS) {
+    double **x = atom->x;
+    for (i = first; i < last; i++) {
+      x[i][0] = buf[m++];
+      x[i][1] = buf[m++];
+      x[i][2] = buf[m++];
+    }
   }
 }
 
diff --git a/src/fix_group.cpp b/src/fix_group.cpp
index 68d74b8b1f..10736964e7 100644
--- a/src/fix_group.cpp
+++ b/src/fix_group.cpp
@@ -204,17 +204,22 @@ void FixGroup::set_group()
   int nlocal = atom->nlocal;
 
   // invoke atom-style variable if defined
+  // set post_integrate flag to 1, then unset after
+  // this is for any compute to check if it needs to 
+  //   operate differently due to invocation this early in timestep
+  // e.g. perform ghost comm update due to atoms having just moved
 
   double *var = NULL;
   int *ivector = NULL;
   double *dvector = NULL;
 
-
   if (varflag) {
+    update->post_integrate = 1;
     modify->clearstep_compute();
     memory->create(var,nlocal,"fix/group:varvalue");
     input->variable->compute_atom(ivar,igroup,var,1,0);
     modify->addstep_compute(update->ntimestep + nevery);
+    update->post_integrate = 0;
   }
 
   // invoke per-atom property if defined
diff --git a/src/update.cpp b/src/update.cpp
index aa152a8508..6f9c2c9a07 100644
--- a/src/update.cpp
+++ b/src/update.cpp
@@ -46,11 +46,11 @@ Update::Update(LAMMPS *lmp) : Pointers(lmp)
   whichflag = 0;
   firststep = laststep = 0;
   beginstep = endstep = 0;
+  restrict_output = 0;
   setupflag = 0;
+  post_integrate = 0;
   multireplica = 0;
 
-  restrict_output = 0;
-
   eflag_global = vflag_global = -1;
 
   unit_style = NULL;
diff --git a/src/update.h b/src/update.h
index 7996440318..d3602ef21e 100644
--- a/src/update.h
+++ b/src/update.h
@@ -35,6 +35,7 @@ class Update : protected Pointers {
   int max_eval;                   // max force evaluations for minimizer
   int restrict_output;            // 1 if output should not write dump/restart
   int setupflag;                  // set when setup() is computing forces
+  int post_integrate;             // 1 if now at post_integrate() in timestep
   int multireplica;               // 1 if min across replicas, else 0
 
   bigint eflag_global,eflag_atom;  // timestep global/peratom eng is tallied on
-- 
GitLab


From d8aa6d534b8025a16c9aec0f7499742ff5e04975 Mon Sep 17 00:00:00 2001
From: Stan Moore <stamoor@sandia.gov>
Date: Wed, 8 Aug 2018 16:09:41 -0600
Subject: [PATCH 155/243] Remove hardcoded GPU-direct in KOKKOS package

---
 doc/src/Speed_kokkos.txt       |  9 +++----
 doc/src/package.txt            | 22 ++++++++++++-----
 src/KOKKOS/comm_kokkos.cpp     | 24 ++++++++++++++++---
 src/KOKKOS/gridcomm_kokkos.cpp | 43 ++++++++++++++++++++++++++++++----
 src/KOKKOS/kokkos.cpp          | 12 ++++++++--
 src/KOKKOS/kokkos.h            |  1 +
 6 files changed, 90 insertions(+), 21 deletions(-)

diff --git a/doc/src/Speed_kokkos.txt b/doc/src/Speed_kokkos.txt
index d7ae35bc12..c389174db8 100644
--- a/doc/src/Speed_kokkos.txt
+++ b/doc/src/Speed_kokkos.txt
@@ -102,12 +102,9 @@ the case, especially when using pre-compiled MPI libraries provided by
 a Linux distribution. This is not a problem when using only a single
 GPU and a single MPI rank on a desktop. When running with multiple
 MPI ranks, you may see segmentation faults without GPU-direct support.
-Many of those can be avoided by adding the flags '-pk kokkos comm no'
-to the LAMMPS command line or using "package kokkos comm on"_package.html
-in the input file, however for some KOKKOS enabled styles like 
-"EAM"_pair_eam.html or "PPPM"_kspace_style.html, this is not the case
-and a GPU-direct enabled MPI library is REQUIRED.
-
+These can be avoided by adding the flags '-pk kokkos comm no gpu/direct no'
+to the LAMMPS command line or using "package kokkos comm no gpu/direct no"_package.html
+in the input file.
 
 Use a C++11 compatible compiler and set KOKKOS_ARCH variable in
 /src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi for both GPU and CPU as
diff --git a/doc/src/package.txt b/doc/src/package.txt
index 55f6c6d30f..f2c9e2abcb 100644
--- a/doc/src/package.txt
+++ b/doc/src/package.txt
@@ -84,6 +84,9 @@ args = arguments specific to the style :l
         no = perform communication pack/unpack in non-KOKKOS mode
         host = perform pack/unpack on host (e.g. with OpenMP threading)
         device = perform pack/unpack on device (e.g. on GPU)
+      {gpu/direct} = {off} or {on}
+        off = do not use GPU-direct
+        on = use GPU-direct (default)
   {omp} args = Nthreads keyword value ...
     Nthread = # of OpenMP threads to associate with each MPI process
     zero or more keyword/value pairs may be appended
@@ -505,6 +508,13 @@ typically faster to let the host handle communication, by using the
 {host} value.  Using {host} instead of {no} will enable use of
 multiple threads to pack/unpack communicated data.
 
+The {gpu/direct} keyword chooses whether GPU-direct will be used. When 
+this keyword is set to {on}, buffers in GPU memory are passed directly 
+through MPI send/receive calls. This reduces overhead of first copying 
+the data to the host CPU. However GPU-direct is not supported on all 
+systems, which can lead to segmentation faults and would require
+using a value of {off}. 
+
 :line
 
 The {omp} style invokes settings associated with the use of the
@@ -611,12 +621,12 @@ is used.  If it is not used, you must invoke the package intel
 command in your input script or or via the "-pk intel" "command-line
 switch"_Section_start.html#start_6.
 
-For the KOKKOS package, the option defaults neigh = full,
-neigh/qeq = full, newton = off, binsize = 0.0, and comm = device.
-These settings are made automatically by the required "-k on" "command-line
-switch"_Section_start.html#start_6.  You can change them bu using the
-package kokkos command in your input script or via the "-pk kokkos"
-"command-line switch"_Section_start.html#start_6.
+For the KOKKOS package, the option defaults neigh = full, neigh/qeq = 
+full, newton = off, binsize = 0.0, and comm = device, gpu/direct = on. 
+These settings are made automatically by the required "-k on" 
+"command-line switch"_Section_start.html#start_6. You can change them bu 
+using the package kokkos command in your input script or via the "-pk 
+kokkos" "command-line switch"_Section_start.html#start_6. 
 
 For the OMP package, the default is Nthreads = 0 and the option
 defaults are neigh = yes.  These settings are made automatically if
diff --git a/src/KOKKOS/comm_kokkos.cpp b/src/KOKKOS/comm_kokkos.cpp
index 96d1c64d0d..6190d71b25 100644
--- a/src/KOKKOS/comm_kokkos.cpp
+++ b/src/KOKKOS/comm_kokkos.cpp
@@ -404,12 +404,30 @@ void CommKokkos::forward_comm_pair_device(Pair *pair)
     // if self, set recv buffer to send buffer
 
     if (sendproc[iswap] != me) {
-      if (recvnum[iswap])
-        MPI_Irecv(k_buf_recv_pair.view<DeviceType>().data(),nsize*recvnum[iswap],MPI_DOUBLE,
+      double* buf_send_pair;
+      double* buf_recv_pair;
+      if (lmp->kokkos->gpu_direct) {
+        buf_send_pair = k_buf_send_pair.view<DeviceType>().data();
+        buf_recv_pair = k_buf_recv_pair.view<DeviceType>().data();
+      } else {
+        k_buf_send_pair.modify<DeviceType>();
+        k_buf_send_pair.sync<LMPHostType>();
+        buf_send_pair = k_buf_send_pair.h_view.data();
+        buf_recv_pair = k_buf_recv_pair.h_view.data();
+      }
+
+      if (recvnum[iswap]) {
+        MPI_Irecv(buf_recv_pair,nsize*recvnum[iswap],MPI_DOUBLE,
                   recvproc[iswap],0,world,&request);
+      }
       if (sendnum[iswap])
-        MPI_Send(k_buf_send_pair.view<DeviceType>().data(),n,MPI_DOUBLE,sendproc[iswap],0,world);
+        MPI_Send(buf_send_pair,n,MPI_DOUBLE,sendproc[iswap],0,world);
       if (recvnum[iswap]) MPI_Wait(&request,MPI_STATUS_IGNORE);
+
+      if (!lmp->kokkos->gpu_direct) {
+        k_buf_recv_pair.modify<LMPHostType>();
+        k_buf_recv_pair.sync<DeviceType>();
+      }
     } else k_buf_recv_pair = k_buf_send_pair;
 
     // unpack buffer
diff --git a/src/KOKKOS/gridcomm_kokkos.cpp b/src/KOKKOS/gridcomm_kokkos.cpp
index 847fa5907a..55e31436d9 100644
--- a/src/KOKKOS/gridcomm_kokkos.cpp
+++ b/src/KOKKOS/gridcomm_kokkos.cpp
@@ -18,6 +18,7 @@
 #include "memory_kokkos.h"
 #include "error.h"
 #include "kokkos_base.h"
+#include "kokkos.h"
 
 using namespace LAMMPS_NS;
 
@@ -526,11 +527,28 @@ void GridCommKokkos<DeviceType>::forward_comm(KSpace *kspace, int which)
     DeviceType::fence();
 
     if (swap[m].sendproc != me) {
-      MPI_Irecv(k_buf2.view<DeviceType>().data(),nforward*swap[m].nunpack,MPI_FFT_SCALAR,
+      MPI_FFT_SCALAR* buf1;
+      MPI_FFT_SCALAR* buf2;
+      if (lmp->kokkos->gpu_direct) {
+        buf1 = k_buf1.view<DeviceType>().data();
+        buf2 = k_buf2.view<DeviceType>().data();
+      } else {
+        k_buf1.modify<DeviceType>();
+        k_buf1.sync<LMPHostType>();
+        buf1 = k_buf1.h_view.data();
+        buf2 = k_buf2.h_view.data();
+      }
+
+      MPI_Irecv(buf2,nforward*swap[m].nunpack,MPI_FFT_SCALAR,
                 swap[m].recvproc,0,gridcomm,&request);
-      MPI_Send(k_buf1.view<DeviceType>().data(),nforward*swap[m].npack,MPI_FFT_SCALAR,
+      MPI_Send(buf1,nforward*swap[m].npack,MPI_FFT_SCALAR,
                swap[m].sendproc,0,gridcomm);
       MPI_Wait(&request,MPI_STATUS_IGNORE);
+
+      if (!lmp->kokkos->gpu_direct) {
+        k_buf2.modify<LMPHostType>();
+        k_buf2.sync<DeviceType>();
+      }
     }
 
     kspaceKKBase->unpack_forward_kspace_kokkos(which,k_buf2,swap[m].nunpack,k_unpacklist,m);
@@ -559,11 +577,28 @@ void GridCommKokkos<DeviceType>::reverse_comm(KSpace *kspace, int which)
     DeviceType::fence();
 
     if (swap[m].recvproc != me) {
-      MPI_Irecv(k_buf2.view<DeviceType>().data(),nreverse*swap[m].npack,MPI_FFT_SCALAR,
+      MPI_FFT_SCALAR* buf1;
+      MPI_FFT_SCALAR* buf2;
+      if (lmp->kokkos->gpu_direct) {
+        buf1 = k_buf1.view<DeviceType>().data();
+        buf2 = k_buf2.view<DeviceType>().data();
+      } else {
+        k_buf1.modify<DeviceType>();
+        k_buf1.sync<LMPHostType>();
+        buf1 = k_buf1.h_view.data();
+        buf2 = k_buf2.h_view.data();
+      }
+
+      MPI_Irecv(buf2,nreverse*swap[m].npack,MPI_FFT_SCALAR,
                 swap[m].sendproc,0,gridcomm,&request);
-      MPI_Send(k_buf1.view<DeviceType>().data(),nreverse*swap[m].nunpack,MPI_FFT_SCALAR,
+      MPI_Send(buf1,nreverse*swap[m].nunpack,MPI_FFT_SCALAR,
                swap[m].recvproc,0,gridcomm);
       MPI_Wait(&request,MPI_STATUS_IGNORE);
+
+      if (!lmp->kokkos->gpu_direct) {
+        k_buf2.modify<LMPHostType>();
+        k_buf2.sync<DeviceType>();
+      }
     }
 
     kspaceKKBase->unpack_reverse_kspace_kokkos(which,k_buf2,swap[m].npack,k_packlist,m);
diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp
index 7acee89c81..825cf5db50 100644
--- a/src/KOKKOS/kokkos.cpp
+++ b/src/KOKKOS/kokkos.cpp
@@ -156,11 +156,11 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
     } else if (-1 == have_gpu_direct() ) {
       error->warning(FLERR,"Kokkos with CUDA assumes GPU-direct is available,"
                      " but cannot determine if this is the case\n         try"
-                     " '-pk kokkos comm no' when getting segmentation faults");
+                     " '-pk kokkos comm no gpu/direct no' when getting segmentation faults");
     } else if ( 0 == have_gpu_direct() ) {
       error->warning(FLERR,"GPU-direct is NOT available, but some parts of "
                      "Kokkos with CUDA require it\n         try"
-                     " '-pk kokkos comm no' when getting segmentation faults");
+                     " '-pk kokkos comm no gpu/direct no' when getting segmentation faults");
     } else {
       ; // should never get here
     }
@@ -186,6 +186,7 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
   exchange_comm_on_host = 0;
   forward_comm_on_host = 0;
   reverse_comm_on_host = 0;
+  gpu_direct = 0;
 
 #ifdef KILL_KOKKOS_ON_SIGSEGV
   signal(SIGSEGV, my_signal_handler);
@@ -216,6 +217,7 @@ void KokkosLMP::accelerator(int narg, char **arg)
   double binsize = 0.0;
   exchange_comm_classic = forward_comm_classic = reverse_comm_classic = 0;
   exchange_comm_on_host = forward_comm_on_host = reverse_comm_on_host = 0;
+  gpu_direct = 1;
 
   int iarg = 0;
   while (iarg < narg) {
@@ -299,6 +301,12 @@ void KokkosLMP::accelerator(int narg, char **arg)
         reverse_comm_on_host = 0;
       } else error->all(FLERR,"Illegal package kokkos command");
       iarg += 2;
+    } else if (strcmp(arg[iarg],"gpu/direct") == 0) {
+      if (iarg+2 > narg) error->all(FLERR,"Illegal package kokkos command");
+      if (strcmp(arg[iarg+1],"off") == 0) gpu_direct = 0;
+      else if (strcmp(arg[iarg+1],"on") == 0) gpu_direct = 1;
+      else error->all(FLERR,"Illegal package kokkos command");
+      iarg += 2;
     } else error->all(FLERR,"Illegal package kokkos command");
   }
 
diff --git a/src/KOKKOS/kokkos.h b/src/KOKKOS/kokkos.h
index 846b7254af..c3c5d0d6e1 100644
--- a/src/KOKKOS/kokkos.h
+++ b/src/KOKKOS/kokkos.h
@@ -34,6 +34,7 @@ class KokkosLMP : protected Pointers {
   int num_threads,ngpu;
   int numa;
   int auto_sync;
+  int gpu_direct;
 
   KokkosLMP(class LAMMPS *, int, char **);
   ~KokkosLMP();
-- 
GitLab


From 1c550d8f39ce3db88050333860395923f406726f Mon Sep 17 00:00:00 2001
From: Stan Moore <stamoor@sandia.gov>
Date: Wed, 8 Aug 2018 16:46:36 -0600
Subject: [PATCH 156/243] Change defaults for GPU-direct to use comm host

---
 doc/src/Speed_kokkos.txt |  7 +++----
 doc/src/package.txt      | 11 ++++++-----
 src/KOKKOS/kokkos.cpp    | 17 ++++++++++++++---
 3 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/doc/src/Speed_kokkos.txt b/doc/src/Speed_kokkos.txt
index c389174db8..6e64510e44 100644
--- a/doc/src/Speed_kokkos.txt
+++ b/doc/src/Speed_kokkos.txt
@@ -102,8 +102,8 @@ the case, especially when using pre-compiled MPI libraries provided by
 a Linux distribution. This is not a problem when using only a single
 GPU and a single MPI rank on a desktop. When running with multiple
 MPI ranks, you may see segmentation faults without GPU-direct support.
-These can be avoided by adding the flags '-pk kokkos comm no gpu/direct no'
-to the LAMMPS command line or using "package kokkos comm no gpu/direct no"_package.html
+These can be avoided by adding the flags '-pk kokkos gpu/direct no'
+to the LAMMPS command line or using "package kokkos gpu/direct no"_package.html
 in the input file.
 
 Use a C++11 compatible compiler and set KOKKOS_ARCH variable in
@@ -273,8 +273,7 @@ to the same GPU with the KOKKOS package, but this is usually only
 faster if significant portions of the input script have not been
 ported to use Kokkos. Using CUDA MPS is recommended in this
 scenario. Using a CUDA-aware MPI library with support for GPU-direct
-is highly recommended and for some KOKKOS-enabled styles even required.
-Most GPU-direct use can be avoided by using "-pk kokkos comm no".
+is highly recommended. GPU-direct use can be avoided by using "-pk kokkos gpu/direct no".
 As above for multi-core CPUs (and no GPU), if N is the number of
 physical cores/node, then the number of MPI tasks/node should not
 exceed N.
diff --git a/doc/src/package.txt b/doc/src/package.txt
index f2c9e2abcb..19a19156b7 100644
--- a/doc/src/package.txt
+++ b/doc/src/package.txt
@@ -489,10 +489,9 @@ packing/unpacking operation.
 
 The optimal choice for these keywords depends on the input script and
 the hardware used.  The {no} value is useful for verifying that the
-Kokkos-based {host} and {device} values are working correctly.  The {no}
-value should also be used, in case of using an MPI library that does
-not support GPU-direct. It may also be the fastest choice when using
-Kokkos styles in MPI-only mode (i.e. with a thread count of 1).
+Kokkos-based {host} and {device} values are working correctly. 
+It may also be the fastest choice when using Kokkos styles in
+MPI-only mode (i.e. with a thread count of 1).
 
 When running on CPUs or Xeon Phi, the {host} and {device} values work
 identically.  When using GPUs, the {device} value will typically be
@@ -513,7 +512,9 @@ this keyword is set to {on}, buffers in GPU memory are passed directly
 through MPI send/receive calls. This reduces overhead of first copying 
 the data to the host CPU. However GPU-direct is not supported on all 
 systems, which can lead to segmentation faults and would require
-using a value of {off}. 
+using a value of {off}. When the {gpu/direct} keyword is set to {off}
+while any of the {comm} keywords are set to {device}, the value for the
+{comm} keywords will be automatically changed to {host}.
 
 :line
 
diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp
index 825cf5db50..153b011af4 100644
--- a/src/KOKKOS/kokkos.cpp
+++ b/src/KOKKOS/kokkos.cpp
@@ -156,11 +156,11 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
     } else if (-1 == have_gpu_direct() ) {
       error->warning(FLERR,"Kokkos with CUDA assumes GPU-direct is available,"
                      " but cannot determine if this is the case\n         try"
-                     " '-pk kokkos comm no gpu/direct no' when getting segmentation faults");
+                     " '-pk kokkos gpu/direct no' when getting segmentation faults");
     } else if ( 0 == have_gpu_direct() ) {
       error->warning(FLERR,"GPU-direct is NOT available, but some parts of "
                      "Kokkos with CUDA require it\n         try"
-                     " '-pk kokkos comm no gpu/direct no' when getting segmentation faults");
+                     " '-pk kokkos gpu/direct no' when getting segmentation faults");
     } else {
       ; // should never get here
     }
@@ -186,7 +186,7 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
   exchange_comm_on_host = 0;
   forward_comm_on_host = 0;
   reverse_comm_on_host = 0;
-  gpu_direct = 0;
+  gpu_direct = 1;
 
 #ifdef KILL_KOKKOS_ON_SIGSEGV
   signal(SIGSEGV, my_signal_handler);
@@ -310,6 +310,17 @@ void KokkosLMP::accelerator(int narg, char **arg)
     } else error->all(FLERR,"Illegal package kokkos command");
   }
 
+  // if "gpu/direct no" and "comm device", change to "comm host"
+
+  if (!gpu_direct) {
+   if (exchange_comm_classic == 0 && exchange_comm_on_host == 0)
+     exchange_comm_on_host = 1;
+   if (forward_comm_classic == 0 && forward_comm_on_host == 0)
+     forward_comm_on_host = 1;
+   if (reverse_comm_classic == 0 && reverse_comm_on_host == 0)
+     reverse_comm_on_host = 1;
+  }
+
   // set newton flags
   // set neighbor binsize, same as neigh_modify command
 
-- 
GitLab


From 32658c20d48340afa4fca9813c44a4a95b50c625 Mon Sep 17 00:00:00 2001
From: Stan Moore <stamoor@sandia.gov>
Date: Wed, 8 Aug 2018 17:07:12 -0600
Subject: [PATCH 157/243] Fix typo in gridcomm_kokkos

---
 src/KOKKOS/gridcomm_kokkos.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/KOKKOS/gridcomm_kokkos.cpp b/src/KOKKOS/gridcomm_kokkos.cpp
index 55e31436d9..44795b569d 100644
--- a/src/KOKKOS/gridcomm_kokkos.cpp
+++ b/src/KOKKOS/gridcomm_kokkos.cpp
@@ -527,8 +527,8 @@ void GridCommKokkos<DeviceType>::forward_comm(KSpace *kspace, int which)
     DeviceType::fence();
 
     if (swap[m].sendproc != me) {
-      MPI_FFT_SCALAR* buf1;
-      MPI_FFT_SCALAR* buf2;
+      FFT_SCALAR* buf1;
+      FFT_SCALAR* buf2;
       if (lmp->kokkos->gpu_direct) {
         buf1 = k_buf1.view<DeviceType>().data();
         buf2 = k_buf2.view<DeviceType>().data();
@@ -577,8 +577,8 @@ void GridCommKokkos<DeviceType>::reverse_comm(KSpace *kspace, int which)
     DeviceType::fence();
 
     if (swap[m].recvproc != me) {
-      MPI_FFT_SCALAR* buf1;
-      MPI_FFT_SCALAR* buf2;
+      FFT_SCALAR* buf1;
+      FFT_SCALAR* buf2;
       if (lmp->kokkos->gpu_direct) {
         buf1 = k_buf1.view<DeviceType>().data();
         buf2 = k_buf2.view<DeviceType>().data();
-- 
GitLab


From 6d60075d3bef9f874fed97ef2c3a7412b4a47e0a Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Thu, 9 Aug 2018 02:33:35 -0400
Subject: [PATCH 158/243] GPU Package: Use __shfl_xor_sync starting with CUDA 9

---
 lib/gpu/lal_preprocessor.h | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/lib/gpu/lal_preprocessor.h b/lib/gpu/lal_preprocessor.h
index 69a8e61bd4..566a451c21 100644
--- a/lib/gpu/lal_preprocessor.h
+++ b/lib/gpu/lal_preprocessor.h
@@ -119,6 +119,8 @@
 #define BLOCK_ELLIPSE 128
 #define MAX_SHARED_TYPES 11
 
+#if (__CUDACC_VER_MAJOR__ < 9)
+
 #ifdef _SINGLE_SINGLE
 #define shfl_xor __shfl_xor
 #else
@@ -132,6 +134,25 @@ ucl_inline double shfl_xor(double var, int laneMask, int width) {
 }
 #endif
 
+#else
+
+#ifdef _SINGLE_SINGLE
+ucl_inline double shfl_xor(double var, int laneMask, int width) {
+  return __shfl_xor_sync(0xffffffff, var, laneMask, width);
+}
+#else
+ucl_inline double shfl_xor(double var, int laneMask, int width) {
+  int2 tmp;
+  tmp.x = __double2hiint(var);
+  tmp.y = __double2loint(var);
+  tmp.x = __shfl_xor_sync(0xffffffff,tmp.x,laneMask,width);
+  tmp.y = __shfl_xor_sync(0xffffffff,tmp.y,laneMask,width);
+  return __hiloint2double(tmp.x,tmp.y);
+}
+#endif
+
+#endif
+
 #endif
 
 #endif
-- 
GitLab


From 01b81347468fede39abc6e90845827572f116a1c Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 9 Aug 2018 09:35:11 +0200
Subject: [PATCH 159/243] Small tweak to GPU direct not available warning

---
 src/KOKKOS/kokkos.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp
index 153b011af4..078b871473 100644
--- a/src/KOKKOS/kokkos.cpp
+++ b/src/KOKKOS/kokkos.cpp
@@ -159,7 +159,7 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
                      " '-pk kokkos gpu/direct no' when getting segmentation faults");
     } else if ( 0 == have_gpu_direct() ) {
       error->warning(FLERR,"GPU-direct is NOT available, but some parts of "
-                     "Kokkos with CUDA require it\n         try"
+                     "Kokkos with CUDA require it by default\n         try"
                      " '-pk kokkos gpu/direct no' when getting segmentation faults");
     } else {
       ; // should never get here
-- 
GitLab


From 65d11171c4ee6afb14b72df7759828af0a700ddc Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Thu, 9 Aug 2018 03:36:21 -0400
Subject: [PATCH 160/243] Replace functions which were deprecated since CUDA 5

---
 lib/gpu/geryon/nvd_device.h | 114 ++++++++++++++++++++----------------
 1 file changed, 65 insertions(+), 49 deletions(-)

diff --git a/lib/gpu/geryon/nvd_device.h b/lib/gpu/geryon/nvd_device.h
index 129bdbbdef..42f176bcbf 100644
--- a/lib/gpu/geryon/nvd_device.h
+++ b/lib/gpu/geryon/nvd_device.h
@@ -48,7 +48,18 @@ struct NVDProperties {
   int minor;
   CUDA_INT_TYPE totalGlobalMem;
   int multiProcessorCount;
-  CUdevprop_st p;
+
+  int maxThreadsPerBlock;
+  int maxThreadsDim[3];
+  int maxGridSize[3];
+  int sharedMemPerBlock;
+  int totalConstantMemory;
+  int SIMDWidth;
+  int memPitch;
+  int regsPerBlock;
+  int clockRate;
+  int textureAlign;
+
   int kernelExecTimeoutEnabled;
   int integrated;
   int canMapHostMemory;
@@ -210,18 +221,18 @@ class UCL_Device {
   inline double clock_rate() { return clock_rate(_device); }
   /// Clock rate in GHz
   inline double clock_rate(const int i)
-    { return _properties[i].p.clockRate*1e-6;}
+    { return _properties[i].clockRate*1e-6;}
 
   /// Get the maximum number of threads per block
   inline size_t group_size() { return group_size(_device); }
   /// Get the maximum number of threads per block
   inline size_t group_size(const int i)
-    { return _properties[i].p.maxThreadsPerBlock; }
+    { return _properties[i].maxThreadsPerBlock; }
 
   /// Return the maximum memory pitch in bytes for current device
   inline size_t max_pitch() { return max_pitch(_device); }
   /// Return the maximum memory pitch in bytes
-  inline size_t max_pitch(const int i) { return _properties[i].p.memPitch; }
+  inline size_t max_pitch(const int i) { return _properties[i].memPitch; }
 
   /// Returns false if accelerator cannot be shared by multiple processes
   /** If it cannot be determined, true is returned **/
@@ -275,49 +286,54 @@ class UCL_Device {
 UCL_Device::UCL_Device() {
   CU_SAFE_CALL_NS(cuInit(0));
   CU_SAFE_CALL_NS(cuDeviceGetCount(&_num_devices));
-  for (int dev=0; dev<_num_devices; ++dev) {
-    CUdevice m;
-    CU_SAFE_CALL_NS(cuDeviceGet(&m,dev));
+  for (int i=0; i<_num_devices; ++i) {
+    CUdevice dev;
+    CU_SAFE_CALL_NS(cuDeviceGet(&dev,i));
     int major, minor;
-    CU_SAFE_CALL_NS(cuDeviceComputeCapability(&major,&minor,m));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&major, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&minor, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR, dev));
     if (major==9999)
       continue;
 
-    _properties.push_back(NVDProperties());
-    _properties.back().device_id=dev;
-    _properties.back().major=major;
-    _properties.back().minor=minor;
+    NVDProperties prop;
+    prop.device_id = i;
+    prop.major=major;
+    prop.minor=minor;
 
     char namecstr[1024];
-    CU_SAFE_CALL_NS(cuDeviceGetName(namecstr,1024,m));
-    _properties.back().name=namecstr;
-
-    CU_SAFE_CALL_NS(cuDeviceTotalMem(&_properties.back().totalGlobalMem,m));
-    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&_properties.back().multiProcessorCount,
-                                       CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT,
-                                         m));
-    CU_SAFE_CALL_NS(cuDeviceGetProperties(&_properties.back().p,m));
+    CU_SAFE_CALL_NS(cuDeviceGetName(namecstr,1024,dev));
+    prop.name=namecstr;
+
+    CU_SAFE_CALL_NS(cuDeviceTotalMem(&prop.totalGlobalMem,dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.multiProcessorCount, CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT, dev));
+
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.maxThreadsPerBlock, CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.maxThreadsDim[0], CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.maxThreadsDim[1], CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Y, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.maxThreadsDim[2], CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Z, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.maxGridSize[0], CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.maxGridSize[1], CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Y, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.maxGridSize[2], CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Z, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.sharedMemPerBlock, CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.totalConstantMemory, CU_DEVICE_ATTRIBUTE_TOTAL_CONSTANT_MEMORY, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.SIMDWidth, CU_DEVICE_ATTRIBUTE_WARP_SIZE, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.memPitch, CU_DEVICE_ATTRIBUTE_MAX_PITCH, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.regsPerBlock, CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.clockRate, CU_DEVICE_ATTRIBUTE_CLOCK_RATE, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.textureAlign, CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT, dev));
+
     #if CUDA_VERSION >= 2020
-    CU_SAFE_CALL_NS(cuDeviceGetAttribute(
-                      &_properties.back().kernelExecTimeoutEnabled,
-                      CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT,dev));
-    CU_SAFE_CALL_NS(cuDeviceGetAttribute(
-                      &_properties.back().integrated,
-                      CU_DEVICE_ATTRIBUTE_INTEGRATED, dev));
-    CU_SAFE_CALL_NS(cuDeviceGetAttribute(
-                      &_properties.back().canMapHostMemory,
-                      CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY, dev));
-    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&_properties.back().computeMode,
-                      CU_DEVICE_ATTRIBUTE_COMPUTE_MODE,dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.kernelExecTimeoutEnabled, CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT,dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.integrated, CU_DEVICE_ATTRIBUTE_INTEGRATED, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.canMapHostMemory, CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.computeMode, CU_DEVICE_ATTRIBUTE_COMPUTE_MODE,dev));
     #endif
     #if CUDA_VERSION >= 3010
-    CU_SAFE_CALL_NS(cuDeviceGetAttribute(
-                      &_properties.back().concurrentKernels,
-                      CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS, dev));
-    CU_SAFE_CALL_NS(cuDeviceGetAttribute(
-                      &_properties.back().ECCEnabled,
-                      CU_DEVICE_ATTRIBUTE_ECC_ENABLED, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.concurrentKernels, CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS, dev));
+    CU_SAFE_CALL_NS(cuDeviceGetAttribute(&prop.ECCEnabled, CU_DEVICE_ATTRIBUTE_ECC_ENABLED, dev));
     #endif
+
+    _properties.push_back(prop);
   }
   _device=-1;
   _cq.push_back(CUstream());
@@ -393,27 +409,27 @@ void UCL_Device::print_all(std::ostream &out) {
         << cores(i) << std::endl;
     #endif
     out << "  Total amount of constant memory:               "
-        << _properties[i].p.totalConstantMemory << " bytes\n";
+        << _properties[i].totalConstantMemory << " bytes\n";
     out << "  Total amount of local/shared memory per block: "
-        << _properties[i].p.sharedMemPerBlock << " bytes\n";
+        << _properties[i].sharedMemPerBlock << " bytes\n";
     out << "  Total number of registers available per block: "
-        << _properties[i].p.regsPerBlock << std::endl;
+        << _properties[i].regsPerBlock << std::endl;
     out << "  Warp size:                                     "
-        << _properties[i].p.SIMDWidth << std::endl;
+        << _properties[i].SIMDWidth << std::endl;
     out << "  Maximum number of threads per block:           "
-        << _properties[i].p.maxThreadsPerBlock << std::endl;
+        << _properties[i].maxThreadsPerBlock << std::endl;
     out << "  Maximum group size (# of threads per block)    "
-        << _properties[i].p.maxThreadsDim[0] << " x "
-        << _properties[i].p.maxThreadsDim[1] << " x "
-        << _properties[i].p.maxThreadsDim[2] << std::endl;
+        << _properties[i].maxThreadsDim[0] << " x "
+        << _properties[i].maxThreadsDim[1] << " x "
+        << _properties[i].maxThreadsDim[2] << std::endl;
     out << "  Maximum item sizes (# threads for each dim)    "
-        << _properties[i].p.maxGridSize[0] << " x "
-        << _properties[i].p.maxGridSize[1] << " x "
-        << _properties[i].p.maxGridSize[2] << std::endl;
+        << _properties[i].maxGridSize[0] << " x "
+        << _properties[i].maxGridSize[1] << " x "
+        << _properties[i].maxGridSize[2] << std::endl;
     out << "  Maximum memory pitch:                          "
         << max_pitch(i) << " bytes\n";
     out << "  Texture alignment:                             "
-        << _properties[i].p.textureAlign << " bytes\n";
+        << _properties[i].textureAlign << " bytes\n";
     out << "  Clock rate:                                    "
         << clock_rate(i) << " GHz\n";
     #if CUDA_VERSION >= 2020
-- 
GitLab


From dd9fed11dc047ab3b1acd512e58666c51f0cdade Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 9 Aug 2018 04:16:22 -0400
Subject: [PATCH 161/243] use '-pk kokkos gpu/direct on/off' consistently in
 comments and docs

---
 doc/src/Speed_kokkos.txt |  6 +++---
 doc/src/package.txt      | 20 ++++++++++----------
 src/KOKKOS/kokkos.cpp    |  8 ++++----
 3 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/doc/src/Speed_kokkos.txt b/doc/src/Speed_kokkos.txt
index 6e64510e44..597ed73e53 100644
--- a/doc/src/Speed_kokkos.txt
+++ b/doc/src/Speed_kokkos.txt
@@ -102,9 +102,9 @@ the case, especially when using pre-compiled MPI libraries provided by
 a Linux distribution. This is not a problem when using only a single
 GPU and a single MPI rank on a desktop. When running with multiple
 MPI ranks, you may see segmentation faults without GPU-direct support.
-These can be avoided by adding the flags '-pk kokkos gpu/direct no'
-to the LAMMPS command line or using "package kokkos gpu/direct no"_package.html
-in the input file.
+These can be avoided by adding the flags '-pk kokkos gpu/direct off'
+to the LAMMPS command line or by using the command
+"package kokkos gpu/direct off"_package.html in the input file.
 
 Use a C++11 compatible compiler and set KOKKOS_ARCH variable in
 /src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi for both GPU and CPU as
diff --git a/doc/src/package.txt b/doc/src/package.txt
index 19a19156b7..55bd111b50 100644
--- a/doc/src/package.txt
+++ b/doc/src/package.txt
@@ -507,10 +507,10 @@ typically faster to let the host handle communication, by using the
 {host} value.  Using {host} instead of {no} will enable use of
 multiple threads to pack/unpack communicated data.
 
-The {gpu/direct} keyword chooses whether GPU-direct will be used. When 
-this keyword is set to {on}, buffers in GPU memory are passed directly 
-through MPI send/receive calls. This reduces overhead of first copying 
-the data to the host CPU. However GPU-direct is not supported on all 
+The {gpu/direct} keyword chooses whether GPU-direct will be used. When
+this keyword is set to {on}, buffers in GPU memory are passed directly
+through MPI send/receive calls. This reduces overhead of first copying
+the data to the host CPU. However GPU-direct is not supported on all
 systems, which can lead to segmentation faults and would require
 using a value of {off}. When the {gpu/direct} keyword is set to {off}
 while any of the {comm} keywords are set to {device}, the value for the
@@ -622,12 +622,12 @@ is used.  If it is not used, you must invoke the package intel
 command in your input script or or via the "-pk intel" "command-line
 switch"_Section_start.html#start_6.
 
-For the KOKKOS package, the option defaults neigh = full, neigh/qeq = 
-full, newton = off, binsize = 0.0, and comm = device, gpu/direct = on. 
-These settings are made automatically by the required "-k on" 
-"command-line switch"_Section_start.html#start_6. You can change them bu 
-using the package kokkos command in your input script or via the "-pk 
-kokkos" "command-line switch"_Section_start.html#start_6. 
+For the KOKKOS package, the option defaults neigh = full, neigh/qeq =
+full, newton = off, binsize = 0.0, and comm = device, gpu/direct = on.
+These settings are made automatically by the required "-k on"
+"command-line switch"_Section_start.html#start_6. You can change them by
+using the package kokkos command in your input script or via the "-pk
+kokkos" "command-line switch"_Section_start.html#start_6.
 
 For the OMP package, the default is Nthreads = 0 and the option
 defaults are neigh = yes.  These settings are made automatically if
diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp
index 078b871473..050b1420d3 100644
--- a/src/KOKKOS/kokkos.cpp
+++ b/src/KOKKOS/kokkos.cpp
@@ -156,16 +156,16 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
     } else if (-1 == have_gpu_direct() ) {
       error->warning(FLERR,"Kokkos with CUDA assumes GPU-direct is available,"
                      " but cannot determine if this is the case\n         try"
-                     " '-pk kokkos gpu/direct no' when getting segmentation faults");
+                     " '-pk kokkos gpu/direct off' when getting segmentation faults");
     } else if ( 0 == have_gpu_direct() ) {
       error->warning(FLERR,"GPU-direct is NOT available, but some parts of "
                      "Kokkos with CUDA require it by default\n         try"
-                     " '-pk kokkos gpu/direct no' when getting segmentation faults");
+                     " '-pk kokkos gpu/direct off' when getting segmentation faults");
     } else {
       ; // should never get here
     }
   }
-    
+
 #endif
 
   Kokkos::InitArguments args;
@@ -310,7 +310,7 @@ void KokkosLMP::accelerator(int narg, char **arg)
     } else error->all(FLERR,"Illegal package kokkos command");
   }
 
-  // if "gpu/direct no" and "comm device", change to "comm host"
+  // if "gpu/direct off" and "comm device", change to "comm host"
 
   if (!gpu_direct) {
    if (exchange_comm_classic == 0 && exchange_comm_on_host == 0)
-- 
GitLab


From 9521814441246f55c3d26087bc2e09b597c22978 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 9 Aug 2018 04:46:31 -0400
Subject: [PATCH 162/243] rename Kokkos::gpu_direct to Kokkos::gpu_direct_flag

This is for consistency with other parts of LAMMPS where
such variables have "flag" in their name. Also reduces
confusion with have_gpu_direct() function.

When we can safely detect, that GPU-direct is not available,
change the default setting of Kokkos::gpu_direct_flag from 1 to 0
---
 doc/src/package.txt            | 11 ++++++++---
 src/KOKKOS/comm_kokkos.cpp     |  4 ++--
 src/KOKKOS/gridcomm_kokkos.cpp |  8 ++++----
 src/KOKKOS/kokkos.cpp          | 21 ++++++++++++---------
 src/KOKKOS/kokkos.h            |  2 +-
 5 files changed, 27 insertions(+), 19 deletions(-)

diff --git a/doc/src/package.txt b/doc/src/package.txt
index 55bd111b50..3d25a64d31 100644
--- a/doc/src/package.txt
+++ b/doc/src/package.txt
@@ -512,9 +512,12 @@ this keyword is set to {on}, buffers in GPU memory are passed directly
 through MPI send/receive calls. This reduces overhead of first copying
 the data to the host CPU. However GPU-direct is not supported on all
 systems, which can lead to segmentation faults and would require
-using a value of {off}. When the {gpu/direct} keyword is set to {off}
-while any of the {comm} keywords are set to {device}, the value for the
-{comm} keywords will be automatically changed to {host}.
+using a value of {off}. If LAMMPS can safely detect that GPU-direct is
+not available (currently only possible with OpenMPI v2.0.0 or later),
+then the {gpu/direct} keyword is automatically set to {off} by default.
+When the {gpu/direct} keyword is set to {off} while any of the {comm}
+keywords are set to {device}, the value for these {comm} keywords will
+be automatically changed to {host}.
 
 :line
 
@@ -624,6 +627,8 @@ switch"_Section_start.html#start_6.
 
 For the KOKKOS package, the option defaults neigh = full, neigh/qeq =
 full, newton = off, binsize = 0.0, and comm = device, gpu/direct = on.
+When LAMMPS can safely detect, that GPU-direct is not available, the
+default value of gpu/direct becomes "off".
 These settings are made automatically by the required "-k on"
 "command-line switch"_Section_start.html#start_6. You can change them by
 using the package kokkos command in your input script or via the "-pk
diff --git a/src/KOKKOS/comm_kokkos.cpp b/src/KOKKOS/comm_kokkos.cpp
index 6190d71b25..21840b7c3e 100644
--- a/src/KOKKOS/comm_kokkos.cpp
+++ b/src/KOKKOS/comm_kokkos.cpp
@@ -406,7 +406,7 @@ void CommKokkos::forward_comm_pair_device(Pair *pair)
     if (sendproc[iswap] != me) {
       double* buf_send_pair;
       double* buf_recv_pair;
-      if (lmp->kokkos->gpu_direct) {
+      if (lmp->kokkos->gpu_direct_flag) {
         buf_send_pair = k_buf_send_pair.view<DeviceType>().data();
         buf_recv_pair = k_buf_recv_pair.view<DeviceType>().data();
       } else {
@@ -424,7 +424,7 @@ void CommKokkos::forward_comm_pair_device(Pair *pair)
         MPI_Send(buf_send_pair,n,MPI_DOUBLE,sendproc[iswap],0,world);
       if (recvnum[iswap]) MPI_Wait(&request,MPI_STATUS_IGNORE);
 
-      if (!lmp->kokkos->gpu_direct) {
+      if (!lmp->kokkos->gpu_direct_flag) {
         k_buf_recv_pair.modify<LMPHostType>();
         k_buf_recv_pair.sync<DeviceType>();
       }
diff --git a/src/KOKKOS/gridcomm_kokkos.cpp b/src/KOKKOS/gridcomm_kokkos.cpp
index 44795b569d..64a9d6992f 100644
--- a/src/KOKKOS/gridcomm_kokkos.cpp
+++ b/src/KOKKOS/gridcomm_kokkos.cpp
@@ -529,7 +529,7 @@ void GridCommKokkos<DeviceType>::forward_comm(KSpace *kspace, int which)
     if (swap[m].sendproc != me) {
       FFT_SCALAR* buf1;
       FFT_SCALAR* buf2;
-      if (lmp->kokkos->gpu_direct) {
+      if (lmp->kokkos->gpu_direct_flag) {
         buf1 = k_buf1.view<DeviceType>().data();
         buf2 = k_buf2.view<DeviceType>().data();
       } else {
@@ -545,7 +545,7 @@ void GridCommKokkos<DeviceType>::forward_comm(KSpace *kspace, int which)
                swap[m].sendproc,0,gridcomm);
       MPI_Wait(&request,MPI_STATUS_IGNORE);
 
-      if (!lmp->kokkos->gpu_direct) {
+      if (!lmp->kokkos->gpu_direct_flag) {
         k_buf2.modify<LMPHostType>();
         k_buf2.sync<DeviceType>();
       }
@@ -579,7 +579,7 @@ void GridCommKokkos<DeviceType>::reverse_comm(KSpace *kspace, int which)
     if (swap[m].recvproc != me) {
       FFT_SCALAR* buf1;
       FFT_SCALAR* buf2;
-      if (lmp->kokkos->gpu_direct) {
+      if (lmp->kokkos->gpu_direct_flag) {
         buf1 = k_buf1.view<DeviceType>().data();
         buf2 = k_buf2.view<DeviceType>().data();
       } else {
@@ -595,7 +595,7 @@ void GridCommKokkos<DeviceType>::reverse_comm(KSpace *kspace, int which)
                swap[m].recvproc,0,gridcomm);
       MPI_Wait(&request,MPI_STATUS_IGNORE);
 
-      if (!lmp->kokkos->gpu_direct) {
+      if (!lmp->kokkos->gpu_direct_flag) {
         k_buf2.modify<LMPHostType>();
         k_buf2.sync<DeviceType>();
       }
diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp
index 050b1420d3..fb6b8d8d45 100644
--- a/src/KOKKOS/kokkos.cpp
+++ b/src/KOKKOS/kokkos.cpp
@@ -158,14 +158,12 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
                      " but cannot determine if this is the case\n         try"
                      " '-pk kokkos gpu/direct off' when getting segmentation faults");
     } else if ( 0 == have_gpu_direct() ) {
-      error->warning(FLERR,"GPU-direct is NOT available, but some parts of "
-                     "Kokkos with CUDA require it by default\n         try"
-                     " '-pk kokkos gpu/direct off' when getting segmentation faults");
+      error->warning(FLERR,"GPU-direct is NOT available, "
+                     "using '-pk kokkos gpu/direct off' by default");
     } else {
       ; // should never get here
     }
   }
-
 #endif
 
   Kokkos::InitArguments args;
@@ -186,7 +184,12 @@ KokkosLMP::KokkosLMP(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
   exchange_comm_on_host = 0;
   forward_comm_on_host = 0;
   reverse_comm_on_host = 0;
-  gpu_direct = 1;
+  gpu_direct_flag = 1;
+
+#if KOKKOS_USE_CUDA
+  // only if we can safely detect, that GPU-direct is not available, change default
+  if (0 == have_gpu_direct()) gpu_direct_flag = 0;
+#endif
 
 #ifdef KILL_KOKKOS_ON_SIGSEGV
   signal(SIGSEGV, my_signal_handler);
@@ -217,7 +220,7 @@ void KokkosLMP::accelerator(int narg, char **arg)
   double binsize = 0.0;
   exchange_comm_classic = forward_comm_classic = reverse_comm_classic = 0;
   exchange_comm_on_host = forward_comm_on_host = reverse_comm_on_host = 0;
-  gpu_direct = 1;
+  gpu_direct_flag = 1;
 
   int iarg = 0;
   while (iarg < narg) {
@@ -303,8 +306,8 @@ void KokkosLMP::accelerator(int narg, char **arg)
       iarg += 2;
     } else if (strcmp(arg[iarg],"gpu/direct") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal package kokkos command");
-      if (strcmp(arg[iarg+1],"off") == 0) gpu_direct = 0;
-      else if (strcmp(arg[iarg+1],"on") == 0) gpu_direct = 1;
+      if (strcmp(arg[iarg+1],"off") == 0) gpu_direct_flag = 0;
+      else if (strcmp(arg[iarg+1],"on") == 0) gpu_direct_flag = 1;
       else error->all(FLERR,"Illegal package kokkos command");
       iarg += 2;
     } else error->all(FLERR,"Illegal package kokkos command");
@@ -312,7 +315,7 @@ void KokkosLMP::accelerator(int narg, char **arg)
 
   // if "gpu/direct off" and "comm device", change to "comm host"
 
-  if (!gpu_direct) {
+  if (!gpu_direct_flag) {
    if (exchange_comm_classic == 0 && exchange_comm_on_host == 0)
      exchange_comm_on_host = 1;
    if (forward_comm_classic == 0 && forward_comm_on_host == 0)
diff --git a/src/KOKKOS/kokkos.h b/src/KOKKOS/kokkos.h
index c3c5d0d6e1..cf209c0adb 100644
--- a/src/KOKKOS/kokkos.h
+++ b/src/KOKKOS/kokkos.h
@@ -34,7 +34,7 @@ class KokkosLMP : protected Pointers {
   int num_threads,ngpu;
   int numa;
   int auto_sync;
-  int gpu_direct;
+  int gpu_direct_flag;
 
   KokkosLMP(class LAMMPS *, int, char **);
   ~KokkosLMP();
-- 
GitLab


From d5594350c4f57dae239ba5c3c00b1f831f3456e2 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Thu, 9 Aug 2018 08:50:11 -0600
Subject: [PATCH 163/243] change zero-size shrink box to original box

---
 doc/src/compute_property_local.txt | 14 +++++++-------
 src/balance.cpp                    | 31 +++++++++++++++++-------------
 src/rcb.cpp                        |  2 ++
 3 files changed, 27 insertions(+), 20 deletions(-)

diff --git a/doc/src/compute_property_local.txt b/doc/src/compute_property_local.txt
index e4e6f1ef1e..c4ad0afc95 100644
--- a/doc/src/compute_property_local.txt
+++ b/doc/src/compute_property_local.txt
@@ -2,7 +2,7 @@
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
+:link(lc,Commands_all.html)
 
 :line
 
@@ -48,10 +48,10 @@ compute 1 all property/local atype aatom2 :pre
 
 Define a computation that stores the specified attributes as local
 data so it can be accessed by other "output
-commands"_Section_howto.html#howto_15.  If the input attributes refer
-to bond information, then the number of datums generated, aggregated
-across all processors, equals the number of bonds in the system.
-Ditto for pairs, angles, etc.
+commands"_Howto_output.html.  If the input attributes refer to bond
+information, then the number of datums generated, aggregated across
+all processors, equals the number of bonds in the system.  Ditto for
+pairs, angles, etc.
 
 If multiple attributes are specified then they must all generate the
 same amount of information, so that the resulting local array has the
@@ -140,8 +140,8 @@ the array is the number of bonds, angles, etc.  If a single input is
 specified, a local vector is produced.  If two or more inputs are
 specified, a local array is produced where the number of columns = the
 number of inputs.  The vector or array can be accessed by any command
-that uses local values from a compute as input.  See "this
-section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+that uses local values from a compute as input.  See the "Howto
+output"_Howto_output.html doc page for an overview of LAMMPS output
 options.
 
 The vector or array values will be integers that correspond to the
diff --git a/src/balance.cpp b/src/balance.cpp
index ed44e3ee0e..2a953caf47 100644
--- a/src/balance.cpp
+++ b/src/balance.cpp
@@ -28,7 +28,6 @@
 #include "rcb.h"
 #include "irregular.h"
 #include "domain.h"
-#include "neighbor.h"
 #include "force.h"
 #include "update.h"
 #include "group.h"
@@ -351,13 +350,13 @@ void Balance::command(int narg, char **arg)
   domain->set_local_box();
 
   // move particles to new processors via irregular()
+  // set disable = 0, so weights migrate with atoms for imbfinal calculation
 
   if (domain->triclinic) domain->x2lamda(atom->nlocal);
   Irregular *irregular = new Irregular(lmp);
   if (wtflag) fixstore->disable = 0;
   if (style == BISECTION) irregular->migrate_atoms(1,1,rcb->sendproc);
   else irregular->migrate_atoms(1);
-  if (wtflag) fixstore->disable = 1;
   delete irregular;
   if (domain->triclinic) domain->lamda2x(atom->nlocal);
 
@@ -378,9 +377,11 @@ void Balance::command(int narg, char **arg)
   }
 
   // imbfinal = final imbalance
+  // set disable = 1, so weights no longer migrate with atoms
 
   double maxfinal;
   double imbfinal = imbalance_factor(maxfinal);
+  if (wtflag) fixstore->disable = 1;
 
   // stats output
 
@@ -541,6 +542,8 @@ void Balance::weight_storage(char *prefix)
     fixstore = (FixStore *) modify->fix[modify->nfix-1];
   } else fixstore = (FixStore *) modify->fix[ifix];
 
+  // do not carry weights with atoms during normal atom migration
+
   fixstore->disable = 1;
 
   if (prefix) delete [] fixargs[0];
@@ -644,17 +647,19 @@ int *Balance::bisection(int sortflag)
   double *shrinklo = &shrinkall[0];
   double *shrinkhi = &shrinkall[3];
 
-  // ensure that that the box has at least some extent.
-  const double nproc_rt = domain->dimension == 3 ?
-                          cbrt(static_cast<double>(comm->nprocs)) :
-                          sqrt(static_cast<double>(comm->nprocs));
-  const double min_extent = ceil(nproc_rt)*neighbor->skin;
-  for (int i = 0; i < domain->dimension; i++) {
-    if (shrinkall[3+i]-shrinkall[i] < min_extent) {
-      const double mid = 0.5*(shrinkall[3+i]+shrinkall[i]);
-      shrinkall[3+i] = std::min(mid + min_extent*0.5, boxhi[i]);
-      shrinkall[i]   = std::max(mid - min_extent*0.5, boxlo[i]);
-    }
+  // if shrink size in any dim is zero, use box size in that dim
+
+  if (shrinklo[0] == shrinkhi[0]) {
+    shrinklo[0] = boxlo[0];
+    shrinkhi[0] = boxhi[0];
+  }
+  if (shrinklo[1] == shrinkhi[1]) {
+    shrinklo[1] = boxlo[1];
+    shrinkhi[1] = boxhi[1];
+  }
+  if (shrinklo[2] == shrinkhi[2]) {
+    shrinklo[2] = boxlo[2];
+    shrinkhi[2] = boxhi[2];
   }
 
   // invoke RCB
diff --git a/src/rcb.cpp b/src/rcb.cpp
index 4ea70ee914..13e27b6fbf 100644
--- a/src/rcb.cpp
+++ b/src/rcb.cpp
@@ -241,6 +241,8 @@ void RCB::compute(int dimension, int n, double **x, double *wt,
     // dim_select = selected cut dimension
     // valuehalf_select = valuehalf in that dimension
     // dotmark_select = dot markings in that dimension
+    // initialize largest = -1.0 to insure a cut in some dim is accepted
+    //   e.g. if current recursed box is size 0 in all dims
 
     int dim_select = -1;
     double largest = -1.0;
-- 
GitLab


From a97ad15d22699e22adb269df95aa9fc33ee85081 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 9 Aug 2018 05:09:46 -0400
Subject: [PATCH 164/243] update .gitignore

---
 src/.gitignore | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/.gitignore b/src/.gitignore
index 058833ffb3..df3a22a5cd 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -729,6 +729,8 @@
 /pair_eam.h
 /pair_eam_alloy.cpp
 /pair_eam_alloy.h
+/pair_eam_cd.cpp
+/pair_eam_cd.h
 /pair_eam_fs.cpp
 /pair_eam_fs.h
 /pair_edip.cpp
-- 
GitLab


From df20fbbca499b9a86f65b16d7719929940f8c296 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 9 Aug 2018 16:50:09 +0200
Subject: [PATCH 165/243] fix a bunch of broken linke or make links unique
 across files

---
 doc/src/Commands_bond.txt     | 2 +-
 doc/src/Howto_tip4p.txt       | 4 ++--
 doc/src/Intro_features.txt    | 4 ++--
 doc/src/Manual.txt            | 6 ++++--
 doc/src/Packages_details.txt  | 8 ++++----
 doc/src/Packages_standard.txt | 4 ++--
 doc/src/Python_install.txt    | 2 +-
 doc/src/Python_shlib.txt      | 3 ++-
 doc/src/fix_manifoldforce.txt | 2 +-
 doc/src/fix_property_atom.txt | 3 ++-
 doc/src/fix_wall_reflect.txt  | 4 ++--
 11 files changed, 23 insertions(+), 19 deletions(-)

diff --git a/doc/src/Commands_bond.txt b/doc/src/Commands_bond.txt
index 314260cb14..48069d3120 100644
--- a/doc/src/Commands_bond.txt
+++ b/doc/src/Commands_bond.txt
@@ -9,7 +9,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 "Fix styles"_Commands_fix.html,
 "Compute styles"_Commands_compute.html,
 "Pair styles"_Commands_pair.html,
-"Bond styles"_Commands_bond.html,
+"Bond styles"_Commands_bond.html#bond,
 "Angle styles"_Commands_bond.html#angle,
 "Dihedral styles"_Commands_bond.html#dihedral,
 "Improper styles"_Commands_bond.html#improper,
diff --git a/doc/src/Howto_tip4p.txt b/doc/src/Howto_tip4p.txt
index f9e548e268..9f7f141314 100644
--- a/doc/src/Howto_tip4p.txt
+++ b/doc/src/Howto_tip4p.txt
@@ -31,7 +31,7 @@ using the "fix shake"_fix_shake.html command.
 
 These are the additional parameters (in real units) to set for O and H
 atoms and the water molecule to run a rigid TIP4P model with a cutoff
-"(Jorgensen)"_#Jorgensen1.  Note that the OM distance is specified in
+"(Jorgensen)"_#Jorgensen5.  Note that the OM distance is specified in
 the "pair_style"_pair_style.html command, not as part of the pair
 coefficients.
 
@@ -107,6 +107,6 @@ models"_http://en.wikipedia.org/wiki/Water_model.
 
 :line
 
-:link(Jorgensen1)
+:link(Jorgensen5)
 [(Jorgensen)] Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem
 Phys, 79, 926 (1983).
diff --git a/doc/src/Intro_features.txt b/doc/src/Intro_features.txt
index 2bb7e25683..07c549c156 100644
--- a/doc/src/Intro_features.txt
+++ b/doc/src/Intro_features.txt
@@ -20,7 +20,7 @@ classes of functionality:
 "Integrators"_#integrate
 "Diagnostics"_#diag
 "Output"_#output
-"Multi-replica models"_#replica
+"Multi-replica models"_#replica1
 "Pre- and post-processing"_#prepost
 "Specialized features (beyond MD itself)"_#special :ul
 
@@ -154,7 +154,7 @@ Output :h4,link(output)
   time averaging of system-wide quantities
   atom snapshots in native, XYZ, XTC, DCD, CFG formats :ul
 
-Multi-replica models :h4,link(replica)
+Multi-replica models :h4,link(replica1)
 
 "nudged elastic band"_neb.html
 "parallel replica dynamics"_prd.html
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index a5e8b63640..5a70be5c50 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -8,6 +8,8 @@
 
 <BODY>
 
+<H1></H1>
+
 <!-- END_HTML_ONLY -->
 
 "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
@@ -18,8 +20,6 @@
 
 :line
 
-<H1></H1>
-
 LAMMPS Documentation :c,h1
 2 Aug 2018 version :c,h2
 
@@ -71,6 +71,7 @@ every LAMMPS command.
    :name: userdoc
    :includehidden:
 
+   Manual_version
    Intro
    Section_start
    Commands
@@ -82,6 +83,7 @@ every LAMMPS command.
    Modify
    Python
    Errors
+   Build_manual
 
 .. toctree::
    :caption: Index
diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt
index eb92fe4dc4..8b28002c2e 100644
--- a/doc/src/Packages_details.txt
+++ b/doc/src/Packages_details.txt
@@ -49,7 +49,7 @@ as contained in the file name.
 "PYTHON"_#PYTHON,
 "QEQ"_#QEQ,
 "REAX"_#REAX,
-"REPLICA"_#REPLICA,
+"REPLICA"_#REPLICA2,
 "RIGID"_#RIGID,
 "SHOCK"_#SHOCK,
 "SNAP"_#SNAP,
@@ -392,7 +392,7 @@ src/GPU: filenames -> commands
 src/GPU/README
 lib/gpu/README
 "Speed packages"_Speed_packages.html
-"Speed gpu"_Speed_gpu.html.html
+"Speed gpu"_Speed_gpu.html
 "Section 2.6 -sf gpu"_Section_start.html#start_6
 "Section 2.6 -pk gpu"_Section_start.html#start_6
 "package gpu"_package.html
@@ -1225,7 +1225,7 @@ examples/reax :ul
 
 :line
 
-REPLICA package :link(REPLICA),h4
+REPLICA package :link(REPLICA2),h4
 
 [Contents:]
 
@@ -1373,7 +1373,7 @@ make machine :pre
 [Supporting info:]
 
 src/SPIN: filenames -> commands
-"Howto spin"_Howto_spin.html
+"Howto spins"_Howto_spins.html
 "pair_style spin/dmi"_pair_spin_dmi.html
 "pair_style spin/exchange"_pair_spin_exchange.html
 "pair_style spin/magelec"_pair_spin_magelec.html
diff --git a/doc/src/Packages_standard.txt b/doc/src/Packages_standard.txt
index 7e64345602..56ec693185 100644
--- a/doc/src/Packages_standard.txt
+++ b/doc/src/Packages_standard.txt
@@ -57,9 +57,9 @@ Package, Description, Doc page, Example, Library
 "PYTHON"_Packages_details.html#PYTHON, embed Python code in an input script, "python"_python.html, python, sys
 "QEQ"_Packages_details.html#QEQ, QEq charge equilibration, "fix qeq"_fix_qeq.html, qeq, -
 "REAX"_Packages_details.html#REAX, ReaxFF potential (Fortran), "pair_style reax"_pair_reax.html, reax, int
-"REPLICA"_Packages_details.html#REPLICA, multi-replica methods, "Howto replica"_Howto_replica.html, tad, -
+"REPLICA"_Packages_details.html#REPLICA2, multi-replica methods, "Howto replica"_Howto_replica.html, tad, -
 "RIGID"_Packages_details.html#RIGID, rigid bodies and constraints, "fix rigid"_fix_rigid.html, rigid, -
 "SHOCK"_Packages_details.html#SHOCK, shock loading methods, "fix msst"_fix_msst.html, -, -
 "SNAP"_Packages_details.html#SNAP, quantum-fitted potential, "pair_style snap"_pair_snap.html, snap, -
-"SPIN"_#SPIN, magnetic atomic spin dynamics, "Howto spin"_Howto_spin.html, SPIN, -"SRD"_Packages_details.html#SRD, stochastic rotation dynamics, "fix srd"_fix_srd.html, srd, -
+"SPIN"_#SPIN, magnetic atomic spin dynamics, "Howto spins"_Howto_spins.html, SPIN, -"SRD"_Packages_details.html#SRD, stochastic rotation dynamics, "fix srd"_fix_srd.html, srd, -
 "VORONOI"_Packages_details.html#VORONOI, Voronoi tesselation, "compute voronoi/atom"_compute_voronoi_atom.html, -, ext :tb(ea=c,ca1=l)
diff --git a/doc/src/Python_install.txt b/doc/src/Python_install.txt
index 6591360ae2..85cf267de0 100644
--- a/doc/src/Python_install.txt
+++ b/doc/src/Python_install.txt
@@ -68,7 +68,7 @@ need to prefix this with "sudo".  In this mode you cannot control
 which Python is invoked by root.
 
 Note that if you want Python to be able to load different versions of
-the LAMMPS shared library (see "this section"_#py_5 below), you will
+the LAMMPS shared library (see "this section"_Python_shlib.html), you will
 need to manually copy files like liblammps_g++.so into the appropriate
 system directory.  This is not needed if you set the LD_LIBRARY_PATH
 environment variable as described above.
diff --git a/doc/src/Python_shlib.txt b/doc/src/Python_shlib.txt
index 1a921e4025..c3b81fa342 100644
--- a/doc/src/Python_shlib.txt
+++ b/doc/src/Python_shlib.txt
@@ -31,4 +31,5 @@ extra libraries must also be shared libraries.  If the LAMMPS
 shared-library build fails with an error complaining about this, see
 "Section 2.4"_Section_start.html#start_4 for more details.
 
-Also include CMake info on this
+TODO: Also include CMake info on this
+
diff --git a/doc/src/fix_manifoldforce.txt b/doc/src/fix_manifoldforce.txt
index aa32a875bf..2159d6211a 100644
--- a/doc/src/fix_manifoldforce.txt
+++ b/doc/src/fix_manifoldforce.txt
@@ -24,7 +24,7 @@ fix constrain all manifoldforce sphere 5.0
 
 [Description:]
 
-This fix subtracts each time step from the force the component along the normal of the specified "manifold"_manifolds.html.
+This fix subtracts each time step from the force the component along the normal of the specified "manifold"_Howto_manifold.html.
 This can be used in combination with "minimize"_minimize.html to remove overlap between particles while
 keeping them (roughly) constrained to the given manifold, e.g. to set up a run with "fix nve/manifold/rattle"_fix_nve_manifold_rattle.html.
 I have found that only {hftn} and {quickmin} with a very small time step perform adequately though.
diff --git a/doc/src/fix_property_atom.txt b/doc/src/fix_property_atom.txt
index 136ed6c15e..8a70cd8213 100644
--- a/doc/src/fix_property_atom.txt
+++ b/doc/src/fix_property_atom.txt
@@ -200,7 +200,8 @@ added classes.
 
 :line
 
-:link(isotopes) Example for using per-atom masses with TIP4P water to
+:link(isotopes)
+Example for using per-atom masses with TIP4P water to
 study isotope effects. When setting up simulations with the "TIP4P
 pair styles"_Howto_tip4p.html for water, you have to provide exactly
 one atom type each to identify the water oxygen and hydrogen
diff --git a/doc/src/fix_wall_reflect.txt b/doc/src/fix_wall_reflect.txt
index 78be84eb63..e35fac6eeb 100644
--- a/doc/src/fix_wall_reflect.txt
+++ b/doc/src/fix_wall_reflect.txt
@@ -51,7 +51,7 @@ corresponding component of its velocity is flipped.
 When used in conjunction with "fix nve"_fix_nve.html and "run_style
 verlet"_run_style.html, the resultant time-integration algorithm is
 equivalent to the primitive splitting algorithm (PSA) described by
-"Bond"_#Bond.  Because each reflection event divides
+"Bond"_#Bond1.  Because each reflection event divides
 the corresponding timestep asymmetrically, energy conservation is only
 satisfied to O(dt), rather than to O(dt^2) as it would be for
 velocity-Verlet integration without reflective walls.
@@ -179,5 +179,5 @@ error.
 
 :line
 
-:link(Bond)
+:link(Bond1)
 [(Bond)] Bond and Leimkuhler, SIAM J Sci Comput, 30, p 134 (2007).
-- 
GitLab


From a06514372388ad7e7d003259aa51990cda621518 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 9 Aug 2018 16:50:36 +0200
Subject: [PATCH 166/243] create missing "Build_manual.txt" file from
 'doc/README'

---
 doc/src/Build_manual.txt | 125 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 125 insertions(+)
 create mode 100644 doc/src/Build_manual.txt

diff --git a/doc/src/Build_manual.txt b/doc/src/Build_manual.txt
new file mode 100644
index 0000000000..3dfc3d08b3
--- /dev/null
+++ b/doc/src/Build_manual.txt
@@ -0,0 +1,125 @@
+"Previous Section"_Errors.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Manual.html :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Building the LAMMPS Manual :h2
+
+Depending on how you obtained LAMMPS, the doc directory has 
+2 or 3 sub-directories and optionally 2 PDF files and an ePUB file:
+
+src             content files for LAMMPS documentation
+html            HTML version of the LAMMPS manual (see html/Manual.html)
+tools           tools and settings for building the documentation
+Manual.pdf      large PDF version of entire manual
+Developer.pdf   small PDF with info about how LAMMPS is structured
+LAMMPS.epub     Manual in ePUB format :pre
+
+If you downloaded LAMMPS as a tarball from the web site, all these
+directories and files should be included.
+
+If you downloaded LAMMPS from the public SVN or Git repositories, then
+the HTML and PDF files are not included.  Instead you need to create
+them, in one of three ways:
+
+(a) You can "fetch" the current HTML and PDF files from the LAMMPS web
+site.  Just type "make fetch".  This should create a html_www dir and
+Manual_www.pdf/Developer_www.pdf files.  Note that if new LAMMPS
+features have been added more recently than the date of your version,
+the fetched documentation will include those changes (but your source
+code will not, unless you update your local repository).
+
+(b) You can build the HTML and PDF files yourself, by typing "make
+html" followed by "make pdf".  Note that the PDF make requires the
+HTML files already exist.  This requires various tools including
+Sphinx, which the build process will attempt to download and install
+on your system, if not already available.  See more details below.
+
+(c) You can genererate an older, simpler, less-fancy style of HTML
+documentation by typing "make old".  This will create an "old"
+directory.  This can be useful if (b) does not work on your box for
+some reason, or you want to quickly view the HTML version of a doc
+page you have created or edited yourself within the src directory.
+E.g. if you are planning to submit a new feature to LAMMPS.
+
+:line
+
+The generation of all documentation is managed by the Makefile in
+the doc dir.
+
+Documentation Build Options: :pre
+
+make html         # generate HTML in html dir using Sphinx
+make pdf          # generate 2 PDF files (Manual.pdf,Developer.pdf)
+                  #   in doc dir via htmldoc and pdflatex
+make old          # generate old-style HTML pages in old dir via txt2html
+make fetch        # fetch HTML doc pages and 2 PDF files from web site
+                  #   as a tarball and unpack into html dir and 2 PDFs
+make epub         # generate LAMMPS.epub in ePUB format using Sphinx 
+make clean        # remove intermediate RST files created by HTML build
+make clean-all    # remove entire build folder and any cached data :pre
+
+:line
+
+Installing prerequisites for HTML build :h3
+
+To run the HTML documention build toolchain, Python 3 and virtualenv
+have to be installed.  Here are instructions for common setups:
+
+Ubuntu :h4
+
+sudo apt-get install python-virtualenv :pre
+
+Fedora (up to version 21) and Red Hat Enterprise Linux or CentOS (up to version 7.x) :h4
+
+sudo yum install python3-virtualenv :pre
+
+Fedora (since version 22) :h4
+
+sudo dnf install python3-virtualenv pre
+
+MacOS X :h4
+
+Python 3 :h5
+
+Download the latest Python 3 MacOS X package from
+"https://www.python.org"_https://www.python.org
+and install it.  This will install both Python 3
+and pip3.
+
+virtualenv :h5
+
+Once Python 3 is installed, open a Terminal and type
+
+pip3 install virtualenv :pre
+
+This will install virtualenv from the Python Package Index.
+
+:line
+
+Installing prerequisites for PDF build
+
+[TBA]
+
+:line
+
+Installing prerequisites for epub build :h3
+
+ePUB :h4
+
+Same as for HTML. This uses the same tools and configuration
+files as the HTML tree.
+
+For converting the generated ePUB file to a mobi format file
+(for e-book readers like Kindle, that cannot read ePUB), you
+also need to have the 'ebook-convert' tool from the "calibre"
+software installed. "http://calibre-ebook.com/"_http://calibre-ebook.com/
+You first create the ePUB file with 'make epub' and then do:
+
+ebook-convert LAMMPS.epub LAMMPS.mobi :pre
+
-- 
GitLab


From 1604f011d223b686ea493392568d629fa282d4dc Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 9 Aug 2018 16:58:05 +0200
Subject: [PATCH 167/243] fix a couple more broken links

---
 doc/src/Errors_common.txt | 2 +-
 doc/src/Howto_bioFF.txt   | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/doc/src/Errors_common.txt b/doc/src/Errors_common.txt
index 43d1a85a7b..8d04d8b0b4 100644
--- a/doc/src/Errors_common.txt
+++ b/doc/src/Errors_common.txt
@@ -93,7 +93,7 @@ decide if the WARNING is important or not.  A WARNING message that is
 generated in the middle of a run is only printed to the screen, not to
 the logfile, to avoid cluttering up thermodynamic output.  If LAMMPS
 crashes or hangs without spitting out an error message first then it
-could be a bug (see "this section"_#err_2) or one of the following
+could be a bug (see "this section"_Errors_bugs.html) or one of the following
 cases:
 
 LAMMPS runs in the available memory a processor allows to be
diff --git a/doc/src/Howto_bioFF.txt b/doc/src/Howto_bioFF.txt
index afb8a84f2e..deb5b31441 100644
--- a/doc/src/Howto_bioFF.txt
+++ b/doc/src/Howto_bioFF.txt
@@ -96,6 +96,10 @@ documentation for the formula it computes.
 [(MacKerell)] MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field,
 Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).
 
+:link(howto-Cornell)
+[(Cornell)] Cornell, Cieplak, Bayly, Gould, Merz, Ferguson,
+Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995).
+
 :link(howto-Mayo)
 [(Mayo)] Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
 (1990).
-- 
GitLab


From f4ea28cd322399cced20b9bb30cbbf5de1e3da36 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 9 Aug 2018 16:58:19 +0200
Subject: [PATCH 168/243] update src/lammps.book file with missing entries

---
 doc/src/lammps.book | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index c0ca357f21..75a44141df 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -1,6 +1,7 @@
 #HTMLDOC 1.8.28
 -t pdf14 -f "../Manual.pdf" --book --toclevels 4 --no-numbered --toctitle "Table of Contents" --title --textcolor #000000 --linkcolor #0000ff --linkstyle plain --bodycolor #ffffff --size Universal --left 1.00in --right 0.50in --top 0.50in --bottom 0.50in --header .t. --header1 ... --footer ..1 --nup 1 --tocheader .t. --tocfooter ..i --portrait --color --no-pscommands --no-xrxcomments --compression=9 --jpeg=0 --fontsize 11.0 --fontspacing 1.2 --headingfont Sans --bodyfont Serif --headfootsize 11.0 --headfootfont Sans-Bold --charset iso-8859-15 --links --embedfonts --pagemode document --pagelayout single --firstpage c1 --pageeffect none --pageduration 10 --effectduration 1.0 --no-encryption --permissions all  --owner-password ""  --user-password "" --browserwidth 680 --no-strict --no-overflow
 Manual.html
+Manual_version.html
 Intro.html
 Intro_overview.html
 Intro_features.html
@@ -106,6 +107,7 @@ Errors_common.html
 Errors_bugs.html
 Errors_messages.html
 Errors_warnings.html
+Build_manual.html
 
 lammps_commands.html
 atom_modify.html
-- 
GitLab


From 8e9ea1e4fadeb57268fcc378e3622a378b16cb35 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 9 Aug 2018 17:07:45 +0200
Subject: [PATCH 169/243] formatting tweak for Build the manual page

---
 doc/src/Build_manual.txt | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/doc/src/Build_manual.txt b/doc/src/Build_manual.txt
index 3dfc3d08b3..695ac21a13 100644
--- a/doc/src/Build_manual.txt
+++ b/doc/src/Build_manual.txt
@@ -13,12 +13,12 @@ Building the LAMMPS Manual :h2
 Depending on how you obtained LAMMPS, the doc directory has 
 2 or 3 sub-directories and optionally 2 PDF files and an ePUB file:
 
-src             content files for LAMMPS documentation
-html            HTML version of the LAMMPS manual (see html/Manual.html)
-tools           tools and settings for building the documentation
-Manual.pdf      large PDF version of entire manual
-Developer.pdf   small PDF with info about how LAMMPS is structured
-LAMMPS.epub     Manual in ePUB format :pre
+src             # content files for LAMMPS documentation
+html            # HTML version of the LAMMPS manual (see html/Manual.html)
+tools           # tools and settings for building the documentation
+Manual.pdf      # large PDF version of entire manual
+Developer.pdf   # small PDF with info about how LAMMPS is structured
+LAMMPS.epub     # Manual in ePUB format :pre
 
 If you downloaded LAMMPS as a tarball from the web site, all these
 directories and files should be included.
-- 
GitLab


From bb25e5d98a8933ecbfb8b762e45759a2bdc4b0b4 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 9 Aug 2018 17:07:57 +0200
Subject: [PATCH 170/243] adjust header levels for Tools section

---
 doc/src/Tools.txt | 60 +++++++++++++++++++++++------------------------
 1 file changed, 30 insertions(+), 30 deletions(-)

diff --git a/doc/src/Tools.txt b/doc/src/Tools.txt
index 85ee531cfd..aa4adb7dc1 100644
--- a/doc/src/Tools.txt
+++ b/doc/src/Tools.txt
@@ -77,7 +77,7 @@ own sub-directories with their own Makefiles and/or README files.
 :line
 :line
 
-amber2lmp tool :h4,link(amber)
+amber2lmp tool :h3,link(amber)
 
 The amber2lmp sub-directory contains two Python scripts for converting
 files back-and-forth between the AMBER MD code and LAMMPS.  See the
@@ -92,7 +92,7 @@ necessary modifications yourself.
 
 :line
 
-binary2txt tool :h4,link(binary)
+binary2txt tool :h3,link(binary)
 
 The file binary2txt.cpp converts one or more binary LAMMPS dump file
 into ASCII text files.  The syntax for running the tool is
@@ -105,7 +105,7 @@ since binary files are not compatible across all platforms.
 
 :line
 
-ch2lmp tool :h4,link(charmm)
+ch2lmp tool :h3,link(charmm)
 
 The ch2lmp sub-directory contains tools for converting files
 back-and-forth between the CHARMM MD code and LAMMPS.
@@ -130,7 +130,7 @@ Chris Lorenz (chris.lorenz at kcl.ac.uk), King's College London.
 
 :line
 
-chain tool :h4,link(chain)
+chain tool :h3,link(chain)
 
 The file chain.f creates a LAMMPS data file containing bead-spring
 polymer chains and/or monomer solvent atoms.  It uses a text file
@@ -147,7 +147,7 @@ for the "chain benchmark"_Speed_bench.html.
 
 :line
 
-colvars tools :h4,link(colvars)
+colvars tools :h3,link(colvars)
 
 The colvars directory contains a collection of tools for postprocessing
 data produced by the colvars collective variable library.
@@ -169,7 +169,7 @@ gmail.com) at ICTP, Italy.
 
 :line
 
-createatoms tool :h4,link(createatoms)
+createatoms tool :h3,link(createatoms)
 
 The tools/createatoms directory contains a Fortran program called
 createAtoms.f which can generate a variety of interesting crystal
@@ -182,7 +182,7 @@ The tool is authored by Xiaowang Zhou (Sandia), xzhou at sandia.gov.
 
 :line
 
-doxygen tool :h4,link(doxygen)
+doxygen tool :h3,link(doxygen)
 
 The tools/doxygen directory contains a shell script called
 doxygen.sh which can generate a call graph and API lists using
@@ -194,7 +194,7 @@ The tool is authored by Nandor Tamaskovics, numericalfreedom at googlemail.com.
 
 :line
 
-drude tool :h4,link(drude)
+drude tool :h3,link(drude)
 
 The tools/drude directory contains a Python script called
 polarizer.py which can add Drude oscillators to a LAMMPS
@@ -207,7 +207,7 @@ at univ-bpclermont.fr, alain.dequidt at univ-bpclermont.fr
 
 :line
 
-eam database tool :h4,link(eamdb)
+eam database tool :h3,link(eamdb)
 
 The tools/eam_database directory contains a Fortran program that will
 generate EAM alloy setfl potential files for any combination of 16
@@ -223,7 +223,7 @@ X. W. Zhou, R. A. Johnson, and H. N. G. Wadley, Phys. Rev. B, 69,
 
 :line
 
-eam generate tool :h4,link(eamgn)
+eam generate tool :h3,link(eamgn)
 
 The tools/eam_generate directory contains several one-file C programs
 that convert an analytic formula into a tabulated "embedded atom
@@ -236,7 +236,7 @@ The source files and potentials were provided by Gerolf Ziegenhain
 
 :line
 
-eff tool :h4,link(eff)
+eff tool :h3,link(eff)
 
 The tools/eff directory contains various scripts for generating
 structures and post-processing output for simulations using the
@@ -247,7 +247,7 @@ These tools were provided by Andres Jaramillo-Botero at CalTech
 
 :line
 
-emacs tool :h4,link(emacs)
+emacs tool :h3,link(emacs)
 
 The tools/emacs directory contains an Emacs Lisp add-on file for GNU Emacs 
 that enables a lammps-mode for editing input scripts when using GNU Emacs,
@@ -258,7 +258,7 @@ These tools were provided by Aidan Thompson at Sandia
 
 :line
 
-fep tool :h4,link(fep)
+fep tool :h3,link(fep)
 
 The tools/fep directory contains Python scripts useful for
 post-processing results from performing free-energy perturbation
@@ -271,7 +271,7 @@ See README file in the tools/fep directory.
 
 :line
 
-i-pi tool :h4,link(ipi)
+i-pi tool :h3,link(ipi)
 
 The tools/i-pi directory contains a version of the i-PI package, with
 all the LAMMPS-unrelated files removed.  It is provided so that it can
@@ -288,7 +288,7 @@ calculations with LAMMPS.
 
 :line
 
-ipp tool :h4,link(ipp)
+ipp tool :h3,link(ipp)
 
 The tools/ipp directory contains a Perl script ipp which can be used
 to facilitate the creation of a complicated file (say, a lammps input
@@ -302,7 +302,7 @@ tools/createatoms tool's input file.
 
 :line
 
-kate tool :h4,link(kate)
+kate tool :h3,link(kate)
 
 The file in the tools/kate directory is an add-on to the Kate editor
 in the KDE suite that allow syntax highlighting of LAMMPS input
@@ -313,7 +313,7 @@ The file was provided by Alessandro Luigi Sellerio
 
 :line
 
-lmp2arc tool :h4,link(arc)
+lmp2arc tool :h3,link(arc)
 
 The lmp2arc sub-directory contains a tool for converting LAMMPS output
 files to the format for Accelrys' Insight MD code (formerly
@@ -329,7 +329,7 @@ Greathouse at Sandia (jagreat at sandia.gov).
 
 :line
 
-lmp2cfg tool :h4,link(cfg)
+lmp2cfg tool :h3,link(cfg)
 
 The lmp2cfg sub-directory contains a tool for converting LAMMPS output
 files into a series of *.cfg files which can be read into the
@@ -340,7 +340,7 @@ This tool was written by Ara Kooser at Sandia (askoose at sandia.gov).
 
 :line
 
-matlab tool :h4,link(matlab)
+matlab tool :h3,link(matlab)
 
 The matlab sub-directory contains several "MATLAB"_matlabhome scripts for
 post-processing LAMMPS output.  The scripts include readers for log
@@ -358,7 +358,7 @@ These scripts were written by Arun Subramaniyan at Purdue Univ
 
 :line
 
-micelle2d tool :h4,link(micelle)
+micelle2d tool :h3,link(micelle)
 
 The file micelle2d.f creates a LAMMPS data file containing short lipid
 chains in a monomer solution.  It uses a text file containing lipid
@@ -375,7 +375,7 @@ definition file.  This tool was used to create the system for the
 
 :line
 
-moltemplate tool :h4,link(moltemplate)
+moltemplate tool :h3,link(moltemplate)
 
 The moltemplate sub-directory contains a Python-based tool for
 building molecular systems based on a text-file description, and
@@ -389,7 +389,7 @@ supports it.  It has its own WWW page at
 
 :line
 
-msi2lmp tool :h4,link(msi)
+msi2lmp tool :h3,link(msi)
 
 The msi2lmp sub-directory contains a tool for creating LAMMPS template
 input and data files from BIOVIA's Materias Studio files (formerly Accelrys'
@@ -406,7 +406,7 @@ See the README file in the tools/msi2lmp folder for more information.
 
 :line
 
-phonon tool :h4,link(phonon)
+phonon tool :h3,link(phonon)
 
 The phonon sub-directory contains a post-processing tool useful for
 analyzing the output of the "fix phonon"_fix_phonon.html command in
@@ -421,7 +421,7 @@ University.
 
 :line
 
-polybond tool :h4,link(polybond)
+polybond tool :h3,link(polybond)
 
 The polybond sub-directory contains a Python-based tool useful for
 performing "programmable polymer bonding".  The Python file
@@ -435,7 +435,7 @@ This tool was written by Zachary Kraus at Georgia Tech.
 
 :line
 
-pymol_asphere tool :h4,link(pymol)
+pymol_asphere tool :h3,link(pymol)
 
 The pymol_asphere sub-directory contains a tool for converting a
 LAMMPS dump file that contains orientation info for ellipsoidal
@@ -453,7 +453,7 @@ This tool was written by Mike Brown at Sandia.
 
 :line
 
-python tool :h4,link(pythontools)
+python tool :h3,link(pythontools)
 
 The python sub-directory contains several Python scripts
 that perform common LAMMPS post-processing tasks, such as:
@@ -469,7 +469,7 @@ README for more info on Pizza.py and how to use these scripts.
 
 :line
 
-reax tool :h4,link(reax_tool)
+reax tool :h3,link(reax_tool)
 
 The reax sub-directory contains stand-alond codes that can
 post-process the output of the "fix reax/bonds"_fix_reax_bonds.html
@@ -480,7 +480,7 @@ These tools were written by Aidan Thompson at Sandia.
 
 :line
 
-smd tool :h4,link(smd)
+smd tool :h3,link(smd)
 
 The smd sub-directory contains a C++ file dump2vtk_tris.cpp and
 Makefile which can be compiled and used to convert triangle output
@@ -496,7 +496,7 @@ Ernst Mach Institute in Germany (georg.ganzenmueller at emi.fhg.de).
 
 :line
 
-vim tool :h4,link(vim)
+vim tool :h3,link(vim)
 
 The files in the tools/vim directory are add-ons to the VIM editor
 that allow easier editing of LAMMPS input scripts.  See the README.txt
@@ -507,7 +507,7 @@ ziegenhain.com)
 
 :line
 
-xmgrace tool :h4,link(xmgrace)
+xmgrace tool :h3,link(xmgrace)
 
 The files in the tools/xmgrace directory can be used to plot the
 thermodynamic data in LAMMPS log files via the xmgrace plotting
-- 
GitLab


From c97e6537c805abcae1a6e8fd466b07f070b8d2c7 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Thu, 9 Aug 2018 10:19:10 -0600
Subject: [PATCH 171/243] changes to replace Section_start.txt

---
 doc/src/Build.txt           |   50 +
 doc/src/Build_basics.txt    |  318 ++++++
 doc/src/Build_cmake.txt     |  159 +++
 doc/src/Build_extras.txt    |  803 +++++++++++++++
 doc/src/Build_link.txt      |   85 ++
 doc/src/Build_make.txt      |   66 ++
 doc/src/Build_package.txt   |  182 ++++
 doc/src/Build_settings.txt  |  327 +++++++
 doc/src/Install.txt         |   64 ++
 doc/src/Install_git.txt     |  120 +++
 doc/src/Install_linux.txt   |  120 +++
 doc/src/Install_mac.txt     |   55 ++
 doc/src/Install_patch.txt   |   67 ++
 doc/src/Install_svn.txt     |   95 ++
 doc/src/Install_tarball.txt |   64 ++
 doc/src/Install_windows.txt |   52 +
 doc/src/Run.txt             |   37 +
 doc/src/Run_basics.txt      |   87 ++
 doc/src/Run_options.txt     |  470 +++++++++
 doc/src/Run_output.txt      |  176 ++++
 doc/src/Run_windows.txt     |   73 ++
 doc/src/Section_start.txt   | 1823 -----------------------------------
 22 files changed, 3470 insertions(+), 1823 deletions(-)
 create mode 100644 doc/src/Build.txt
 create mode 100644 doc/src/Build_basics.txt
 create mode 100644 doc/src/Build_cmake.txt
 create mode 100644 doc/src/Build_extras.txt
 create mode 100644 doc/src/Build_link.txt
 create mode 100644 doc/src/Build_make.txt
 create mode 100644 doc/src/Build_package.txt
 create mode 100644 doc/src/Build_settings.txt
 create mode 100644 doc/src/Install.txt
 create mode 100644 doc/src/Install_git.txt
 create mode 100644 doc/src/Install_linux.txt
 create mode 100644 doc/src/Install_mac.txt
 create mode 100644 doc/src/Install_patch.txt
 create mode 100644 doc/src/Install_svn.txt
 create mode 100644 doc/src/Install_tarball.txt
 create mode 100644 doc/src/Install_windows.txt
 create mode 100644 doc/src/Run.txt
 create mode 100644 doc/src/Run_basics.txt
 create mode 100644 doc/src/Run_options.txt
 create mode 100644 doc/src/Run_output.txt
 create mode 100644 doc/src/Run_windows.txt
 delete mode 100644 doc/src/Section_start.txt

diff --git a/doc/src/Build.txt b/doc/src/Build.txt
new file mode 100644
index 0000000000..653c217d4c
--- /dev/null
+++ b/doc/src/Build.txt
@@ -0,0 +1,50 @@
+"Previous Section"_Install.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Run.html :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Build LAMMPS :h2
+
+LAMMPS can be built as an executable or library from source code via
+either CMake or traditional make.  As an alternative you can download
+a pre-built executable file as described on the "Install"_Install.html
+doc page.
+
+<!-- RST
+
+.. toctree::
+
+   Build_cmake
+   Build_make
+   Build_link
+
+.. toctree::
+
+   Build_basics
+   Build_settings
+   Build_package
+   Build_extras
+
+END_RST -->
+
+<!-- HTML_ONLY -->
+
+"Build LAMMPS with CMake"_Build_cmake.html
+"Build LAMMPS with make"_Build_make.html
+"Link LAMMPS as a library to another code"_Build_link.html :all(b)
+
+Build options:
+
+"Basic build options: serial/parallel, compilers, executable/library"_Build_basics.html
+"Optional build settings"_Build_settings.html :all(b)
+"Include packages in build"_Build_package.html
+"Packages with extra build options"_Build_extras.html :all(b)
+
+If you have problems building LAMMPS, it is often due to software
+issues on your local machine.  If you can, find a local expert to
+help.  If you're still stuck, send an email to the "LAMMPS mail
+list"_http://lammps.sandia.gov/mail.html.
diff --git a/doc/src/Build_basics.txt b/doc/src/Build_basics.txt
new file mode 100644
index 0000000000..b2816b7acb
--- /dev/null
+++ b/doc/src/Build_basics.txt
@@ -0,0 +1,318 @@
+"Higher level section"_Build.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Basic build options :h3
+
+The following topics are covered on this page, for building both with
+CMake and make:
+
+"Serial vs parallel build"_#serial
+"Choice of compiler and compile/link options"_#compile
+"Build LAMMPS as an executable or a library"_#exe
+"Build the LAMMPS documentation"_#doc
+"Install LAMMPS after a build"_#install :ul
+
+:line
+:line
+
+Serial vs parallel build :h3,link(serial)
+
+LAMMPS can be built to run in parallel using the ubiquitous "MPI
+(message-passing
+interface)"_https://en.wikipedia.org/wiki/Message_Passing_Interface
+library.  Or it can built to run on a single processor (serial)
+without MPI.  It can also be built with support for OpenMP threading
+(see more discussion below).
+
+[CMake variables]:
+
+-D BUILD_MPI=value        # yes or no, default is yes if CMake finds MPI, else no
+-D BUILD_OMP=value        # yes or no (default)
+-D LAMMPS_MACHINE=name    # name = mpi, serial, mybox, titan, laptop, etc
+                          # no default value :pre
+
+The executable CMake creates (after running make) is lmp_name.  If the
+LAMMPS_MACHINE variable is not specified, the executable is just lmp.
+Using BUILD_MPI=no will produce a serial executable.
+
+[Traditional make]:
+
+cd lammps/src
+make mpi                # parallel build, produces lmp_mpi using Makefile.mpi
+make serial             # serial build, produces lmp_serial using Makefile/serial
+make mybox :pre         # uses Makefile.mybox, produces lmp_mybox :pre
+
+Serial build (see src/MAKE/Makefile.serial):
+
+MPI_INC =       -I../STUBS 
+MPI_PATH =      -L../STUBS
+MPI_LIB =	-lmpi_stubs :pre
+
+For a parallel build, if MPI is installed on your system in the usual
+place (e.g. under /usr/local), you do not need to specify the 3
+variables MPI_INC, MPI_PATH, MPI_LIB.  The MPI wrapper on the compiler
+(e.g. mpicxx, mpiCC) knows where to find the needed include and
+library files.  Failing this, these 3 variables can be used to specify
+where the mpi.h file (MPI_INC), and the MPI library files (MPI_PATH)
+are found, and the name of the library files (MPI_LIB).
+
+For a serial build, you need to specify the 3 varaibles, as shown
+above.
+
+For a serial LAMMPS build, use the dummy MPI library provided in
+src/STUBS.  You also need to build the STUBS library for your platform
+before making LAMMPS itself.  A "make serial" build does this for.
+Otherwise, type "make mpi-stubs" from the src directory, or "make"
+from the src/STUBS dir.  If the build fails, you will need to edit the
+STUBS/Makefile for your platform.
+
+The file STUBS/mpi.c provides a CPU timer function called MPI_Wtime()
+that calls gettimeofday() .  If your system doesn't support
+gettimeofday() , you'll need to insert code to call another timer.
+Note that the ANSI-standard function clock() rolls over after an hour
+or so, and is therefore insufficient for timing long LAMMPS
+simulations.
+
+[CMake and make info]:
+
+If you are installing MPI yourself, we recommend Argonne's MPICH2 or
+OpenMPI.  MPICH can be downloaded from the "Argonne MPI
+site"_http://www.mcs.anl.gov/research/projects/mpich2/.  OpenMPI can
+be downloaded from the "OpenMPI site"_http://www.open-mpi.org.  Other
+MPI packages should also work.  If you are running on a large parallel
+machine, your system admins or the vendor should have already
+installed a version of MPI, which is likely to be faster than a
+self-installed MPICH or OpenMPI, so find out how to build and link
+with it.
+
+The majority of OpenMP (threading) support in LAMMPS is provided by
+the USER-OMP package; see the "Speed omp"_Speed_omp.html doc page for
+details.
+
+However, there are a few commands in LAMMPS that have native OpenMP
+support.  These are commands in the MPIIO, SNAP, USER-COLVARS, and
+USER-DPD packages.  See the "Packages details"_Packages_details.html
+doc page for more info on these packages and the doc pages for their
+respective commands for OpenMP threading info.
+
+TODO: is this the complete list of native OpenMP commands in LAMMPS?
+
+For CMake, if you use BUILD_OMP=yes, then you can use these packages
+and turn on their native OpenMP support at run time, by first setting
+the OMP_NUM_THREADS environment variable.
+
+For make, ...
+
+TODO: how do we build LAMMPS with make, to include OpenMP support
+(separate from USER-OMP package).  Akin to CMake with BUILD_OMP=yes.
+
+:line
+
+Choice of compiler and compile/link options :h3,link(compile)
+
+The choice of compiler and compiler flags can be important for
+performance.  Vendor compilers can produce faster code than
+open-source compilers like GNU.  On boxes with Intel CPUs, we suggest
+trying the "Intel C++ compiler"_intel.
+
+:link(intel,https://software.intel.com/en-us/intel-compilers)
+
+On parallel clusters or supercomputers which use "modules" for their
+compile/link environments, you can often access different compilers by
+simply loading the appropriate module before building LAMMPS.
+
+[CMake variables]:
+
+-D CMAKE_CXX_COMPILER=name            # name of C++ compiler
+-D CMAKE_C_COMPILER=name              # name of C compiler
+-D CMAKE_Fortran_COMPILER=name        # name of Fortran compiler :pre
+
+-D CMAKE_CXX_FlAGS=string             # flags to use with C++ compiler
+-D CMAKE_C_FlAGS=string               # flags to use with C compiler
+-D CMAKE_Fortran_FlAGS=string         # flags to use with Fortran compiler :pre
+
+By default CMake will use a compiler it finds and it will use
+optimization flags appropriate to that compiler and any "accelerator
+packages"_Speed_packages.html you have included in the build.
+
+You can tell CMake to look for a specific compiler with these varaible
+settings.  Likewise you can specify the FLAGS variables if you want to
+experiment with alternate optimization flags.  You should specify all
+3 compilers, so that the small number of LAMMPS source files written
+in C or Fortran are built with a compiler consistent with the one used
+for all the C++ files:
+
+Building with GNU Compilers:
+cmake ../cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_Fortran_COMPILER=gfortran
+Building with Intel Compilers:
+cmake ../cmake -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc -DCMAKE_Fortran_COMPILER=ifort
+Building with LLVM/Clang Compilers:
+cmake ../cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_Fortran_COMPILER=flang :pre
+
+NOTE: When the cmake command completes, it prints info to the screen
+as to what compilers it is using, and what flags will be used in the
+compilation.  Note that if the top-level compiler is mpicxx, it is
+simply a wrapper on a real compiler.  The low-level compiler info is
+also in the output.  You should check to insure you are using the
+compiler and optimization flags that are the ones you want.
+
+[Makefile.machine settings]:
+
+Parallel build (see src/MAKE/Makefile.mpi):
+
+CC =		mpicxx
+CCFLAGS =	-g -O3 
+LINK =		mpicxx
+LINKFLAGS =	-g -O :pre
+
+Serial build (see src/MAKE/Makefile.serial):
+
+CC =		g++
+CCFLAGS =	-g -O3
+LINK =		g++
+LINKFLAGS =	-g -O :pre
+
+The "compiler/linker settings" section of a Makefile.machine lists
+compiler and linker settings for your C++ compiler, including
+optimization flags.  You should always use mpicxx or mpiCC for
+a parallel build, since these compiler wrappers will include
+a variety of settings appropriate for your MPI installation.
+
+NOTE: If you build LAMMPS with any "accelerator
+packages"_Speed_packages.html included, they have specific
+optimization flags that are either required or recommended for optimal
+performance.  You need to include these in the CCFLAGS and LINKFLAGS
+settings above.  For details, see the individual package doc pages
+listed on the "Speed packages"_Speed_packages.html doc page.  Or
+examine these files in the src/MAKE/OPTIONS directory.  They
+correspond to each of the 5 accelerator packages and their hardware
+variants:
+
+Makefile.opt                   # OPT package
+Makefile.omp                   # USER-OMP package
+Makefile.intel_cpu             # USER-INTEL package for CPUs
+Makefile.intel_coprocessor     # USER-INTEL package for KNLs
+Makefile.gpu                   # GPU package
+Makefile.kokkos_cuda_mpi       # KOKKOS package for GPUs
+Makefile.kokkos_omp            # KOKKOS package for CPUs (OpenMP)
+Makefile.kokkos_phi            # KOKKOS package for KNLs (OpenMP) :pre
+
+NOTE: When you build LAMMPS for the first time, a long list of *.d
+files will be printed out rapidly.  This is not an error; it is the
+Makefile doing its normal creation of dependencies.
+
+:line
+
+Build LAMMPS as an executable or a library :h3,link(exe)
+
+LAMMPS can be built as either an executable or as a static or shared
+library.  The library can be called from another application or a
+scripting language.  See the "Howto couple"_Howto_couple.html doc page
+for more info on coupling LAMMPS to other codes.  See the
+"Python"_Python doc page for more info on wrapping and running LAMMPS
+from Python.
+
+[CMake variables]:
+
+-D BUILD_EXE=value           # yes (default) or no
+-D BUILD_LIB=value           # yes or no (default)
+-D BUILD_SHARED_LIBS=value   # yes or no (default) :pre
+
+Setting BUILD_EXE=no will not produce an executable.  Setting
+BUILD_LIB=yes will produce a static library named liblammps.a.
+Setting both BUILD_LIB=yes and BUILD_SHARED_LIBS=yes will produce a
+static library named liblammps.so.
+
+[Traditional make]:
+
+cd lammps/src
+make machine               # build LAMMPS executable lmp_machine
+make mode=lib machine      # build LAMMPS static lib liblammps_machine.a
+make mode=shlib machine    # build LAMMPS shared lib liblammps_machine.so :pre
+
+The two library builds also create generic links liblammps.a and
+liblammps.so which point to the liblammps_machine files.
+
+[CMake and make info]:
+
+Note that for a shared library to be usable by a calling program, all
+the auxiliary libraries it depends on must also exist as shared
+libraries.  This will be the case for libraries included with LAMMPS,
+such as the dummy MPI library in src/STUBS or any package libraries in
+lib/packages, since they are always built as shared libraries using
+the -fPIC switch.  However, if a library like MPI or FFTW does not
+exist as a shared library, the shared library build will generate an
+error.  This means you will need to install a shared library version
+of the auxiliary library.  The build instructions for the library
+should tell you how to do this.
+
+As an example, here is how to build and install the "MPICH
+library"_mpich, a popular open-source version of MPI, distributed by
+Argonne National Labs, as a shared library in the default
+/usr/local/lib location:
+
+:link(mpich,http://www-unix.mcs.anl.gov/mpi)
+
+./configure --enable-shared
+make
+make install :pre
+
+You may need to use "sudo make install" in place of the last line if
+you do not have write privileges for /usr/local/lib.  The end result
+should be the file /usr/local/lib/libmpich.so.
+
+:line
+
+Build the LAMMPS documentation :h3,link(doc)
+
+[CMake variable]:
+
+-D BUILD_DOC=value       # yes or no (default) :pre
+
+This will create the HTML doc pages within the CMake build dir.  The
+reason to do this is if you want to "install" LAMMPS on a system after
+the CMake build, and include the doc pages in the install.
+
+[Traditional make]:
+
+cd lammps/doc
+make html       # html doc pages
+make pdf        # single Manual.pdf file :pre
+
+This will create a lammps/doc/html dir with the HTML doc pages so that
+you can browse them locally on your system.  Type "make" from the the
+lammps/doc dir to see other options.
+
+:line
+
+Install LAMMPS after a build :h3,link(install)
+
+After building LAMMPS, you may wish to copy the LAMMPS executable of
+library, along with other LAMMPS files (library header, doc files) to
+a globally visible place on your system, for others to access.  Note
+that you may need super-user priveleges (e.g. sudo) if the place you
+want to copy files to is protected.
+
+[CMake variable]:
+
+cmake CMAKE_INSTALL_PREFIX=path \[options ...\] ~/lammps/cmake
+make                        # perform make after CMake command
+make install                # perform the installation :pre
+
+Note that The CMAKE_INSTALL_PREFIX=path is not a -D variable like
+other LAMMPS settings, but rather an option to the cmake command.  The
+path is where to install the LAMMPS files.
+
+TODO: is this sub-section correct?
+
+[Traditional make]:
+
+There is no "install" option in the src/Makefile for LAMMPS.  If you
+wish to do this you will need to build, then manually copy the
+desired LAMMPS files to the appopriate system directories.
diff --git a/doc/src/Build_cmake.txt b/doc/src/Build_cmake.txt
new file mode 100644
index 0000000000..2bc10d1463
--- /dev/null
+++ b/doc/src/Build_cmake.txt
@@ -0,0 +1,159 @@
+"Higher level section"_Build.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Build LAMMPS with CMake :h3
+
+This page is a short summary of how to use CMake to build LAMMPS.
+Specific details on CMake variables that enable LAMMPS build options
+are given on the pages linked to from the "Build"_Build.html doc page.
+
+Richard Berger (Temple U) has also written a more comprehensive guide
+for how to use CMake to build LAMMPS.  If you are new to CMake it is a
+good place to start:
+
+"Bulding LAMMPS using
+CMake"_https://github.com/rbberger/lammps/tree/cmake_documentation/cmake
+
+:line
+
+Building LAMMPS with CMake is a two-step process.  First use CMake to
+create a Makefile.  Then use the standard make command to build
+LAMMPS, which uses the created Makefile.
+
+mkdir mydir; cd mydir                  # create a new dir for build          
+cmake ~/lammps/cmake \[options ...\]   # command-line version
+ccmake ~/lammps/cmake                  # curses version (terminal-style menu)
+cmake-gui ~/lammps/cmake               # GUI version
+make                                   # traditional make command
+make install                           # optional, copy LAMMPS executable & library elsewhere :pre
+
+The make command will compile and link LAMMPS, producing the
+executable lmp and the library liblammps.a in mydir.
+
+If your machine has multiple cores (most do), using a command like
+"make -j" will be much faster.
+
+:line
+
+There are 3 variants of CMake: a command-line verison, a curses
+version (teminal-style menu), and a GUI version.  You can use any of
+them to build LAMMPS.  All the versions produce a Makefile as their
+output.  See more details on each below.
+
+You can specify a variety of options with any of the 3 versions, which
+affect how the build is performed and what is included in the LAMMPS
+executable.  Links to pages explaining all the options are listed on
+the "Build"_Build.html doc page.
+
+Perform the build in a new directory you create.  It can be a sub-dir
+within lammps/cmake or anywhere you wish.  You can perform separate
+builds, with different options, in as many directories as you like.
+All the auxiliary files created by the build (executable, object
+files, log files, etc) are stored in that directory or sub-directories
+within it that CMake creates.
+
+NOTE: To perform a CMake build, no packages can be installed in the
+LAMMPS src dir.  Likewise no style*.h or a lmpinstalledpkgs.h file can
+exist, which are auto-generated by "building LAMMPS via traditional
+make"_Build_make.html.  CMake detects if this is not the case and
+generates an error, telling you to type "make no-all purge" in the src
+directory to un-install all packages.  The purge removes all the
+auto-generated *.h files.
+
+You must have CMake version 2.8 or later on your system to build
+LAMMPS.  If you include the GPU package, version 3.2 or later is
+required.  Installation instructions for CMake are below.
+
+After the initial build, if you edit LAMMPS source files, or add your
+own new files to the source directory, you can just re-type make from
+your build directory and it will re-compile only the files that have
+changed.  If you want to change CMake options, you can remove the
+cache file CMakeCache.txt in the build directory and start over.  Or
+you can run cmake again from the same build directory and alter
+various options; see details below.
+
+:line
+
+[Command-line version of CMake]:
+
+cmake \[options ...\] ~/lammps/cmake      # build from any dir
+cmake \[options ...\] ..                  # build from lammps/cmake/newdir :pre
+
+The cmake command takes one required argument, which is the LAMMPS
+cmake directory which contains the CMakeLists.txt file.
+
+The argument can be preceeded or followed by various CMake
+command-line options.  Several useful ones are:
+
+CAKE_INSTALL_PREFIX=path  # where to install LAMMPS executable/lib if desired
+CMAKE_BUILD_TYPE=type     # type = Release or Debug
+-G output                 # style of output CMake generates
+-DVARIABLE=value          # setting for a LAMMPS feature to enable
+-D VARIABLE=value         # ditto, but cannot come after CMakeLists.txt dir
+
+All the LAMMPS-specific -D variables that a LAMMPS build supports are
+described on the pages linked to from the "Build"_Build.html doc page.
+All of these variable names are upper-case and their values are
+lower-case, e.g. -D LAMMPS_SIZES=smallbig.  For boolean values, any of
+these forms can be used: yes/no, on/off, 1/0.
+
+By default CMake generates a Makefile to perform the LAMMPS build.
+Alternate forms of build info can be generated via the -G switch,
+e.g. Visual Studio on a Windows machine.  Type "cmake --help" to see
+the "Generator" styles of output your system supports.
+
+NOTE: When CMake runs, it prints configuration info to the screen.
+You should scan this to verify all the features you requested were
+enabled, including packages.  You can also see what compiler and
+compile options will be used for the build.  Any errors will also be
+flagged, e.g. mis-typed variable names or variable values.
+
+CMake creates a CMakeCache.txt file when it runs.  This stores all the
+settings, so that running CMake again from the same directory will
+inherit those settings.
+
+TODO: explain how to change settings on a subsequent cmake in the same
+build dir.  In that case is "." the final arg of cmake?
+
+[Curses version (terminal-style menu) of CMake]:
+
+ccmake ~/lammps/cmake :pre
+
+TODO: give brief explanation of how to find and toggle options, how to
+perform the generate, how to use it multiple times.
+
+[GUI version of CMake]:
+
+cmake-gui ~/lammps/cmake :pre
+
+TODO: give brief explanation of how to find and toggle options, how to
+perform the generate, how to use it multiple times.
+
+:line
+
+[Installing CMake]
+
+Check if your machine already has CMake installed:
+
+which cmake             # do you have it?
+which cmake3            # version 3 may have this name
+cmake --version         # what specific version you have :pre
+
+On clusters or supercomputers which use modules to manage software
+packages, do this:
+
+module list            # is a cmake module is already loaded
+module avail           # is a cmake module available?
+module load cmake3     # load cmake module with appropriate name :pre
+
+If you do not have CMake or a new enough version, you can install it
+as follows:
+
+TODO: give install instructions for Linux, Mac, Windows
+
diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
new file mode 100644
index 0000000000..82f720791d
--- /dev/null
+++ b/doc/src/Build_extras.txt
@@ -0,0 +1,803 @@
+"Higher level section"_Build.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Packages with extra build options :h3
+
+When building with some packages, additional steps may be required,
+beyond just "-D PKG_NAME=yes" for CMake or "make yes-name" for make,
+as described on the "Build_package"_Build_package.html doc page.
+
+For a CMake build there may be additional variables that can be set.
+For a build with make, a provided library under the lammps/lib
+directory may need to be built first.  Or an external library may need
+to be downloaded and built, and you may need to tell LAMMPS where it
+is found on your system.
+
+This is the list of packages that may require additional steps.
+
+"GPU"_#gpu,
+"KIM"_#kim,
+"KOKKOS"_#kokkos,
+"LATTE"_#latte,
+"MEAM"_#meam,
+"MSCG"_#mscg,
+"OPT"_#opt,
+"POEMS"_#poems,
+"PYTHON"_#python,
+"REAX"_#reax,
+"VORONOI"_#voronoi,
+"USER-ATC"_#user-atc,
+"USER-AWPMD"_#user-awpmd,
+"USER-COLVARS"_#user-colvars,
+"USER-H5MD"_#user-h5md,
+"USER-INTEL"_#user-intel,
+"USER-MOLFILE"_#user-molfile,
+"USER-NETCDF"_#user-netcdf,
+"USER-OMP"_#user-omp,
+"USER-QMMM"_#user-qmmm,
+"USER-QUIP"_#user-quip,
+"USER-SMD"_#user-smd,
+"USER-VTK"_#user-vtk :tb(c=6,ea=c)
+
+:line
+:line
+
+COMPRESS package
+
+To build with this package you must have the zlib compression library
+available on your system.
+
+[CMake build]:
+
+If CMake cannot find the library, you can set these variables:
+
+-D ZLIB_INCLUDE_DIR=path    # path to zlib.h header file 
+-D ZLIB_LIBRARIES=path      # path to libzlib.a (.so) file 
+
+[Traditional make]:
+
+If make cannot find the library, you can edit the
+lib/compress/Makefile.lammps file to specify the paths and library
+name.
+
+:line
+
+GPU package :h3,link(gpu)
+
+To build with this package, you need to choose options for precision
+and which GPU hardware to build for.  To build with make you also need
+to build the library in lib/gpu first.
+
+[CMake build]:
+
+-D GPU_API=value      # value = opencl (default) or cuda
+-D GPU_PREC=value     # precision setting
+                      # value = single or mixed (default) or double
+-D OCL_TUNE=value     # hardware choice for GPU_API=opencl
+                      # generic (default) or intel (Intel CPU) or phi (Intel Xeon Phi) or fermi (NVIDIA) or kepler (NVIDIA) or cypress (NVIDIA)
+-D GPU_ARCH=value     # hardware choice for GPU_API=cuda
+                      # value = sm20 (Fermi) or sm30 (Kepler) or sm50 (Maxwell) or sm60 (Pascal) or sm70 (Volta)
+                      # default is Cuda-compiler dependent, but typically Fermi
+-D CUDPP_OPT=value    # optimization setting for GPU_API=cudea
+                      # enables CUDA Performance Primitives Optimizations 	
+                      # on (default) or off
+
+[Traditional make]:
+
+You must first build the GPU library in lib/gpu.  You can do this
+manually if you prefer; follow the instructions in lib/gpu/README.
+Note that the GPU library uses MPI calls, so you must use the same MPI
+library (or the STUBS library) settings as the main LAMMPS code.  This
+also applies to the -DLAMMPS_BIGBIG, -DLAMMPS_SMALLBIG, or
+-DLAMMPS_SMALLSMALL settings in whichever Makefile you use.
+
+You can also build the library in one step from the lammps/src dir,
+using a command like these, which simply invoke the lib/gpu/Install.py
+script with the specified args:
+
+make lib-gpu               # print help message
+make lib-gpu args="-b"     # build GPU library with default Makefile.linux
+make lib-gpu args="-m xk7 -p single -o xk7.single"  # create new Makefile.xk7.single, altered for single-precision
+make lib-gpu args="-m mpi -p mixed -b" # build GPU library with mixed precision using settings in Makefile.mpi :pre
+
+Note that this procedure starts with a Makefile.machine in lib/gpu, as
+specified by the "-m" switch.  For your convenience, machine makefiles
+for "mpi" and "serial" are provided, which have the same settings as
+the corresponding machine makefiles in the main LAMMPS source
+folder. In addition you can alter 4 important settings in the
+Makefile.machine you start from, via the -h, -a, -p, -e switches, and
+also save a copy of the new Makefile, if desired:
+
+CUDA_HOME = where NVIDIA CUDA software is installed on your system
+CUDA_ARCH = what GPU hardware you have (see help message for details)
+CUDA_PRECISION = precision (double, mixed, single)
+EXTRAMAKE = which Makefile.lammps.* file to copy to Makefile.lammps :ul
+
+If the library build is successful, 3 files should be created:
+lib/gpu/libgpu.a, lib/gpu/nvc_get_devices, and
+lib/gpu/Makefile.lammps.  The latter has settings that enable LAMMPS
+to link with CUDA libraries.  If the settings in Makefile.lammps for
+your machine are not correct, the LAMMPS build will fail, and
+lib/gpu/Makefile.lammps may need to be edited.
+
+NOTE: If you re-build the GPU library in lib/gpu, you should always
+un-install the GPU package, then re-install it and re-build LAMMPS.
+This is because the compilation of files in the GPU package use the
+library settings from the lib/gpu/Makefile.machine used to build the
+GPU library.
+
+:line
+ 
+KIM package :h3,link(kim)
+
+To build with this package, the KIM library must be downloaded and
+built on your system.  It must include the KIM models that you want to
+use with LAMMPS.
+
+Note that in LAMMPS lingo, a KIM model driver is a pair style
+(e.g. EAM or Tersoff).  A KIM model is a pair style for a particular
+element or alloy and set of parameters, e.g. EAM for Cu with a
+specific EAM potential file.  Also note that installing the KIM API
+library with all its models, may take around 30 min to build.  Of
+course you only need to do that once.
+
+See the list of KIM model drivers here:
+https://openkim.org/kim-items/model-drivers/alphabetical
+
+See the list of all KIM models here:
+https://openkim.org/kim-items/models/by-model-drivers
+
+See the list of example KIM models included by default here:
+https://openkim.org/kim-api on the "What is in the KIM API source
+package?" page.
+
+[CMake build]:
+
+TODO: how to do this
+
+[Traditional make]:
+
+You can do download and build the KIM library manually if you prefer;
+follow the instructions in lib/kim/README.  You can also do it in one
+step from the lammps/src dir, using a command like these, which simply
+invoke the lib/kim/Install.py script with the specified args.
+
+make lib-kim              # print help message
+make lib-kim args="-b "   # (re-)install KIM API lib with only example models
+make lib-kim args="-b -a Glue_Ercolessi_Adams_Al__MO_324507536345_001"  # ditto plus one model
+make lib-kim args="-b -a everything"     # install KIM API lib with all models
+make lib-kim args="-n -a EAM_Dynamo_Ackland_W__MO_141627196590_002"       # add one model or model driver
+make lib-kim args="-p /usr/local/kim-api" # use an existing KIM API installation at the provided location
+make lib-kim args="-p /usr/local/kim-api -a EAM_Dynamo_Ackland_W__MO_141627196590_002" # ditto but add one model or driver :pre
+
+:line
+ 
+KOKKOS package :h3,link(kokkos)
+
+To build with this package, you have to choose a Kokkos setting for
+either CPU (multi-threading via OpenMP) or KNL (OpenMP) or GPU (Cuda)
+support.
+
+[CMake build]:
+
+TODO: how to do this, how to select CPU vs KNL vs GPU, and other
+traditional make settings
+
+[Traditional make]:
+
+  how to choose these 3 things: mode archgpu=N archcpu=SNB
+  mode = omp or cuda or phi (def = KOKKOS_DEVICES setting in Makefile )
+  archgpu = number like 35 (Kepler) or 21 (Fermi) (def = none)
+    sets KOKKOS_ARCH for GPU to appropriate value
+  archcpu = SNB or HSW or BGQ or Power7 or Power8 (def = none)
+    for CPU = SandyBridge, Haswell, BGQ, Power7, Power8
+    sets KOKKOS_ARCH for GPU to appropriate value
+
+For the KOKKOS package, you have 3 choices when building.  You can
+build with either CPU or KNL or GPU support.  Each choice requires
+additional settings in your Makefile.machine for the KOKKOS_DEVICES
+and KOKKOS_ARCH settings.  See the src/MAKE/OPTIONS/Makefile.kokkos*
+files for examples.
+
+For multicore CPUs using OpenMP:
+
+KOKKOS_DEVICES = OpenMP
+KOKKOS_ARCH = HSW           # HSW = Haswell, SNB = SandyBridge, BDW = Broadwell, etc :pre
+
+For Intel KNLs using OpenMP:
+
+KOKKOS_DEVICES = OpenMP
+KOKKOS_ARCH = KNL :pre
+
+For NVIDIA GPUs using CUDA:
+
+KOKKOS_DEVICES = Cuda
+KOKKOS_ARCH = Pascal60,Power8     # P100 hosted by an IBM Power8, etc
+KOKKOS_ARCH = Kepler37,Power8     # K80 hosted by an IBM Power8, etc :pre
+
+For GPUs, you also need these 2 lines in your Makefile.machine before
+the CC line is defined, in this case for use with OpenMPI mpicxx.  The
+2 lines define a nvcc wrapper compiler, which will use nvcc for
+compiling CUDA files or use a C++ compiler for non-Kokkos, non-CUDA
+files.
+
+KOKKOS_ABSOLUTE_PATH = $(shell cd $(KOKKOS_PATH); pwd)
+export OMPI_CXX = $(KOKKOS_ABSOLUTE_PATH)/config/nvcc_wrapper
+CC =		mpicxx :pre
+
+Once you have an appropriate Makefile.machine, you can
+install/un-install the package and build LAMMPS in the usual manner.
+Note that you cannot build one executable to run on multiple hardware
+targets (CPU or KNL or GPU).  You need to build LAMMPS once for each
+hardware target, to produce a separate executable.  Also note that we
+do not recommend building with other acceleration packages installed
+(GPU, OPT, USER-INTEL, USER-OMP) when also building with KOKKOS.
+
+:line
+ 
+LATTE package :h3,link(latte)
+
+To build with this package, you must download and build the LATTE
+library.
+
+[CMake build]:
+
+TODO: how to do this
+
+[Traditional make]:
+
+You can do this manually if you prefer; follow the instructions in
+lib/latte/README.  You can also do it in one step from the lammps/src
+dir, using a command like these, which simply invokes the
+lib/latte/Install.py script with the specified args:
+
+make lib-latte                          # print help message
+make lib-latte args="-b"                # download and build in lib/latte/LATTE-master
+make lib-latte args="-p $HOME/latte"    # use existing LATTE installation in $HOME/latte
+make lib-latte args="-b -m gfortran"    # download and build in lib/latte and 
+                                        #   copy Makefile.lammps.gfortran to Makefile.lammps
+:pre
+
+Note that 3 symbolic (soft) links, "includelink" and "liblink" and
+"filelink.o", are created in lib/latte to point into the LATTE home
+dir.  When LAMMPS builds in src it will use these links.  You should
+also check that the Makefile.lammps file you create is appropriate for
+the compiler you use on your system to build LATTE.
+
+:line
+ 
+MEAM package :h3,link(meam)
+
+NOTE: You should test building the MEAM library with both the Intel
+and GNU compilers to see if a simulation runs faster with one versus
+the other on your system.
+
+[CMake build]:
+
+TODO: automatic, i.e. nothing to do?
+
+[Traditional make]:
+
+Before building LAMMPS with this package, you must first build the
+MEAM library in lib/meam.  You can do this manually if you prefer;
+follow the instructions in lib/meam/README.  You can also do it in one
+step from the lammps/src dir, using a command like these, which simply
+invoke the lib/meam/Install.py script with the specified args:
+
+make lib-meam                  # print help message
+make lib-meam args="-m mpi"    # build with default Fortran compiler compatible with your MPI library
+make lib-meam args="-m serial" # build with compiler compatible with "make serial" (GNU Fortran)
+make lib-meam args="-m ifort"  # build with Intel Fortran compiler using Makefile.ifort :pre
+
+The build should produce two files: lib/meam/libmeam.a and
+lib/meam/Makefile.lammps.  The latter is copied from an existing
+Makefile.lammps.* and has settings needed to link C++ (LAMMPS) with
+Fortran (MEAM library).  Typically the two compilers used for LAMMPS
+and the MEAM library need to be consistent (e.g. both Intel or both
+GNU compilers).  If necessary, you can edit/create a new
+lib/meam/Makefile.machine file for your system, which should define an
+EXTRAMAKE variable to specify a corresponding Makefile.lammps.machine
+file.
+
+:line
+ 
+MSCG package :h3,link(mscg)
+
+Before building LAMMPS with this package, you must first download and
+build the MS-CG library.  
+
+[CMake build]:
+
+TODO: how to do this
+
+[Traditional make]:
+
+Building the MS-CG library and using it from
+LAMMPS requires a C++11 compatible compiler and that the GSL
+(GNU Scientific Library) headers and libraries are installed on your
+machine.  See the lib/mscg/README and MSCG/Install files for more details.
+
+Assuming these libraries are in place, you can do the download and
+build of MS-CG manually if you prefer; follow the instructions in
+lib/mscg/README.  You can also do it in one step from the lammps/src
+dir, using a command like these, which simply invoke the
+lib/mscg/Install.py script with the specified args:
+
+make lib-mscg             # print help message
+make lib-mscg args="-b -m serial"   # download and build in lib/mscg/MSCG-release-master
+                                    # with the settings compatible with "make serial"
+make lib-mscg args="-b -m mpi"      # download and build in lib/mscg/MSCG-release-master
+                                    # with the settings compatible with "make mpi"
+make lib-mscg args="-p /usr/local/mscg-release" # use the existing MS-CG installation in /usr/local/mscg-release :pre
+
+Note that 2 symbolic (soft) links, "includelink" and "liblink", will be created in lib/mscg
+to point to the MS-CG src/installation dir.  When LAMMPS is built in src it will use these links.
+You should not need to edit the lib/mscg/Makefile.lammps file.
+
+:line
+
+OPT package :h3,link(opt)
+
+[CMake build]:
+
+TODO: automatic, i.e. nothing to do?
+
+[Traditional make]:
+
+NOTE: The compile flag "-restrict" must be used to build LAMMPS with
+the OPT package when using Intel compilers.  It should be added to
+the CCFLAGS line of your Makefile.machine.  See Makefile.opt in
+src/MAKE/OPTIONS for an example.
+
+CCFLAGS: add -restrict for Intel compilers :ul
+
+:line
+ 
+POEMS package :h3,link(poems)
+
+[CMake build]:
+
+TODO: automatic, i.e. nothing to do?
+
+[Traditional make]:
+
+Before building LAMMPS with this package, you must first build the
+POEMS library in lib/poems.  You can do this manually if you prefer;
+follow the instructions in lib/poems/README.  You can also do it in
+one step from the lammps/src dir, using a command like these, which
+simply invoke the lib/poems/Install.py script with the specified args:
+
+make lib-poems                   # print help message
+make lib-poems args="-m serial"  # build with GNU g++ compiler (settings as with "make serial")
+make lib-poems args="-m mpi"     # build with default MPI C++ compiler (settings as with "make mpi")
+make lib-poems args="-m icc"     # build with Intel icc compiler :pre
+
+The build should produce two files: lib/poems/libpoems.a and
+lib/poems/Makefile.lammps.  The latter is copied from an existing
+Makefile.lammps.* and has settings needed to build LAMMPS with the
+POEMS library (though typically the settings are just blank).  If
+necessary, you can edit/create a new lib/poems/Makefile.machine file
+for your system, which should define an EXTRAMAKE variable to specify
+a corresponding Makefile.lammps.machine file.
+
+:line
+ 
+PYTHON package :h3,link(python)
+
+Building with the PYTHON package assumes you have a Python shared
+library available on your system, which needs to be a Python 2
+version, 2.6 or later.  Python 3 is not yet supported.  See the
+lib/python/README for more details.
+
+[CMake build]:
+
+TODO: automatic, i.e. nothing to do?
+
+[Traditional make]:
+
+The build uses the lib/python/Makefile.lammps file in the compile/link
+process.  You should only need to create a new Makefile.lammps.* file
+(and copy it to Makefile.lammps) if the LAMMPS build fails.
+
+:line
+ 
+REAX package :h3,link(reax)
+
+[CMake build]:
+
+TODO: automatic, i.e. nothing to do?
+
+[Traditional make]:
+
+Before building LAMMPS with this package, you must first build the
+REAX library in lib/reax.  You can do this manually if you prefer;
+follow the instructions in lib/reax/README.  You can also do it in one
+step from the lammps/src dir, using a command like these, which simply
+invoke the lib/reax/Install.py script with the specified args:
+
+make lib-reax                    # print help message
+make lib-reax args="-m serial"   # build with GNU Fortran compiler (settings as with "make serial")
+make lib-reax args="-m mpi"      # build with default MPI Fortran compiler (settings as with "make mpi")
+make lib-reax args="-m ifort"    # build with Intel ifort compiler :pre
+
+The build should produce two files: lib/reax/libreax.a and
+lib/reax/Makefile.lammps.  The latter is copied from an existing
+Makefile.lammps.* and has settings needed to link C++ (LAMMPS) with
+Fortran (REAX library).  Typically the two compilers used for LAMMPS
+and the REAX library need to be consistent (e.g. both Intel or both
+GNU compilers).  If necessary, you can edit/create a new
+lib/reax/Makefile.machine file for your system, which should define an
+EXTRAMAKE variable to specify a corresponding Makefile.lammps.machine
+file.
+
+:line
+
+VORONOI package :h3,link(voronoi)
+
+[CMake build]:
+
+TODO: how to do this
+
+[Traditional make]:
+
+Before building LAMMPS with this package, you must first download and
+build the Voro++ library.  You can do this manually if you prefer;
+follow the instructions in lib/voronoi/README.  You can also do it in
+one step from the lammps/src dir, using a command like these, which
+simply invoke the lib/voronoi/Install.py script with the specified
+args:
+
+make lib-voronoi                          # print help message
+make lib-voronoi args="-b"                # download and build the default version in lib/voronoi/voro++-<version>
+make lib-voronoi args="-p $HOME/voro++"   # use existing Voro++ installation in $HOME/voro++
+make lib-voronoi args="-b -v voro++0.4.6" # download and build the 0.4.6 version in lib/voronoi/voro++-0.4.6 :pre
+
+Note that 2 symbolic (soft) links, "includelink" and "liblink", are
+created in lib/voronoi to point to the Voro++ src dir.  When LAMMPS
+builds in src it will use these links.  You should not need to edit
+the lib/voronoi/Makefile.lammps file.
+
+:line
+:line
+
+USER-ATC package :h3,link(user-atc)
+
+[CMake build]:
+
+TODO: automatic, i.e. nothing to do?
+
+[Traditional make]:
+
+Before building LAMMPS with this package, you must first build the ATC
+library in lib/atc.  You can do this manually if you prefer; follow
+the instructions in lib/atc/README.  You can also do it in one step
+from the lammps/src dir, using a command like these, which simply
+invoke the lib/atc/Install.py script with the specified args:
+
+make lib-atc                      # print help message
+make lib-atc args="-m serial"     # build with GNU g++ compiler and MPI STUBS (settings as with "make serial")
+make lib-atc args="-m mpi"        # build with default MPI compiler (settings as with "make mpi")
+make lib-atc args="-m icc"        # build with Intel icc compiler :pre
+
+The build should produce two files: lib/atc/libatc.a and
+lib/atc/Makefile.lammps.  The latter is copied from an existing
+Makefile.lammps.* and has settings needed to build LAMMPS with the ATC
+library.  If necessary, you can edit/create a new
+lib/atc/Makefile.machine file for your system, which should define an
+EXTRAMAKE variable to specify a corresponding Makefile.lammps.machine
+file.
+
+Note that the Makefile.lammps file has settings for the BLAS and
+LAPACK linear algebra libraries.  As explained in lib/atc/README these
+can either exist on your system, or you can use the files provided in
+lib/linalg.  In the latter case you also need to build the library
+in lib/linalg with a command like these:
+
+make lib-linalg                     # print help message
+make lib-linalg args="-m serial"    # build with GNU Fortran compiler (settings as with "make serial")
+make lib-linalg args="-m mpi"       # build with default MPI Fortran compiler (settings as with "make mpi")
+make lib-linalg args="-m gfortran"  # build with GNU Fortran compiler :pre
+
+
+:line
+
+USER-AWPMD package :h3,link(user-awpmd)
+
+[CMake build]:
+
+TODO: automatic, i.e. nothing to do?
+
+[Traditional make]:
+
+Before building LAMMPS with this package, you must first build the
+AWPMD library in lib/awpmd.  You can do this manually if you prefer;
+follow the instructions in lib/awpmd/README.  You can also do it in
+one step from the lammps/src dir, using a command like these, which
+simply invoke the lib/awpmd/Install.py script with the specified args:
+
+make lib-awpmd                   # print help message
+make lib-awpmd args="-m serial"  # build with GNU g++ compiler and MPI STUBS (settings as with "make serial")
+make lib-awpmd args="-m mpi"     # build with default MPI compiler (settings as with "make mpi")
+make lib-awpmd args="-m icc"     # build with Intel icc compiler :pre
+
+The build should produce two files: lib/awpmd/libawpmd.a and
+lib/awpmd/Makefile.lammps.  The latter is copied from an existing
+Makefile.lammps.* and has settings needed to build LAMMPS with the
+AWPMD library.  If necessary, you can edit/create a new
+lib/awpmd/Makefile.machine file for your system, which should define
+an EXTRAMAKE variable to specify a corresponding
+Makefile.lammps.machine file.
+
+Note that the Makefile.lammps file has settings for the BLAS and
+LAPACK linear algebra libraries.  As explained in lib/awpmd/README
+these can either exist on your system, or you can use the files
+provided in lib/linalg.  In the latter case you also need to build the
+library in lib/linalg with a command like these:
+
+make lib-linalg                     # print help message
+make lib-linalg args="-m serial"    # build with GNU Fortran compiler (settings as with "make serial")
+make lib-linalg args="-m mpi"       # build with default MPI Fortran compiler (settings as with "make mpi")
+make lib-linalg args="-m gfortran"  # build with GNU Fortran compiler :pre
+
+:line
+
+USER-COLVARS package :h3,link(user-colvars)
+
+[CMake build]:
+
+TODO: automatic, i.e. nothing to do?
+
+[Traditional make]:
+
+Before building LAMMPS with this package, you must first build the
+COLVARS library in lib/colvars.  You can do this manually if you
+prefer; follow the instructions in lib/colvars/README.  You can also
+do it in one step from the lammps/src dir, using a command like these,
+which simply invoke the lib/colvars/Install.py script with the
+specified args:
+
+make lib-colvars                      # print help message
+make lib-colvars args="-m serial"     # build with GNU g++ compiler (settings as with "make serial")
+make lib-colvars args="-m mpi"        # build with default MPI compiler (settings as with "make mpi")
+make lib-colvars args="-m g++-debug"  # build with GNU g++ compiler and colvars debugging enabled :pre
+
+The build should produce two files: lib/colvars/libcolvars.a and
+lib/colvars/Makefile.lammps.  The latter is copied from an existing
+Makefile.lammps.* and has settings needed to build LAMMPS with the
+COLVARS library (though typically the settings are just blank).  If
+necessary, you can edit/create a new lib/colvars/Makefile.machine file
+for your system, which should define an EXTRAMAKE variable to specify
+a corresponding Makefile.lammps.machine file.
+
+:line
+
+USER-H5MD package :h3,link(user-h5md)
+
+[CMake build]:
+
+TODO: automatic, i.e. nothing to do?
+
+[Traditional make]:
+
+Note that to follow these steps to compile and link to the CH5MD
+library, you need the standard HDF5 software package installed on your
+system, which should include the h5cc compiler and the HDF5 library.
+
+Before building LAMMPS with this package, you must first build the
+CH5MD library in lib/h5md.  You can do this manually if you prefer;
+follow the instructions in lib/h5md/README.  You can also do it in one
+step from the lammps/src dir, using a command like these, which simply
+invoke the lib/h5md/Install.py script with the specified args:
+
+make lib-h5md                     # print help message
+make lib-hm5d args="-m h5cc"      # build with h5cc compiler :pre
+
+The build should produce two files: lib/h5md/libch5md.a and
+lib/h5md/Makefile.lammps.  The latter is copied from an existing
+Makefile.lammps.* and has settings needed to build LAMMPS with the
+system HDF5 library.  If necessary, you can edit/create a new
+lib/h5md/Makefile.machine file for your system, which should define an
+EXTRAMAKE variable to specify a corresponding Makefile.lammps.machine
+file.
+
+:line
+
+USER-INTEL package :h3,link(user-intel)
+
+[CMake build]:
+
+TODO: how to choose CPU vs KNL ??
+
+[Traditional make]:
+
+For the USER-INTEL package, you have 2 choices when building.  You can
+build with either CPU or KNL support.  Each choice requires additional
+settings in your Makefile.machine for CCFLAGS and LINKFLAGS and
+optimized malloc libraries.  See the
+src/MAKE/OPTIONS/Makefile.intel_cpu and src/MAKE/OPTIONS/Makefile.knl
+files for examples.
+
+For CPUs:
+
+OPTFLAGS =      -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits
+CCFLAGS =	-g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload \
+-fno-alias -ansi-alias -restrict $(OPTFLAGS)
+LINKFLAGS =	-g -qopenmp $(OPTFLAGS)
+LIB =           -ltbbmalloc -ltbbmalloc_proxy :pre
+
+For KNLs:
+
+OPTFLAGS =      -xMIC-AVX512 -O2 -fp-model fast=2 -no-prec-div -qoverride-limits
+CCFLAGS =	-g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload \
+-fno-alias -ansi-alias -restrict $(OPTFLAGS)
+LINKFLAGS =	-g -qopenmp $(OPTFLAGS)
+LIB =           -ltbbmalloc :pre
+
+Once you have an appropriate Makefile.machine, you can
+install/un-install the package and build LAMMPS in the usual manner.
+Note that you cannot build one executable to run on multiple hardware
+targets (Intel CPUs or KNL).  You need to build LAMMPS once for each
+hardware target, to produce a separate executable.
+
+You should also typically install the USER-OMP package, as it can be
+used in tandem with the USER-INTEL package to good effect, as
+explained on the "Speed intel"_Speed_intel.html doc page.
+
+:line
+
+USER-MOLFILE package :h3,link(user-molfile)
+
+[CMake build]:
+
+TODO: automatic, i.e. nothing to do?
+
+[Traditional make]:
+
+Note that the lib/molfile/Makefile.lammps file has a setting for a
+dynamic loading library libdl.a that should is typically present on
+all systems, which is required for LAMMPS to link with this package.
+If the setting is not valid for your system, you will need to edit the
+Makefile.lammps file.  See lib/molfile/README and
+lib/molfile/Makefile.lammps for details.
+
+:line
+
+USER-NETCDF package :h3,link(user-netcdf)
+
+[CMake build]:
+
+TODO: automatic, i.e. nothing to do?
+
+[Traditional make]:
+
+Note that to follow these steps, you need the standard NetCDF software
+package installed on your system.  The lib/netcdf/Makefile.lammps file
+has settings for NetCDF include and library files that LAMMPS needs to
+compile and linkk with this package.  If the settings are not valid
+for your system, you will need to edit the Makefile.lammps file.  See
+lib/netcdf/README for details.
+
+:line
+
+USER-OMP package :h3,link(user-omp)
+
+[CMake build]:
+
+TODO: automatic, i.e. nothing to do?
+
+[Traditional make]:
+
+CCFLAGS: add -fopenmp (and -restrict when using Intel compilers)
+LINKFLAGS: add -fopenmp :ul
+
+:line
+
+USER-QMMM package :h3,link(user-qmmm)
+
+The LAMMPS executable these steps produce is not yet functional for a
+QM/MM simulation.  You must also build Quantum ESPRESSO and create a
+new executable which links LAMMPS and Quantum ESPRESSO together.
+These are steps 3 and 4 described in the lib/qmmm/README file.
+
+[CMake build]:
+
+TODO: how to do this
+
+[Traditional make]:
+
+Before building LAMMPS with this package, you must first build the
+QMMM library in lib/qmmm.  You can do this manually if you prefer;
+follow the first two steps explained in lib/qmmm/README.  You can
+also do it in one step from the lammps/src dir, using a command like
+these, which simply invoke the lib/qmmm/Install.py script with the
+specified args:
+
+make lib-qmmm                      # print help message
+make lib-qmmm args="-m serial"     # build with GNU Fortran compiler (settings as in "make serial")
+make lib-qmmm args="-m mpi"        # build with default MPI compiler (settings as in "make mpi")
+make lib-qmmm args="-m gfortran"   # build with GNU Fortran compiler :pre
+
+The build should produce two files: lib/qmmm/libqmmm.a and
+lib/qmmm/Makefile.lammps.  The latter is copied from an existing
+Makefile.lammps.* and has settings needed to build LAMMPS with the
+QMMM library (though typically the settings are just blank).  If
+necessary, you can edit/create a new lib/qmmm/Makefile.machine file
+for your system, which should define an EXTRAMAKE variable to specify
+a corresponding Makefile.lammps.machine file.
+
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
+
+:line
+
+USER-QUIP package :h3,link(user-quip)
+
+[CMake build]:
+
+TODO: how to do this
+
+[Traditional make]:
+
+Note that to follow these steps to compile and link to the QUIP
+library, you must first download and build QUIP on your systems.  It
+can be obtained from GitHub.  See step 1 and step 1.1 in the
+lib/quip/README file for details on how to do this.  Note that it
+requires setting two environment variables, QUIP_ROOT and QUIP_ARCH,
+which will be accessed by the lib/quip/Makefile.lammps file which is
+used when you compile and link LAMMPS with this package.  You should
+only need to edit this file if the LAMMPS build can not use its
+settings to successfully build on your system.
+
+:line
+
+USER-SMD package :h3,link(user-smd)
+
+[CMake build]:
+
+-D EIGEN3_INCLUDE_DIR 	
+
+[Traditional make]:
+
+Before building LAMMPS with this package, you must first download the
+Eigen library.  Eigen is a template library, so you do not need to
+build it, just download it.  You can do this manually if you prefer;
+follow the instructions in lib/smd/README.  You can also do it in one
+step from the lammps/src dir, using a command like these, which simply
+invoke the lib/smd/Install.py script with the specified args:
+
+make lib-smd                         # print help message
+make lib-smd args="-b"               # download and build in default lib/smd/eigen-eigen-...
+make lib-smd args="-p /usr/include/eigen3"    # use existing Eigen installation in /usr/include/eigen3 :pre
+
+Note that a symbolic (soft) link named "includelink" is created in
+lib/smd to point to the Eigen dir.  When LAMMPS builds it will use
+this link.  You should not need to edit the lib/smd/Makefile.lammps file.
+
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
+
+:line
+
+USER-VTK package :h3,link(user-vtk)
+
+[CMake build]:
+
+TODO: automatic, i.e. nothing to do?
+
+[Traditional make]:
+
+The lib/vtk/Makefile.lammps file has settings for accessing VTK files
+and its library, which are required for LAMMPS to build and link with
+this package.  If the settings are not valid for your system, check if
+one of the other lib/vtk/Makefile.lammps.* files is compatible and
+copy it to Makefile.lammps.  If none of the provided files work, you
+will need to edit the Makefile.lammps file.
+
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
diff --git a/doc/src/Build_link.txt b/doc/src/Build_link.txt
new file mode 100644
index 0000000000..1a1b387f3f
--- /dev/null
+++ b/doc/src/Build_link.txt
@@ -0,0 +1,85 @@
+"Higher level section"_Build.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Link LAMMPS as a library to another code :h3
+
+LAMMPS can be used as a library by another application, including
+Python scripts.  The files src/library.cpp and library.h define the
+C-style API for using LAMMPS as a library.  See the "Howto
+library"_Howto_library.html doc page for a description of the
+interface and how to extend it for your needs.
+
+The "Build basics"_Build_basics.html doc page explains how to build
+LAMMPS as either a shared or static library.  This results in one of
+these 2 files:
+
+liblammps.so      # shared library
+liblammps.a       # static library
+
+:line
+
+[Link with LAMMPS as a static library]:
+
+The calling application can link to LAMMPS as a static library with a
+link command like this:
+
+g++ caller.o -L/home/sjplimp/lammps/src -llammps -o caller
+
+The -L argument is the path to where the liblammps.a file is.  The
+-llammps argument is shorthand for the file liblammps.a.
+
+:line
+
+[Link with LAMMPS as a shared library]:
+
+If you wish to link to liblammps.so, the operating system finds shared
+libraries to load at run-time using the environment variable
+LD_LIBRARY_PATH.  To enable this you can do one of two things:
+
+(1) Copy the liblammps.so file to a location the system can find it,
+such as /usr/local/lib.  I.e. a directory already listed in your
+LD_LIBRARY_PATH variable.  You can type
+
+printenv LD_LIBRARY_PATH :pre
+
+to see what directories are in that list.
+
+(2) Add the LAMMPS src directory (or the directory you perform CMake
+build in) to your LD_LIBRARY_PATH, so that the current version of the
+shared library is always available to programs that use it.
+
+For the csh or tcsh shells, you would add something like this to your
+~/.cshrc file:
+
+setenv LD_LIBRARY_PATH $\{LD_LIBRARY_PATH\}:/home/sjplimp/lammps/src :pre
+
+:line
+
+[Calling the LAMMPS library]:
+
+Either flavor of library (static or shared) allows one or more LAMMPS
+objects to be instantiated from the calling program.
+
+When used from a C++ program, all of LAMMPS is wrapped in a LAMMPS_NS
+namespace; you can safely use any of its classes and methods from
+within the calling code, as needed.
+
+When used from a C or Fortran program, the library has a simple
+C-style interface, provided in src/library.cpp and src/library.h.
+
+See the "Python library"_Python_library.html doc page for a
+description of the Python interface to LAMMPS, which wraps the C-style
+interface.
+
+See the sample codes in examples/COUPLE/simple for examples of C++ and
+C and Fortran codes that invoke LAMMPS thru its library interface.
+Other examples in the COUPLE directory use coupling ideas discussed on
+the "Howto couple"_Howto_couple.html doc page.
+
+
diff --git a/doc/src/Build_make.txt b/doc/src/Build_make.txt
new file mode 100644
index 0000000000..4603a986a3
--- /dev/null
+++ b/doc/src/Build_make.txt
@@ -0,0 +1,66 @@
+"Higher level section"_Build.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Build LAMMPS with make :h3
+
+Building LAMMPS with traditional make requires you have a
+Makefile.machine file in the src/MAKE directory appropriate for your
+system (see below).  It can list various options for what to
+include/exclude in a LAMMPS build.  To include LAMMPS packages you
+must install them first, as discussed on the "Build
+package"_Build_package.html doc page.  If the packages use provided or
+external libraries, you must build those libraries before building
+LAMMPS.  Building "LAMMPS with CMake"_Build_cmake.html can automate
+all of this, so we suggest you try it first.
+
+These commands perform a default LAMMPS build, producing the LAMMPS
+executable lmp_serial or lmp_mpi in lammps/src:
+
+cd lammps/src
+make serial     # build a serial LAMMPS executable
+make mpi        # build a parallel LAMMPS executable with MPI
+make            # see a variety of make options :pre
+
+If your machine has multiple cores (most do), using a command like
+"make -j mpi" will be much faster.
+
+After the initial build, if you edit LAMMPS source files, or add new
+files to the source directory, you can re-type make and it will only
+re-compile the files that have changed.
+
+:line
+
+The lammps/src/MAKE directory contains all the Makefile.machine files
+included in the LAMMPS distribution.  Typing "make machine" uses
+Makefile.machine.  Thus the "make serial" or "make mpi" lines above
+use Makefile.serial and Makefile.mpi.  Others are in these dirs:
+
+OPTIONS      # Makefiles which enable specific options
+MACHINES     # Makefiles for specific machines
+MINE         # customized Makefiles you create :pre
+
+Typing "make" lists all the available Makefile.machine files.  A file
+with the same name can appear in multiple dirs (not a good idea).  The
+order the dirs are searched is as follows: src/MAKE/MINE, src/MAKE,
+src/MAKE/OPTIONS, src/MAKE/MACHINES.  This gives preference to a
+customized file you put in src/MAKE/MINE.
+
+Makefiles you may wish to try include these (some require a package
+first be installed).  Many of these include specific compiler flags
+for optimized performance:
+
+make mac             # build serial LAMMPS on a Mac
+make mac_mpi         # build parallel LAMMPS on a Mac
+make intel_cpu       # build with the USER-INTEL package optimized for CPUs
+make knl             # build with the USER-INTEL package optimized for KNLs
+make opt             # build with the OPT package optimized for CPUs
+make omp             # build with the USER-OMP package optimized for OpenMP
+make kokkos_omp      # build with the KOKKOS package for OpenMP
+make kokkos_cuda_mpi # build with the KOKKOS package for GPUs
+make kokkos_phi      # build with the KOKKOS package for KNLs :pre
diff --git a/doc/src/Build_package.txt b/doc/src/Build_package.txt
new file mode 100644
index 0000000000..e59bf2b9d6
--- /dev/null
+++ b/doc/src/Build_package.txt
@@ -0,0 +1,182 @@
+"Higher level section"_Build.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Include packages in build :h3
+
+In LAMMPS, a package is a group of files that enable a specific set of
+features.  For example, force fields for molecular systems or
+rigid-body constraints are in packages.  In the src directory, each
+package is a sub-directory with the package name in capital letters.
+
+A complete list of packages with brief overviews of each are on the
+"Packages details"_Packages_details.html doc page.
+
+When building LAMMPS, you can choose to include or exclude each
+package.  In general there is no need to include a package if you
+never plan to use its features.
+
+If you get a run-time error that a LAMMPS command or style is
+"Unknown", it is often because the command is contained in a package,
+and your build did not include the package.  Running LAMMPS with the
+"-h command-line switch"_Run_options.html will print all the included
+packages and commands for that executable.
+
+The mechanism for including packages is different for CMake versus a
+traditional make.
+
+For the majority of packages, if you follow the single step below to
+include it, you can then build LAMMPS exactly the same as you would
+without any packages installed.  A few packages may require additional
+steps, as explained on the "Build extras"_Build_extras.html doc page.
+
+These links take you to the extra instructions for those select
+packages:
+
+"GPU"_Build_extras.html#gpu,
+"KIM"_Build_extras.html#kim,
+"KOKKOS"_Build_extras.html#kokkos,
+"LATTE"_Build_extras.html#latte,
+"MEAM"_Build_extras.html#meam,
+"MSCG"_Build_extras.html#mscg,
+"OPT"_Build_extras.html#opt,
+"POEMS"_Build_extras.html#poems,
+"PYTHON"_Build_extras.html#python,
+"REAX"_Build_extras.html#reax,
+"VORONOI"_Build_extras.html#voronoi,
+"USER-ATC"_Build_extras.html#user-atc,
+"USER-AWPMD"_Build_extras.html#user-awpmd,
+"USER-COLVARS"_Build_extras.html#user-colvars,
+"USER-H5MD"_Build_extras.html#user-h5md,
+"USER-INTEL"_Build_extras.html#user-intel,
+"USER-MOLFILE"_Build_extras.html#user-molfile,
+"USER-NETCDF"_Build_extras.html#user-netcdf,
+"USER-OMP"_Build_extras.html#user-omp,
+"USER-QMMM"_Build_extras.html#user-qmmm,
+"USER-QUIP"_Build_extras.html#user-quip,
+"USER-SMD"_Build_extras.html#user-smd,
+"USER-VTK"_Build_extras.html#user-vtk :tb(c=6,ea=c)
+
+[CMake variables]:
+
+-D PKG_NAME=value          # yes or no (default) :pre
+
+Examples:
+
+-D PKG_MANYBODY=yes
+-D PKG_USER-INTEL=yes :pre
+
+All standard and user packages are included the same way.  Note that
+USER packages have a hyphen between USER and the rest of the package
+name, not an underscore.
+
+NOTE: If you toggle back and forth between building with CMake vs
+make, no packages in the src directory can be installed when you
+invoke cmake.  CMake will give an error if that is not the case,
+indicating how you can un-install all packages in the src dir.
+
+[Traditional make]:
+
+cd lammps/src
+make ps                    # check which packages are currently installed
+make yes-name              # install a package with name
+make no-name               # un-install a package with name
+make mpi                   # build LAMMPS with whatever packages are now installed :pre
+
+Examples:
+
+make no-rigid
+make yes-user-intel :pre
+
+All standard and user packages are included the same way.
+
+NOTE: You must always re-build LAMMPS (via make) after installing or
+un-installing a package, for the action to take effect.
+
+NOTE: You cannot install or un-install packages and build LAMMPS in a
+single make command with multiple targets, e.g. make yes-colloid mpi.
+This is because the make procedure creates a list of source files that
+will be out-of-date for the build if the package configuration changes
+within the same command.  You can include or exclude multiple packages
+in a single make command, e.g. make yes-colloid no-manybody.
+
+[CMake and make info]:
+
+Any package can be included or excluded in a LAMMPS build, independent
+of all other packages.  However, some packages include files derived
+from files in other packages.  LAMMPS checks for this and does the
+right thing.  Individual files are only included if their dependencies
+are already included.  Likewise, if a package is excluded, other files
+dependent on that package are also excluded.
+
+NOTE: The one exception is that for a build via make (ok via CMake),
+we do not recommend building with the KOKKOS package installed along
+with any of the other acceleration packages (GPU, OPT, USER-INTEL,
+USER-OMP) also installed.  This is because of how Kokkos sometimes
+builds using a wrapper compiler which can make it difficult to invoke
+all the compile/link flags correctly for both Kokkos and non-Kokkos
+files.
+
+When you download a LAMMPS tarball, three packages are pre-installed
+in the src directory: KSPACE, MANYBODY, MOLECULE.  This is because
+they are so commonly used.  When you download LAMMPS source files from
+the Git or SVN repositories, no packages are pre-installed.
+
+:line
+
+The following make commands are useful for managing package source
+files and their installation when building LAMMPS via traditional
+make.  Just type "make" in lammps/src to see a one-line summary.
+
+These commands install/un-install sets of packages:
+
+make yes-all | install all packages
+make no-all | un-install all packages
+make yes-standard or make yes-std | install standard packages
+make no-standard or make no-std| un-install standard packages
+make yes-user | install user packages
+make no-user | un-install user packages
+make yes-lib | install packages that require extra libraries
+make no-lib | un-install packages that require extra libraries
+make yes-ext | install packages that require external libraries
+make no-ext | un-install packages that require external libraries :tb(s=|,a=l)
+
+which install/un-install various sets of packages.  Typing "make
+package" will list all the these commands.
+
+NOTE: Installing or un-installing a package works by simply copying
+files back and forth between the main src directory and
+sub-directories with the package name (e.g. src/KSPACE, src/USER-ATC),
+so that the files are included or excluded when LAMMPS is built.
+
+The following make commands help manage files that exist in both the
+src directory and in package sub-directories.  You do not normally
+need to use these commands unless you are editing LAMMPS files or are
+"installing a patch"_Install_patch.html downloaded from the LAMMPS web
+site.
+
+Type "make package-status" or "make ps" to show which packages are
+currently installed.  For those that are installed, it will list any
+files that are different in the src directory and package
+sub-directory.
+
+Type "make package-installed" or "make pi" to show which packages are
+currently installed, without listing the status of packages that are
+not installed.
+
+Type "make package-update" or "make pu" to overwrite src files with
+files from the package sub-directories if the package is installed.
+It should be used after a "patch has been applied"_Install_patch.html,
+since patches only update the files in the package sub-directory, but
+not the src files.
+
+Type "make package-overwrite" to overwrite files in the package
+sub-directories with src files.
+
+Type "make package-diff" to list all differences between pairs of
+files in both the src dir and a package dir.
diff --git a/doc/src/Build_settings.txt b/doc/src/Build_settings.txt
new file mode 100644
index 0000000000..1969e9588b
--- /dev/null
+++ b/doc/src/Build_settings.txt
@@ -0,0 +1,327 @@
+"Higher level section"_Build.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Optional build settings :h3
+
+LAMMPS can be built with several optional settings.  Each sub-section
+explain how to do this for either a CMake build or traditional make.
+
+"FFT library"_#fft for use with "kspace_style pppm"_kspace_style.html command
+"Size of LAMMPS data types"_#size
+"Read or write compressed files"_#compress
+"Output of JPG and PNG files"_#graphics via "dump image"_dump_image.html command
+"Output of movie files"_#graphics via "dump_movie"_dump_image.html command
+"Memory allocation alignment"_#align
+"Workaround for long long integers"_#longlong
+"Error handling exceptions"_#exceptions when using LAMMPS as a library :all(b)
+
+:line
+:line
+ 
+FFT library :h3,link(fft)
+
+When the KSPACE package is included in a LAMMPS build, the
+"kspace_style pppm"_kspace_style.html command performs 3d FFTs which
+require use of an FFT library to compute 1d FFTs.  The KISS FFT
+library is included with LAMMPS but other libraries are typically
+faster if they are available on your system.  See details on other FFT
+libraries below.
+ 
+[CMake variables]:
+
+-D FFT=value              # kiss or fftw3 or fftw2 or mkl, default is fftw3 if found, else kiss
+-D FFT_SINGLE=value       # yes or no (default), no = double precision
+-D FFT_PACK=value         # array (default) or pointer or memcpy :pre
+
+Usually these settings are all that is needed.  If CMake cannot find
+the FFT library, you can set these variables:
+
+-D FFTW3_INCLUDE_DIRS=path  # path to FFTW3 include files
+-D FFTW2_LIBRARIES=path     # path to FFTW3 libraries
+-D FFTW2_INCLUDE_DIRS=path  # ditto for FFTW2
+-D FFTW3_LIBRARIES=path
+-D MKL_INCLUDE_DIRS=path    # ditto for Intel MKL library
+-D MKL_LIBRARIES=path :pre
+
+[Makefile.machine settings]:
+
+FFT_INC = -DFFT_FFTW3         # FFTW3, FFTW2, FFTW (same as FFTW3), MKL, or KISS
+                              # default is KISS if not specified
+FFT_INC = -DFFT_SINGLE        # do not specify for double precision
+FFT_INC = -DFFT_PACK_ARRAY    # or -DFFT_PACK_POINTER or -DFFT_PACK_MEMCPY :pre
+
+TODO: change code to use FFT_PACK_OPTION
+
+FFT_INC =    	-I/usr/local/include
+FFT_PATH =      -L/usr/local/lib
+FFT_LIB =	-lfftw3             # FFTW3 double precision
+FFT_LIB =	-lfftw3 -lfftw3f    # FFTW3 single precision
+FFT_LIB =	-lfftw              # FFTW2 double precision, or -ldfftw
+FFT_LIB =	-lsfftw             # FFTW2 single precision
+FFT_LIB =       -lmkl_intel_lp64 -lmkl_sequential -lmkl_core  # MKL with Intel compiler
+FFT_LIB =       -lmkl_gf_lp64 -lmkl_sequential -lmkl_core     # MKL with GNU compier :pre
+
+As with CMake, you do not need to set paths in FFT_INC or FFT_PATH, if
+make can find the FFT header and library files.  You must specify
+FFT_LIB with the appropriate FFT libraries to include in the link.
+
+[CMake and make info]:
+
+The "KISS FFT library"_http://kissfft.sf.net is included in the LAMMPS
+distribution, so not FFT_LIB setting is required.  It is portable
+across all platforms.
+
+FFTW is fast, portable library that should also work on any platform
+and typically be faster than KISS FFT.  You can download it from
+"www.fftw.org"_http://www.fftw.org.  Both the legacy version 2.1.X and
+the newer 3.X versions are supported.  Building FFTW for your box
+should be as simple as ./configure; make; make install.  The install
+command typically requires root privileges (e.g. invoke it via sudo),
+unless you specify a local directory with the "--prefix" option of
+configure.  Type "./configure --help" to see various options.
+
+The Intel MKL math library is part of the Intel compiler suite.  It
+can be used with the Intel or GNU compiler (see FFT_LIB setting above).
+
+3d FFTs can be computationally expensive.  Their cost can be reduced
+by performing single-precision FFTs instead of double precision.
+Single precision means the real and imaginary parts of a complex datum
+are 4-byte floats.  Double precesion means they are 8-byte doubles.
+Note that Fourier transform and related PPPM operations are somewhat
+insensitive to floating point truncation errors and thus do not always
+need to be performed in double precision.  Using this setting trades
+off a little accuracy for reduced memory use and parallel
+communication costs for transposing 3d FFT data.
+
+When using -DFFT_SINGLE with FFTW3 or FFTW2, you may need to build the
+FFTW library a second time with support for single-precision.
+
+For FFTW3, do the following, which should produce the additional
+library libfftw3f.a
+
+make clean
+./configure --enable-single; make; make install :pre
+
+For FFTW2, do the following, which should produce the additional
+library libsfftw.a
+
+make clean
+./configure --enable-float --enable-type-prefix; make; make install :pre
+
+Performing 3d FFTs requires communication to transpose the 3d FFT
+grid.  The data packing/unpacking for this can be done in one of 3
+modes (ARRAY, POINTER, MEMCPY) as set by the FFT_PACK syntax above.
+Depending on the machine, the size of the FFT grid, the number of
+processors used, one option may be slightly faster.  The default is
+ARRAY mode.
+
+:line
+
+Size of LAMMPS data types :h3,link(size)
+
+LAMMPS has a few integer data types which can be defined as 4-byte or
+8-byte integers.  The default setting of "smallbig" is almost always
+adequate.
+
+[CMake variable]:
+
+-D LAMMPS_SIZES=value   # smallbig (default) or bigbig or smallsmall :pre
+
+[Makefile.machine setting]:
+
+LMP_INC = -DLAMMPS_SMALLBIG    # or -DLAMMPS_BIGBIG or -DLAMMPS_SMALLSMALL :pre
+
+[CMake and make info]:
+
+The default "smallbig" setting allows for simulations with:
+ 
+total atom count = 2^63 atoms (about 9e18)
+total timesteps = 2^63 (about 9e18)
+atom IDs = 2^31 (about 2 billion)
+image flags = roll over at 512 :ul
+  
+The "bigbig" setting increases the latter two limits.  It allows for:
+
+total atom count = 2^63 atoms (about 9e18)
+total timesteps = 2^63 (about 9e18)
+atom IDs = 2^63 (about 9e18)
+image flags = roll over at about 1 million (2^20) :ul
+
+The "smallsmall" setting is only needed if your machine does not
+support 8-byte integers.  It allows for:
+
+total atom count = 2^31 atoms (about 2 billion)
+total timesteps = 2^31 (about 2 billion)
+atom IDs = 2^31 (about 2 billion)
+image flags = roll over at 512 (2^9) :ul
+
+Atom IDs are not required for atomic systems which do not store bond
+topology information, though IDs are enabled by default.  The
+"atom_modify id no"_atom_modify.html command will turn them off.  Atom
+IDs are required for molecular systems with bond topology (bonds,
+angles, dihedrals, etc).  Thus if you model a molecular system with
+more than 2 billion atoms, you need the "bigbig" setting.
+
+Image flags store 3 values per atom which count the number of times an
+atom has moved through the periodic box in each dimension.  See the
+"dump"_dump.html doc page for a discussion.  If an atom moves through
+the periodic box more than this limit, the value will "roll over",
+e.g. from 511 to -512, which can cause diagnostics like the
+mean-squared displacement, as calculated by the "compute
+msd"_compute_msd.html command, to be faulty.
+
+Note that the USER-ATC package is not currently compatible with the
+"bigbig" setting.
+
+Also note that the GPU package requires its lib/gpu library to be
+compiled with the same size setting, or the link will fail.  A CMake
+build does this automatically.  When building with make, the setting
+in whichever lib/gpu/Makefile is used must be the same as above.
+
+:line
+
+Output of JPG, PNG, and movie files :h3,link(graphics)
+
+The "dump image"_dump_image.html command has options to output JPEG or
+PNG image files.  Likewise the "dump movie"_dump_image.html command
+ouputs movie files in MPEG format.  Using these options requires the
+following settings:
+
+[CMake variables]:
+
+-D LAMMPS_JPEG=value      # yes or no
+                          # default = yes if CMake finds JPEG files, else no
+-D LAMMPS_PNG=value       # yes or no
+                          # default = yes if CMake finds PNG and ZLIB files, else no
+-D LAMMPS_FFMPEG=value    # yes or no
+                          # default = yes if CMake can find ffmpeg, else no :pre
+
+Usually these settings are all that is needed.  If CMake cannot find
+the graphics header, library, executuable files, you can set these
+variables:
+
+-D JPEG_INCLUDE_DIR=path    # path to jpeglib.h header file 
+-D JPEG_LIBRARIES=path      # path to libjpeg.a (.so) file 
+-D PNG_INCLUDE_DIR=path     # path to png.h header file 
+-D PNG_LIBRARIES=path       # path to libpng.a (.so) file 
+-D ZLIB_INCLUDE_DIR=path    # path to zlib.h header file 
+-D ZLIB_LIBRARIES=path      # path to libzlib.a (.so) file 
+-D FFMPEG_EXECUTABLE=path   # path to ffmpeg executable :pre
+
+[Makefile.machine settings]:
+
+LMP_INC = -DLAMMPS_JPEG
+LMP_INC = -DLAMMPS_PNG
+LMP_INC = -DLAMMPS_FFMPEG :pre
+
+JPG_INC = -I/usr/local/include   # path to jpeglib.h, png.h, zlib.h header files if make cannot find them
+JPG_PATH = -L/usr/lib            # paths to libjpeg.a, libpng.a, libzlib.a (.so) files if make cannot find them
+JPG_LIB = -ljpeg -lpng -lzlib    # library names :pre
+
+As with CMake, you do not need to set JPG_INC or JPG_PATH, if make can
+find the graphics header and library files.  You must specify JPG_LIB
+with a list of graphics libraries to include in the link.  You must
+insure ffmpeg is in a directory where LAMMPS can find it at runtime,
+i.e. a dir in your PATH environment variable.
+
+[CMake and make info]:
+
+Using ffmpeg to output movie files requires that your machine
+supports the "popen" function in the standard runtime library.
+
+NOTE: On some clusters with high-speed networks, using the fork()
+library calls (required by popen()) can interfere with the fast
+communication library and lead to simulations using ffmpeg to hang or
+crash.
+
+:line
+
+Read or write compressed files :h3,link(compress)
+
+If this option is enabled, large files can be read or written with
+gzip compression by several LAMMPS commands, including
+"read_data"_read_data.html, "rerun"_rerun.html, and "dump"_dump.html.
+
+[CMake variables]:
+
+-D LAMMPS_GZIP=value     # yes or no
+                         # default is yes if CMake can find gzip, else no
+-D GZIP_EXECUTABLE=path  # path to gzip executable if CMake cannot find it
+
+[Makefile.machine setting]:
+
+LMP_INC = -DLAMMPS_GZIP :pre
+
+[CMake and make info]:
+
+This option requires that your machine supports the "popen()" function
+in the standard runtime library and that a gzip executable can be
+found by LAMMPS during a run.
+
+NOTE: On some clusters with high-speed networks, using the fork()
+library calls (required by popen()) can interfere with the fast
+communication library and lead to simulations using compressed output
+or input to hang or crash. For selected operations, compressed file
+I/O is also available using a compression library instead, which is
+what the "COMPRESS package"_Packages.html enables.
+
+:line
+
+Memory allocation alignment :h3,link(align)
+
+This setting enables the use of the posix_memalign() call instead of
+malloc() when LAMMPS allocates large chunks or memory.  This can make
+vector instructions on CPUs more efficient, if dynamically allocated
+memory is aligned on larger-than-default byte boundaries.
+
+[CMake variable]:
+
+-D LAMMPS_MEMALIGN=value            # 8, 16, 32, 64 (default) :pre
+
+[Makefile.machine setting]:
+
+LMP_INC = -DLAMMPS_MEMALIGN=value   # 8, 16, 32, 64 :pre
+
+TODO: I think the make default (no LAMMPS_MEMALIGN) is to not
+use posix_memalign(), just malloc().  Does a CMake build have
+an equivalent option?  I.e. none.
+
+:line
+
+Workaround for long long integers :h3,link(longlong)
+
+If your system or MPI version does not recognize "long long" data
+types, the following setting will be needed.  It converts "long long"
+to a "long" data type, which should be the desired 8-byte integer on
+those systems:
+
+[CMake variable]:
+
+-D LAMMPS_LONGLONG_TO_LONG=value     # yes or no (default) :pre
+
+[Makefile.machine setting]:
+
+LMP_INC = -DLAMMPS_LONGLONG_TO_LONG :pre
+
+:line
+
+Exception handling when using LAMMPS as a library :h3,link(exceptions)
+
+This setting is useful when external codes drive LAMMPS as a library.
+With this option enabled LAMMPS errors do not kill the caller.
+Instead, the call stack is unwound and control returns to the caller,
+e.g. to Python.
+
+[CMake variable]:
+
+-D LAMMPS_EXCEPTIONS=value        # yes or no (default) :pre
+
+[Makefile.machine setting]:
+
+LMP_INC = -DLAMMPS_EXCEPTIONS :pre
diff --git a/doc/src/Install.txt b/doc/src/Install.txt
new file mode 100644
index 0000000000..d59c23d319
--- /dev/null
+++ b/doc/src/Install.txt
@@ -0,0 +1,64 @@
+"Previous Section"_Intro.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Build.html
+:c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Install LAMMPS :h2
+
+You can download LAMMPS as an executable or as source code.
+
+With source code, you also have to "build LAMMPS"_Build.html.  But you
+have more flexibility as to what features to include or exclude in the
+build.  If you plan to "modify or extend LAMMPS"_Modify.html, then you
+need the source code.
+
+<!-- RST
+
+.. toctree::
+
+   Install_linux
+   Install_mac
+   Install_windows
+
+   Install_tarball
+   Install_git
+   Install_svn
+   Install_patch
+
+END_RST -->
+
+<!-- HTML_ONLY -->
+
+"Download an executable for Linux"_Install_linux.html
+"Download an executable for Mac"_Install_mac.html
+"Download an executable for Windows"_Install_windows.html :all(b)
+
+"Download source as a tarball"_Install_tarball.html
+"Donwload source via Git"_Install_git.html
+"Donwload source via SVN"_Install_svn.html
+"Install patch files"_Install_patch.html :all(b)
+
+<!-- END_HTML_ONLY -->
+
+These are the files and sub-directories in the LAMMPS distribution:
+
+README: text file
+LICENSE: GNU General Public License (GPL)
+bench: benchmark problems
+cmake: CMake build files
+doc: documentation
+examples: simple test problems
+lib: additional provided or external libraries
+potentials: interatomic potential files
+python: Python wrapper on LAMMPS
+src: source files
+tools: pre- and post-processing tools :tb(s=:,a=l)
+
+You will have all of these if you download source.  You will only have
+some of them if you download executables, as explained on the pages
+listed above.
diff --git a/doc/src/Install_git.txt b/doc/src/Install_git.txt
new file mode 100644
index 0000000000..1d043c30d2
--- /dev/null
+++ b/doc/src/Install_git.txt
@@ -0,0 +1,120 @@
+"Higher level section"_Install.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Download source via Git :h3
+
+All LAMMPS development is coordinated through the "LAMMPS GitHub
+site".  If you clone the LAMMPS repository onto your local machine, it
+has several advantages:
+
+You can stay current with changes to LAMMPS with a single git
+command. :ulb,l
+
+You can create your own development branches to add code to LAMMPS. :l
+
+You can submit your new features back to GitHub for inclusion in
+LAMMPS. :l,ule
+
+You must have "Git"_git installed on your system to communicate with
+the public Git server for LAMMPS.
+
+IMPORTANT NOTE: As of Oct 2016, the official home of public LAMMPS
+development is on GitHub.  The previously advertised LAMMPS git
+repositories on git.lammps.org and bitbucket.org are now deprecated,
+may not be up-to-date, and may go away at any time.
+
+:link(git,http://git-scm.com)
+
+You can follow LAMMPS development on 3 different Git branches:
+
+[stable]   :  this branch is updated with every stable release
+[unstable] :  this branch is updated with every patch release
+[master]   :  this branch continuously follows ongoing development :ul
+
+To access the Git repositories on your box, use the clone command to
+create a local copy of the LAMMPS repository with a command like:
+
+git clone -b unstable https://github.com/lammps/lammps.git mylammps :pre
+
+where "mylammps" is the name of the directory you wish to create on
+your machine and "unstable" is one of the 3 branches listed above.
+(Note that you actually download all 3 branches; you can switch
+between them at any time using "git checkout <branchname>".)
+
+Once the command completes, your directory will contain the same files
+as if you unpacked a current LAMMPS tarball, with two exceptions:
+
+1) No LAMMPS packages are initially installed in the src dir (a few
+packages are installed by default in the tarball src dir).  You can
+install whichever packages you wish before building LAMMPS; type "make
+package" from the src dir to see the options, and the
+"Packages"_Packages.html doc page for a discussion of packages.
+
+2) The HTML documentation files are not included.  They can be fetched
+from the LAMMPS website by typing "make fetch" in the doc directory.
+Or they can be generated from the content provided in doc/src by
+typing "make html" from the the doc directory.
+
+After initial cloning, as bug fixes and new features are added to
+LAMMPS, as listed on "this page"_bug.html, you can stay up-to-date by
+typing the following Git commands from within the "mylammps"
+directory:
+
+git checkout unstable      # not needed if you always stay in this branch
+git checkout stable        # use one of the 3 checkout commands
+git checkout master
+git pull :pre
+
+Doing a "pull" will not change any files you have added to the LAMMPS
+directory structure.  It will also not change any existing LAMMPS
+files you have edited, unless those files have changed in the
+repository.  In that case, Git will attempt to merge the new
+repository file with your version of the file and tell you if there
+are any conflicts.  See the Git documentation for details.
+
+If you want to access a particular previous release version of LAMMPS,
+you can instead "checkout" any version with a published tag. See the
+output of "git tag -l" for the list of tags.  The Git command to do
+this is as follows.
+
+git checkout tagID :pre
+
+Stable versions and what tagID to use for a particular stable version
+are discussed on "this page"_bug.html.  Note that this command will
+print some warnings, because in order to get back to the latest
+revision and to be able to update with "git pull" again, you first
+will need to first type "git checkout unstable" (or check out any
+other desired branch).
+
+Once you have updated your local files with a "git pull" (or "git
+checkout"), you still need to re-build LAMMPS if any source files have
+changed.  To do this, you should cd to the src directory and type:
+
+make purge             # remove any deprecated src files
+make package-update    # sync package files with src files
+make foo               # re-build for your machine (mpi, serial, etc) :pre
+
+just as described on the "Install patch"_Install_patch.html doc page,
+after a patch has been installed.
+
+IMPORTANT NOTE: If you wish to edit/change a src file that is from a
+package, you should edit the version of the file inside the package
+sub-directory with src, then re-install the package.  The version in
+the src dir is merely a copy and will be wiped out if you type "make
+package-update".
+
+IMPORTANT NOTE: The GitHub servers support both the "git://" and
+"https://" access protocols for anonymous read-only access.  If you
+have a correspondingly configured GitHub account, you may also use SSH
+with "git@github.com:/lammps/lammps.git".
+
+The LAMMPS GitHub project is managed by Christoph Junghans (LANL,
+junghans at lanl.gov), Axel Kohlmeyer (Temple U, akohlmey at
+gmail.com) and Richard Berger (Temple U, richard.berger at
+temple.edu).
diff --git a/doc/src/Install_linux.txt b/doc/src/Install_linux.txt
new file mode 100644
index 0000000000..10da3d933f
--- /dev/null
+++ b/doc/src/Install_linux.txt
@@ -0,0 +1,120 @@
+"Higher level section"_Install.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Download an executable for Linux :h3
+
+Binaries are available for many different versions of Linux:
+
+"Pre-built binary RPMs for Fedora/RedHat/CentOS/openSUSE"_#rpm
+"Pre-built Ubuntu Linux executables"_#unbuntu
+"Pre-built Gentoo Linux executable"_#gentoo :all(b)
+
+:line
+:line
+
+Pre-built binary RPMs for Fedora/RedHat/CentOS/openSUSE :h4,link(rpm)
+
+Pre-built LAMMPS executables for various Linux distributions
+can be downloaded as binary RPM files from this site:
+
+"http://rpm.lammps.org"_http://rpm.lammps.org
+
+There are multiple package variants supporting serial, parallel and
+Python wrapper versions.  The LAMMPS binaries contain all optional
+packages included in the source distribution except: GPU, KIM, REAX,
+and USER-INTEL.
+
+Installation instructions for the various versions are here:
+
+"http://rpm.lammps.org/install.html"_http://rpm.lammps.org/install.html
+
+The instructions show how to enable the repository in the respective
+system's package management system.  Installing and updating are then
+straightforward and automatic.  
+
+Thanks to Axel Kohlmeyer (Temple U, akohlmey at gmail.com) for setting
+up this RPM capability.
+
+:line
+
+Pre-built Ubuntu Linux executables :h4,link(ubuntu)
+
+A pre-built LAMMPS executable suitable for running on the latest
+Ubuntu Linux versions, can be downloaded as a Debian package.  This
+allows you to install LAMMPS with a single command, and stay
+up-to-date with the current version of LAMMPS by simply updating your
+operating system.
+
+To install the appropriate personal-package archive (PPA), do the
+following once:
+
+sudo add-apt-repository ppa:gladky-anton/lammps
+sudo apt-get update :pre
+
+To install LAMMPS do the following once:
+
+sudo apt-get install lammps-daily :pre
+
+This downloads an executable named "lammps-daily" to your box, which
+can then be used in the usual way to run input scripts:
+
+lammps-daily < in.lj :pre
+
+To update LAMMPS to the most current version, do the following:
+
+sudo apt-get update :pre
+
+which will also update other packages on your system.
+
+To get a copy of the current documentation and examples:
+
+sudo apt-get install lammps-daily-doc :pre
+
+which will download the doc files in
+/usr/share/doc/lammps-daily-doc/doc and example problems in
+/usr/share/doc/lammps-doc/examples.
+
+Note that you may still wish to download the tarball to get potential
+files and auxiliary tools.
+
+To un-install LAMMPS, do the following:
+
+sudo apt-get remove lammps-daily :pre
+
+Note that the lammps-daily executable is built with the following
+sequence of make commands, as if you had done the same with the
+unpacked tarball files in the src directory:
+
+make yes-all; make no-lib; make openmpi
+
+Thus it builds with FFTW3 and OpenMPI.
+
+Thanks to Anton Gladky (gladky.anton at gmail.com) for setting up this
+Ubuntu package capability.
+
+:line
+
+Pre-built Gentoo Linux executable :h4,link(gentoo)
+
+LAMMPS is part of Gentoo's main package tree and can be installed by
+typing:
+
+% emerge --ask lammps :pre
+
+Note that in Gentoo the LAMMPS source is downloaded and the package is
+built on the your machine.
+
+Certain LAMMPS packages can be enable via USE flags, type
+
+% equery uses lammps :pre
+
+for details.
+
+Thanks to Nicolas Bock and Christoph Junghans (LANL) for setting up
+this Gentoo capability.
diff --git a/doc/src/Install_mac.txt b/doc/src/Install_mac.txt
new file mode 100644
index 0000000000..3fcc55b8ab
--- /dev/null
+++ b/doc/src/Install_mac.txt
@@ -0,0 +1,55 @@
+"Higher level section"_Install.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Download an executable for Mac :h3
+
+LAMMPS can be downloaded, built, and configured for OS X on a Mac with
+"Homebrew"_homebrew.  Only four of the LAMMPS packages are unavailable
+at this time because of additional needs not yet met: KIM, GPU,
+USER-INTEL, USER-ATC.
+
+After installing Homebrew, you can install LAMMPS on your system with
+the following commands:
+
+% brew tap homebrew/science
+% brew install lammps              # serial version
+% brew install lammps --with-mpi   # mpi support :pre
+
+This will install the executable "lammps", a python module named
+"lammps", and additional resources with all the standard packages.  To
+get the location of the additional resources type this:
+
+% brew info lammps :pre
+
+This command also tells you additional installation options available.
+The user-packages are available as options, just install them like
+this example for the USER-OMP package:
+
+% brew install lammps --enable-user-omp :pre
+
+It is usually best to install LAMMPS with the most up to date source
+files, which can be done with the "--HEAD" option:
+
+% brew install lammps --HEAD :pre
+
+To re-install the LAMMPS HEAD, run this command occasionally (make sure
+to use the desired options).
+
+% brew install --force lammps --HEAD $\{options\} :pre
+
+Once LAMMPS is installed, you can test the installation with the
+Lennard-Jones benchmark file:
+
+% brew test lammps -v :pre
+
+If you have problems with the installation you can post issues to
+"this link"_https://github.com/Homebrew/homebrew-science/issues.
+
+Thanks to Derek Thomas (derekt at cello.t.u-tokyo.ac.jp) for setting
+up the Homebrew capability.
diff --git a/doc/src/Install_patch.txt b/doc/src/Install_patch.txt
new file mode 100644
index 0000000000..3d0b27370e
--- /dev/null
+++ b/doc/src/Install_patch.txt
@@ -0,0 +1,67 @@
+"Higher level section"_Install.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Applying patches :h3
+
+It is easy to stay current with the most recent LAMMPS patch releases
+if you use Git or SVN to track LAMMPS development.  Instructions for
+how to stay current are on the "Install git"_Install_git.html and
+"Install svn"_Install_svn.html doc pages.
+
+If you prefer to download a tarball, as described on the "Install
+git"_Install_tarball.html doc page, you can stay current by
+downloading "patch files" when new patch releases are made.  A link to
+a patch file is posted on the "bug and feature page"_bug of the
+website, along with a list of changed files and details about what is
+in the new patch release.  This page explains how to apply the patch
+file to your local LAMMPS directory.
+
+NOTE: You should not apply patch files to a local Git or SVN repo of
+LAMMPS, only to an unpacked tarball.  Use Git and SVN commands to
+update repo versions of LAMMPS.
+
+Here are the steps to apply a patch file.  Note that if your version
+of LAMMPS is several patch releases behind, you need to apply all the
+intervening patch files in succession to bring your version of LAMMPS
+up to date.
+
+Download the patch file.  You may have to shift-click in your browser
+to download the file instead of display it.  Patch files have names
+like patch.12Dec16. :ulb,l
+
+Put the patch file in your top-level LAMMPS directory, where the
+LICENSE and README files are. :l
+
+Apply the patch by typing the following command from your top-level
+LAMMPS directory, where the redirected file is the name of the patch
+file. :l
+
+patch -bp1 < patch.12Dec16 :pre
+
+A list of updated files print out to the screen.  The -b switch
+creates backup files of your originals (e.g. src/force.cpp.orig), so
+you can manually undo the patch if something goes wrong. :l
+
+Type the following from the src directory, to enforce consistency
+between the src and package directories.  This is OK to do even if you
+don't use one or more packages.  If you are applying several patches
+successively, you only need to type this once at the end. The purge
+command removes deprecated src files if any were removed by the patch
+from package sub-directories. :l
+
+make purge
+make package-update :pre
+
+Re-build LAMMPS via the "make" command. :l,ule
+
+IMPORTANT NOTE: If you wish to edit/change a src file that is from a
+package, you should edit the version of the file inside the package
+sub-dir of src, then re-install the package.  The version in the src
+dir is merely a copy and will be wiped out if you type "make
+package-update".
diff --git a/doc/src/Install_svn.txt b/doc/src/Install_svn.txt
new file mode 100644
index 0000000000..64fd1077cb
--- /dev/null
+++ b/doc/src/Install_svn.txt
@@ -0,0 +1,95 @@
+"Higher level section"_Install.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Download source via SVN :h3
+
+IMPORTANT NOTE: As of Oct 2016, SVN support is now implemented via a
+git-to-subversion interface service on GitHub and no longer through a
+mirror of the internal SVN repository at Sandia.
+
+You must have the "Subversion (SVN) client software"_svn installed on
+your system to communicate with the Git server in this mode.
+
+:link(svn,http://subversion.apache.org)
+
+You can follow LAMMPS development on 3 different SVN branches:
+
+[stable]   :  this branch is updated with every stable release
+[unstable] :  this branch is updated with every patch release
+[master]   :  this branch continuously follows ongoing development :ul
+
+The corresponding command lines to do an initial checkout are as
+follows.  (Note that unlike Git, you must perform a separate checkout
+into a unique directory for each of the 3 branches.)
+
+svn checkout https://github.com/lammps/lammps.git/branches/unstable mylammps
+svn checkout https://github.com/lammps/lammps.git/branches/stable mylammps
+svn checkout https://github.com/lammps/lammps.git/trunk mylammps :pre
+
+where "mylammps" is the name of the directory you wish to create on
+your machine.
+
+Once the command completes, your directory will contain the same files
+as if you unpacked a current LAMMPS tarball, with two exceptions:
+
+1) No LAMMPS packages are initially installed in the src dir (a few
+packages are installed by default in the tarball src dir).  You can
+install whichever packages you wish before building LAMMPS; type "make
+package" from the src dir to see the options, and the
+"Packages"_Packages.html doc page for a discussion of packages.
+
+2) The HTML documentation files are not included.  They can be fetched
+from the LAMMPS website by typing "make fetch" in the doc directory.
+Or they can be generated from the content provided in doc/src by
+typing "make html" from the the doc directory.
+
+After initial checkout, as bug fixes and new features are added to
+LAMMPS, as listed on "this page"_bug.html, you can stay up-to-date by
+typing the following SVN commands from within the "mylammps"
+directory:
+
+svn update :pre
+
+You can also check if there are any updates by typing:
+
+svn -qu status :pre
+
+Doing an "update" will not change any files you have added to the
+LAMMPS directory structure.  It will also not change any existing
+LAMMPS files you have edited, unless those files have changed in the
+repository.  In that case, SVN will attempt to merge the new
+repository file with your version of the file and tell you if there
+are any conflicts.  See the SVN documentation for details.
+
+Please refer to the "subversion client support help pages on
+GitHub"_https://help.github.com/articles/support-for-subversion-clients
+if you want to use advanced features like accessing particular
+previous release versions via tags.
+
+Once you have updated your local files with an "svn update" (or "svn
+co"), you still need to re-build LAMMPS if any source files have
+changed.  To do this, you should cd to the src directory and type:
+
+make purge             # remove any deprecated src files
+make package-update    # sync package files with src files
+make foo               # re-build for your machine (mpi, serial, etc) :pre
+
+just as described on the "Install patch"_Install_patch.html doc page,
+after a patch has been installed.
+
+IMPORTANT NOTE: If you wish to edit/change a src file that is from a
+package, you should edit the version of the file inside the package
+sub-directory with src, then re-install the package.  The version in
+the src dir is merely a copy and will be wiped out if you type "make
+package-update".
+
+The LAMMPS GitHub project is managed by Christoph Junghans (LANL,
+junghans at lanl.gov), Axel Kohlmeyer (Temple U, akohlmey at
+gmail.com) and Richard Berger (Temple U, richard.berger at
+temple.edu).
diff --git a/doc/src/Install_tarball.txt b/doc/src/Install_tarball.txt
new file mode 100644
index 0000000000..b672c5ff25
--- /dev/null
+++ b/doc/src/Install_tarball.txt
@@ -0,0 +1,64 @@
+"Higher level section"_Install.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Download source as a tarball :h3
+
+You can download a current LAMMPS tarball from the "download page"_download
+of the "LAMMPS website"_lws.
+
+:link(download,http://lammps.sandia.gov/download.html)
+:link(bug,http://lammps.sandia.gov/bug.html)
+:link(older,http://lammps.sandia.gov/tars)
+
+You have two choices of tarballs, either the most recent stable
+release or the most current patch release.  Stable releases occur a
+few times per year, and undergo more testing before release.  Patch
+releases occur a couple times per month.  The new contents in all
+releases are listed on the "bug and feature page"_bug of the website.
+
+Older versions of LAMMPS can also be downloaded from "this
+page"_older.
+
+Once you have a tarball, unzip and untar it with the following
+command:
+
+tar -xzvf lammps*.tar.gz :pre
+
+This will create a LAMMPS directory with the version date
+in its name, e.g. lammps-23Jun18.
+
+:line
+
+You can also download a zip file via the "Clone or download" button on
+the "LAMMPS GitHub site"_git.  The file name will be lammps-master.zip
+which can be unzipped with the following command, to create
+a lammps-master dir:
+
+unzip lammps*.zip :pre
+
+This version is the most up-to-date LAMMPS development version.  It
+will have the date of the most recent patch release (see the file
+src/version.h).  But it will also include any new bug-fixes or
+features added since the last patch release.  They will be included in
+the next patch release tarball.
+
+:link(git,https://github.com/lammps/lammps)
+
+:line
+
+If you download a current LAMMPS tarball, one way to stay current as
+new patch tarballs are released, is to download a patch file which you
+can apply to your local directory to update it for each new patch
+release.  (Or of course you could just download the newest tarball
+periodically.)
+
+The patch files are posted on the "bug and feature page"_bug of the
+website, along with a list of changed files and details about what is
+in the new patch release.  Instructions for applying a patch file are
+on the "Install patch"_Install_patch.html doc page.
diff --git a/doc/src/Install_windows.txt b/doc/src/Install_windows.txt
new file mode 100644
index 0000000000..df87754c5f
--- /dev/null
+++ b/doc/src/Install_windows.txt
@@ -0,0 +1,52 @@
+"Higher level section"_Install.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Download an executable for Windows :h3
+
+Pre-compiled Windows installers which install LAMMPS executables on a
+Windows system can be downloaded from this site:
+
+"http://rpm.lammps.org/windows.html"_http://rpm.lammps.org/windows.html
+
+Note that each installer package has a date in its name, which
+corresponds to the LAMMPS version of the same date.  Installers for
+current and older versions of LAMMPS are available.  32-bit and 64-bit
+installers are available, and each installer contains both a serial
+and parallel executable.  The installer site also explains how to
+install the Windows MPI package (MPICH2 from Argonne National Labs),
+needed to run in parallel.
+
+The LAMMPS binaries contain all optional packages included in the
+source distribution except: KIM, REAX, KOKKOS, USER-INTEL,
+and USER-QMMM.  The serial version also does not include the MPIIO and
+USER-LB packages.  GPU support is provided for OpenCL.
+
+The installer site also has instructions on how to run LAMMPS under
+Windows, once it is installed, in both serial and parallel.
+
+When you download the installer package, you run it on your Windows
+machine.  It will then prompt you with a dialog, where you can choose
+the installation directory, unpack and copy several executables,
+potential files, documentation pdfs, selected example files, etc.  It
+will then update a few system settings (e.g. PATH, LAMMPS_POTENTIALS)
+and add an entry into the Start Menu (with references to the
+documentation, LAMMPS homepage and more).  From that menu, there is
+also a link to an uninstaller that removes the files and undoes the
+environment manipulations.
+
+Note that to update to a newer version of LAMMPS, you should typically
+uninstall the version you currently have, download a new installer,
+and go thru the install procedure described above.  I.e. the same
+procedure for installing/updating most Windows programs.  You can
+install multiple versions of LAMMPS (in different directories), but
+only the executable for the last-installed package will be found
+automatically, so this should only be done for debugging purposes.
+
+Thanks to Axel Kohlmeyer (Temple U, akohlmey at gmail.com) for setting
+up this Windows capability.
diff --git a/doc/src/Run.txt b/doc/src/Run.txt
new file mode 100644
index 0000000000..68c3f1e295
--- /dev/null
+++ b/doc/src/Run.txt
@@ -0,0 +1,37 @@
+"Previous Section"_Build.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Commands.html :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Run LAMMPS :h2
+
+These pages explain how to run LAMMPS once you have "installed an
+executable"_Install.html or "downloaded the source code"_Install.html
+and "built an executable"_Build.html.  The "Commands"_Commands.html
+doc page describes how input scripts are structured and the commands
+they can contain.
+
+<!-- RST
+
+.. toctree::
+
+   Run_basics
+   Run_options
+   Run_output
+   Run_windows
+
+END_RST -->
+
+<!-- HTML_ONLY -->
+
+"Basics of running LAMMPS"_Run_basics.html
+"Command-line options"_Run_options.html
+"Screen and logfile output"_Run_output.html
+"Running LAMMPS on Windows"_Run_windows.html :all(b)
+
+<!-- END_HTML_ONLY -->
diff --git a/doc/src/Run_basics.txt b/doc/src/Run_basics.txt
new file mode 100644
index 0000000000..1d4b570f21
--- /dev/null
+++ b/doc/src/Run_basics.txt
@@ -0,0 +1,87 @@
+"Higher level section"_Run.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Basics of running LAMMPS :h3
+
+LAMMPS is run from the command line, reading commands from standard
+input, which are typically listed in an input script:
+
+lmp_serial < in.file
+lmp_serial -in in.file
+~/lammps/src/lmp_serial < in.file
+mpirun -np 4 lmp_mpi -in in.file
+mpirun -np 8 ~/lammps/src/lmp_mpi -in in.file
+mpirun -np 6 /usr/local/bin/lmp_mpi -in in.file :pre
+
+You normally run from the directory your input script is in.  That is
+also where output files are produced, unless you specify otherwise in
+your input script.  As in some of the examples above, the LAMMPS
+executable can be elsewhere.
+
+NOTE: The redirection operator "<" can often be used with mpirun, but
+some systems require the -in form.
+
+As LAMMPS runs it prints info to the screen and a logfile named
+log.lammps.  More info about output is given on the "Run
+output"_Run_output.html doc page.
+
+If LAMMPS encounters errors in the input script or while running a
+simulation it will print an ERROR message and stop or a WARNING
+message and continue.  See the "Errors"_Errors.html doc page for a
+discussion of the various kinds of errors LAMMPS can or can't detect,
+a list of all ERROR and WARNING messages, and what to do about them.
+
+:line
+
+LAMMPS can run the same problem on any number of processors, including
+a single processor.  In theory you should get identical answers on any
+number of processors and on any machine.  In practice, numerical
+round-off can cause slight differences and eventual divergence of
+molecular dynamics phase space trajectories.  See the "Errors
+common"_Errors_common.html doc page for discussion of this.
+
+LAMMPS can run as large a problem as will fit in the physical memory
+of one or more processors.  If you run out of memory, you must run on
+more processors or define a smaller problem.
+
+If you run LAMMPS in parallel via mpirun, you should be aware of the
+"processors"_processors.html command which controls how MPI tasks are
+mapped to the simulation box, as well as mpirun options that control
+how MPI tasks are assigned to physical cores of the node(s) of the
+machine you are running on.  These settings can improve performance,
+though the defaults are often adequate.
+
+For example, it is often important to bind MPI tasks (processes) to
+physical cores (processor affinity), so that the operating system does
+not migrate them during a simulation.  If this is not the default
+behavior on your machine, the mpirun option "--bind-to core" (OpenMPI)
+or "-bind-to core" (MPICH) can be used.
+
+If the LAMMPS command(s) you are using support multi-threading, you
+can set the number of threads per MPI task via the environment
+variable OMP_NUM_THREADS, before you launch LAMMPS:
+
+export OMP_NUM_THREADS=2     # bash
+setenv OMP_NUM_THREADS 2     # csh or tcsh :pre
+
+This can also be done via the "package"_package.html command or via
+the "-pk command-line switch"_Run_options.html which invokes the
+package command.  See the "package"_package.html command or
+"Speed"_Speed.html doc pages for more details about which accerlarator
+packages and which commands support multi-threading.
+
+:line
+
+You can experiment with running LAMMPS using any of the input scripts
+provided in the examples or bench directory.  Input scripts are named
+in.* and sample outputs are named log.*.P where P is the number of
+processors it was run on.
+
+Some of the examples or benchmarks require LAMMPS to be built with
+optional packages.
diff --git a/doc/src/Run_options.txt b/doc/src/Run_options.txt
new file mode 100644
index 0000000000..b1c1e376da
--- /dev/null
+++ b/doc/src/Run_options.txt
@@ -0,0 +1,470 @@
+"Higher level section"_Run.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Command-line options :h3
+
+At run time, LAMMPS recognizes several optional command-line switches
+which may be used in any order.  Either the full word or a one-or-two
+letter abbreviation can be used:
+
+"-e or -echo"_#echo
+"-h or -help"_#help
+"-i or -in"_#in
+"-k or -kokkos"_#kokkos
+"-l or -log"_#log
+"-nc or -nocite"_#nocite
+"-pk or -package"_#package
+"-p or -partition"_#partition
+"-pl or -plog"_#plot
+"-ps or -pscreen"_#pscreen
+"-r or -restart"_#restart
+"-ro or -reorder"_#reorder
+"-sc or -screen"_#screen
+"-sf or -suffix"_#suffix
+"-v or -var"_#var :ul
+
+For example, the lmp_mpi executable might be launched as follows:
+
+mpirun -np 16 lmp_mpi -v f tmp.out -l my.log -sc none -i in.alloy
+mpirun -np 16 lmp_mpi -var f tmp.out -log my.log -screen none -in in.alloy :pre
+
+:line
+:line
+
+[-echo style] :link(echo)
+
+Set the style of command echoing.  The style can be {none} or {screen}
+or {log} or {both}.  Depending on the style, each command read from
+the input script will be echoed to the screen and/or logfile.  This
+can be useful to figure out which line of your script is causing an
+input error.  The default value is {log}.  The echo style can also be
+set by using the "echo"_echo.html command in the input script itself.
+
+:line
+
+[-help] :link(help)
+
+Print a brief help summary and a list of options compiled into this
+executable for each LAMMPS style (atom_style, fix, compute,
+pair_style, bond_style, etc).  This can tell you if the command you
+want to use was included via the appropriate package at compile time.
+LAMMPS will print the info and immediately exit if this switch is
+used.
+
+:line
+
+[-in file] :link(file)
+
+Specify a file to use as an input script.  This is an optional switch
+when running LAMMPS in one-partition mode.  If it is not specified,
+LAMMPS reads its script from standard input, typically from a script
+via I/O redirection; e.g. lmp_linux < in.run.  I/O redirection should
+also work in parallel, but if it does not (in the unlikely case that
+an MPI implementation does not support it), then use the -in flag.
+Note that this is a required switch when running LAMMPS in
+multi-partition mode, since multiple processors cannot all read from
+stdin.
+
+:line
+
+[-kokkos on/off keyword/value ...] :link(kokkos)
+
+Explicitly enable or disable KOKKOS support, as provided by the KOKKOS
+package.  Even if LAMMPS is built with this package, as described
+above in "Section 2.3"_#start_3, this switch must be set to enable
+running with the KOKKOS-enabled styles the package provides.  If the
+switch is not set (the default), LAMMPS will operate as if the KOKKOS
+package were not installed; i.e. you can run standard LAMMPS or with
+the GPU or USER-OMP packages, for testing or benchmarking purposes.
+
+Additional optional keyword/value pairs can be specified which
+determine how Kokkos will use the underlying hardware on your
+platform.  These settings apply to each MPI task you launch via the
+"mpirun" or "mpiexec" command.  You may choose to run one or more MPI
+tasks per physical node.  Note that if you are running on a desktop
+machine, you typically have one physical node.  On a cluster or
+supercomputer there may be dozens or 1000s of physical nodes.
+
+Either the full word or an abbreviation can be used for the keywords.
+Note that the keywords do not use a leading minus sign.  I.e. the
+keyword is "t", not "-t".  Also note that each of the keywords has a
+default setting.  Examples of when to use these options and what
+settings to use on different platforms is given on the "Speed
+kokkos"_Speed_kokkos.html doc page.
+
+d or device
+g or gpus
+t or threads
+n or numa :ul
+
+device Nd :pre
+
+This option is only relevant if you built LAMMPS with CUDA=yes, you
+have more than one GPU per node, and if you are running with only one
+MPI task per node.  The Nd setting is the ID of the GPU on the node to
+run on.  By default Nd = 0.  If you have multiple GPUs per node, they
+have consecutive IDs numbered as 0,1,2,etc.  This setting allows you
+to launch multiple independent jobs on the node, each with a single
+MPI task per node, and assign each job to run on a different GPU.
+
+gpus Ng Ns :pre
+
+This option is only relevant if you built LAMMPS with CUDA=yes, you
+have more than one GPU per node, and you are running with multiple MPI
+tasks per node (up to one per GPU).  The Ng setting is how many GPUs
+you will use.  The Ns setting is optional.  If set, it is the ID of a
+GPU to skip when assigning MPI tasks to GPUs.  This may be useful if
+your desktop system reserves one GPU to drive the screen and the rest
+are intended for computational work like running LAMMPS.  By default
+Ng = 1 and Ns is not set.
+
+Depending on which flavor of MPI you are running, LAMMPS will look for
+one of these 3 environment variables
+
+SLURM_LOCALID (various MPI variants compiled with SLURM support)
+MV2_COMM_WORLD_LOCAL_RANK (Mvapich)
+OMPI_COMM_WORLD_LOCAL_RANK (OpenMPI) :pre
+
+which are initialized by the "srun", "mpirun" or "mpiexec" commands.
+The environment variable setting for each MPI rank is used to assign a
+unique GPU ID to the MPI task.
+
+threads Nt :pre
+
+This option assigns Nt number of threads to each MPI task for
+performing work when Kokkos is executing in OpenMP or pthreads mode.
+The default is Nt = 1, which essentially runs in MPI-only mode.  If
+there are Np MPI tasks per physical node, you generally want Np*Nt =
+the number of physical cores per node, to use your available hardware
+optimally.  This also sets the number of threads used by the host when
+LAMMPS is compiled with CUDA=yes.
+
+numa Nm :pre
+
+This option is only relevant when using pthreads with hwloc support.
+In this case Nm defines the number of NUMA regions (typically sockets)
+on a node which will be utilized by a single MPI rank.  By default Nm
+= 1.  If this option is used the total number of worker-threads per
+MPI rank is threads*numa.  Currently it is always almost better to
+assign at least one MPI rank per NUMA region, and leave numa set to
+its default value of 1. This is because letting a single process span
+multiple NUMA regions induces a significant amount of cross NUMA data
+traffic which is slow.
+
+:line
+
+[-log file] :link(log)
+
+Specify a log file for LAMMPS to write status information to.  In
+one-partition mode, if the switch is not used, LAMMPS writes to the
+file log.lammps.  If this switch is used, LAMMPS writes to the
+specified file.  In multi-partition mode, if the switch is not used, a
+log.lammps file is created with hi-level status information.  Each
+partition also writes to a log.lammps.N file where N is the partition
+ID.  If the switch is specified in multi-partition mode, the hi-level
+logfile is named "file" and each partition also logs information to a
+file.N.  For both one-partition and multi-partition mode, if the
+specified file is "none", then no log files are created.  Using a
+"log"_log.html command in the input script will override this setting.
+Option -plog will override the name of the partition log files file.N.
+
+:line
+
+[-nocite] :link(nocite)
+
+Disable writing the log.cite file which is normally written to list
+references for specific cite-able features used during a LAMMPS run.
+See the "citation page"_http://lammps.sandia.gov/cite.html for more
+details.
+
+:line
+
+[-package style args ....] :link(package)
+
+Invoke the "package"_package.html command with style and args.  The
+syntax is the same as if the command appeared at the top of the input
+script.  For example "-package gpu 2" or "-pk gpu 2" is the same as
+"package gpu 2"_package.html in the input script.  The possible styles
+and args are documented on the "package"_package.html doc page.  This
+switch can be used multiple times, e.g. to set options for the
+USER-INTEL and USER-OMP packages which can be used together.
+
+Along with the "-suffix" command-line switch, this is a convenient
+mechanism for invoking accelerator packages and their options without
+having to edit an input script.
+
+:line
+
+[-partition 8x2 4 5 ...] :link(partition)
+
+Invoke LAMMPS in multi-partition mode.  When LAMMPS is run on P
+processors and this switch is not used, LAMMPS runs in one partition,
+i.e. all P processors run a single simulation.  If this switch is
+used, the P processors are split into separate partitions and each
+partition runs its own simulation.  The arguments to the switch
+specify the number of processors in each partition.  Arguments of the
+form MxN mean M partitions, each with N processors.  Arguments of the
+form N mean a single partition with N processors.  The sum of
+processors in all partitions must equal P.  Thus the command
+"-partition 8x2 4 5" has 10 partitions and runs on a total of 25
+processors.
+
+Running with multiple partitions can be useful for running
+"multi-replica simulations"_Howto_replica.html, where each replica
+runs on on one or a few processors.  Note that with MPI installed on a
+machine (e.g. your desktop), you can run on more (virtual) processors
+than you have physical processors.
+
+To run multiple independent simulations from one input script, using
+multiple partitions, see the "Howto multiple"_Howto_multiple.html doc
+page.  World- and universe-style "variables"_variable.html are useful
+in this context.
+
+:line
+
+[-plog file] :link(plog)
+
+Specify the base name for the partition log files, so partition N
+writes log information to file.N. If file is none, then no partition
+log files are created.  This overrides the filename specified in the
+-log command-line option.  This option is useful when working with
+large numbers of partitions, allowing the partition log files to be
+suppressed (-plog none) or placed in a sub-directory (-plog
+replica_files/log.lammps) If this option is not used the log file for
+partition N is log.lammps.N or whatever is specified by the -log
+command-line option.
+
+:line
+
+[-pscreen file] :link(pscreen)
+
+Specify the base name for the partition screen file, so partition N
+writes screen information to file.N. If file is none, then no
+partition screen files are created.  This overrides the filename
+specified in the -screen command-line option.  This option is useful
+when working with large numbers of partitions, allowing the partition
+screen files to be suppressed (-pscreen none) or placed in a
+sub-directory (-pscreen replica_files/screen).  If this option is not
+used the screen file for partition N is screen.N or whatever is
+specified by the -screen command-line option.
+
+:line
+
+[-restart restartfile {remap} datafile keyword value ...] :link(restart)
+
+Convert the restart file into a data file and immediately exit.  This
+is the same operation as if the following 2-line input script were
+run:
+
+read_restart restartfile {remap}
+write_data datafile keyword value ... :pre
+
+Note that the specified restartfile and datafile can have wild-card
+characters ("*",%") as described by the
+"read_restart"_read_restart.html and "write_data"_write_data.html
+commands.  But a filename such as file.* will need to be enclosed in
+quotes to avoid shell expansion of the "*" character.
+
+Note that following restartfile, the optional flag {remap} can be
+used.  This has the same effect as adding it to the
+"read_restart"_read_restart.html command, as explained on its doc
+page.  This is only useful if the reading of the restart file triggers
+an error that atoms have been lost.  In that case, use of the remap
+flag should allow the data file to still be produced.
+
+Also note that following datafile, the same optional keyword/value
+pairs can be listed as used by the "write_data"_write_data.html
+command.
+
+:line
+
+[-reorder] :link(reorder)
+
+This option has 2 forms:
+
+-reorder nth N
+-reorder custom filename :pre
+
+Reorder the processors in the MPI communicator used to instantiate
+LAMMPS, in one of several ways.  The original MPI communicator ranks
+all P processors from 0 to P-1.  The mapping of these ranks to
+physical processors is done by MPI before LAMMPS begins.  It may be
+useful in some cases to alter the rank order.  E.g. to insure that
+cores within each node are ranked in a desired order.  Or when using
+the "run_style verlet/split"_run_style.html command with 2 partitions
+to insure that a specific Kspace processor (in the 2nd partition) is
+matched up with a specific set of processors in the 1st partition.
+See the "Speed tips"_Speed_tips.html doc page for more details.
+
+If the keyword {nth} is used with a setting {N}, then it means every
+Nth processor will be moved to the end of the ranking.  This is useful
+when using the "run_style verlet/split"_run_style.html command with 2
+partitions via the -partition command-line switch.  The first set of
+processors will be in the first partition, the 2nd set in the 2nd
+partition.  The -reorder command-line switch can alter this so that
+the 1st N procs in the 1st partition and one proc in the 2nd partition
+will be ordered consecutively, e.g. as the cores on one physical node.
+This can boost performance.  For example, if you use "-reorder nth 4"
+and "-partition 9 3" and you are running on 12 processors, the
+processors will be reordered from
+
+0 1 2 3 4 5 6 7 8 9 10 11 :pre
+
+to
+
+0 1 2 4 5 6 8 9 10 3 7 11 :pre
+
+so that the processors in each partition will be
+
+0 1 2 4 5 6 8 9 10
+3 7 11 :pre
+
+See the "processors" command for how to insure processors from each
+partition could then be grouped optimally for quad-core nodes.
+
+If the keyword is {custom}, then a file that specifies a permutation
+of the processor ranks is also specified.  The format of the reorder
+file is as follows.  Any number of initial blank or comment lines
+(starting with a "#" character) can be present.  These should be
+followed by P lines of the form:
+
+I J :pre
+
+where P is the number of processors LAMMPS was launched with.  Note
+that if running in multi-partition mode (see the -partition switch
+above) P is the total number of processors in all partitions.  The I
+and J values describe a permutation of the P processors.  Every I and
+J should be values from 0 to P-1 inclusive.  In the set of P I values,
+every proc ID should appear exactly once.  Ditto for the set of P J
+values.  A single I,J pairing means that the physical processor with
+rank I in the original MPI communicator will have rank J in the
+reordered communicator.
+
+Note that rank ordering can also be specified by many MPI
+implementations, either by environment variables that specify how to
+order physical processors, or by config files that specify what
+physical processors to assign to each MPI rank.  The -reorder switch
+simply gives you a portable way to do this without relying on MPI
+itself.  See the "processors out"_processors.html command for how
+to output info on the final assignment of physical processors to
+the LAMMPS simulation domain.
+
+:line
+
+[-screen file] :link(screen)
+
+Specify a file for LAMMPS to write its screen information to.  In
+one-partition mode, if the switch is not used, LAMMPS writes to the
+screen.  If this switch is used, LAMMPS writes to the specified file
+instead and you will see no screen output.  In multi-partition mode,
+if the switch is not used, hi-level status information is written to
+the screen.  Each partition also writes to a screen.N file where N is
+the partition ID.  If the switch is specified in multi-partition mode,
+the hi-level screen dump is named "file" and each partition also
+writes screen information to a file.N.  For both one-partition and
+multi-partition mode, if the specified file is "none", then no screen
+output is performed. Option -pscreen will override the name of the
+partition screen files file.N.
+
+:line
+
+[-suffix style args] :link(suffix)
+
+Use variants of various styles if they exist.  The specified style can
+be {cuda}, {gpu}, {intel}, {kk}, {omp}, {opt}, or {hybrid}.  These
+refer to optional packages that LAMMPS can be built with, as described
+above in "Section 2.3"_#start_3.  The "gpu" style corresponds to the
+GPU package, the "intel" style to the USER-INTEL package, the "kk"
+style to the KOKKOS package, the "opt" style to the OPT package, and
+the "omp" style to the USER-OMP package. The hybrid style is the only
+style that accepts arguments. It allows for two packages to be
+specified. The first package specified is the default and will be used
+if it is available. If no style is available for the first package,
+the style for the second package will be used if available. For
+example, "-suffix hybrid intel omp" will use styles from the
+USER-INTEL package if they are installed and available, but styles for
+the USER-OMP package otherwise.
+
+Along with the "-package" command-line switch, this is a convenient
+mechanism for invoking accelerator packages and their options without
+having to edit an input script.
+
+As an example, all of the packages provide a "pair_style
+lj/cut"_pair_lj.html variant, with style names lj/cut/gpu,
+lj/cut/intel, lj/cut/kk, lj/cut/omp, and lj/cut/opt.  A variant style
+can be specified explicitly in your input script, e.g. pair_style
+lj/cut/gpu.  If the -suffix switch is used the specified suffix
+(gpu,intel,kk,omp,opt) is automatically appended whenever your input
+script command creates a new "atom"_atom_style.html,
+"pair"_pair_style.html, "fix"_fix.html, "compute"_compute.html, or
+"run"_run_style.html style.  If the variant version does not exist,
+the standard version is created.
+
+For the GPU package, using this command-line switch also invokes the
+default GPU settings, as if the command "package gpu 1" were used at
+the top of your input script.  These settings can be changed by using
+the "-package gpu" command-line switch or the "package
+gpu"_package.html command in your script.
+
+For the USER-INTEL package, using this command-line switch also
+invokes the default USER-INTEL settings, as if the command "package
+intel 1" were used at the top of your input script.  These settings
+can be changed by using the "-package intel" command-line switch or
+the "package intel"_package.html command in your script. If the
+USER-OMP package is also installed, the hybrid style with "intel omp"
+arguments can be used to make the omp suffix a second choice, if a
+requested style is not available in the USER-INTEL package.  It will
+also invoke the default USER-OMP settings, as if the command "package
+omp 0" were used at the top of your input script.  These settings can
+be changed by using the "-package omp" command-line switch or the
+"package omp"_package.html command in your script.
+
+For the KOKKOS package, using this command-line switch also invokes
+the default KOKKOS settings, as if the command "package kokkos" were
+used at the top of your input script.  These settings can be changed
+by using the "-package kokkos" command-line switch or the "package
+kokkos"_package.html command in your script.
+
+For the OMP package, using this command-line switch also invokes the
+default OMP settings, as if the command "package omp 0" were used at
+the top of your input script.  These settings can be changed by using
+the "-package omp" command-line switch or the "package
+omp"_package.html command in your script.
+
+The "suffix"_suffix.html command can also be used within an input
+script to set a suffix, or to turn off or back on any suffix setting
+made via the command line.
+
+:line
+
+[-var name value1 value2 ...] :link(var)
+
+Specify a variable that will be defined for substitution purposes when
+the input script is read.  This switch can be used multiple times to
+define multiple variables.  "Name" is the variable name which can be a
+single character (referenced as $x in the input script) or a full
+string (referenced as $\{abc\}).  An "index-style
+variable"_variable.html will be created and populated with the
+subsequent values, e.g. a set of filenames.  Using this command-line
+option is equivalent to putting the line "variable name index value1
+value2 ..."  at the beginning of the input script.  Defining an index
+variable as a command-line argument overrides any setting for the same
+index variable in the input script, since index variables cannot be
+re-defined.  
+
+See the "variable"_variable.html command for more info on defining
+index and other kinds of variables and the "Commands
+parse"_Commands_parse.html page for more info on using variables in
+input scripts.
+
+NOTE: Currently, the command-line parser looks for arguments that
+start with "-" to indicate new switches.  Thus you cannot specify
+multiple variable values if any of them start with a "-", e.g. a
+negative numeric value.  It is OK if the first value1 starts with a
+"-", since it is automatically skipped.
diff --git a/doc/src/Run_output.txt b/doc/src/Run_output.txt
new file mode 100644
index 0000000000..a534ae7c7b
--- /dev/null
+++ b/doc/src/Run_output.txt
@@ -0,0 +1,176 @@
+"Higher level section"_Run.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Screen and logfile output :h3
+
+As LAMMPS reads an input script, it prints information to both the
+screen and a log file about significant actions it takes to setup a
+simulation.  When the simulation is ready to begin, LAMMPS performs
+various initializations, and prints info about the run it is about to
+perform, including the amount of memory (in MBytes per processor) that
+the simulation requires.  It also prints details of the initial
+thermodynamic state of the system.  During the run itself,
+thermodynamic information is printed periodically, every few
+timesteps.  When the run concludes, LAMMPS prints the final
+thermodynamic state and a total run time for the simulation.  It also
+appends statistics about the CPU time and storage requirements for the
+simulation.  An example set of statistics is shown here:
+
+Loop time of 2.81192 on 4 procs for 300 steps with 2004 atoms :pre
+
+Performance: 18.436 ns/day  1.302 hours/ns  106.689 timesteps/s
+97.0% CPU use with 4 MPI tasks x no OpenMP threads :pre
+
+MPI task timings breakdown:
+Section |  min time  |  avg time  |  max time  |%varavg| %total
+---------------------------------------------------------------
+Pair    | 1.9808     | 2.0134     | 2.0318     |   1.4 | 71.60
+Bond    | 0.0021894  | 0.0060319  | 0.010058   |   4.7 |  0.21
+Kspace  | 0.3207     | 0.3366     | 0.36616    |   3.1 | 11.97
+Neigh   | 0.28411    | 0.28464    | 0.28516    |   0.1 | 10.12
+Comm    | 0.075732   | 0.077018   | 0.07883    |   0.4 |  2.74
+Output  | 0.00030518 | 0.00042665 | 0.00078821 |   1.0 |  0.02
+Modify  | 0.086606   | 0.086631   | 0.086668   |   0.0 |  3.08
+Other   |            | 0.007178   |            |       |  0.26 :pre
+
+Nlocal:    501 ave 508 max 490 min
+Histogram: 1 0 0 0 0 0 1 1 0 1
+Nghost:    6586.25 ave 6628 max 6548 min
+Histogram: 1 0 1 0 0 0 1 0 0 1
+Neighs:    177007 ave 180562 max 170212 min
+Histogram: 1 0 0 0 0 0 0 1 1 1 :pre
+
+Total # of neighbors = 708028
+Ave neighs/atom = 353.307
+Ave special neighs/atom = 2.34032
+Neighbor list builds = 26
+Dangerous builds = 0 :pre
+
+:line
+
+The first section provides a global loop timing summary. The {loop
+time} is the total wall-clock time for the simulation to run.  The
+{Performance} line is provided for convenience to help predict how
+long it will take to run a desired physical simulation.  The {CPU use}
+line provides the CPU utilization per MPI task; it should be close to
+100% times the number of OpenMP threads (or 1 of not using OpenMP).
+Lower numbers correspond to delays due to file I/O or insufficient
+thread utilization.
+
+:line
+
+The {MPI task} section gives the breakdown of the CPU run time (in
+seconds) into major categories:
+
+{Pair} = non-bonded force computations
+{Bond} = bonded interactions: bonds, angles, dihedrals, impropers
+{Kspace} = long-range interactions: Ewald, PPPM, MSM
+{Neigh} = neighbor list construction
+{Comm} = inter-processor communication of atoms and their properties
+{Output} = output of thermodynamic info and dump files
+{Modify} = fixes and computes invoked by fixes
+{Other} = all the remaining time :ul
+
+For each category, there is a breakdown of the least, average and most
+amount of wall time any processor spent on this category of
+computation.  The "%varavg" is the percentage by which the max or min
+varies from the average.  This is an indication of load imbalance.  A
+percentage close to 0 is perfect load balance.  A large percentage is
+imbalance.  The final "%total" column is the percentage of the total
+loop time is spent in this category.
+
+When using the "timer full"_timer.html setting, an additional column
+is added that also prints the CPU utilization in percent. In addition,
+when using {timer full} and the "package omp"_package.html command are
+active, a similar timing summary of time spent in threaded regions to
+monitor thread utilization and load balance is provided. A new {Thread
+timings} section is also added, which lists the time spent in reducing
+the per-thread data elements to the storage for non-threaded
+computation. These thread timings are measured for the first MPI rank
+only and and thus, because the breakdown for MPI tasks can change from
+MPI rank to MPI rank, this breakdown can be very different for
+individual ranks. Here is an example output for this section:
+
+Thread timings breakdown (MPI rank 0):
+Total threaded time 0.6846 / 90.6%
+Section |  min time  |  avg time  |  max time  |%varavg| %total
+---------------------------------------------------------------
+Pair    | 0.5127     | 0.5147     | 0.5167     |   0.3 | 75.18
+Bond    | 0.0043139  | 0.0046779  | 0.0050418  |   0.5 |  0.68
+Kspace  | 0.070572   | 0.074541   | 0.07851    |   1.5 | 10.89
+Neigh   | 0.084778   | 0.086969   | 0.089161   |   0.7 | 12.70
+Reduce  | 0.0036485  | 0.003737   | 0.0038254  |   0.1 |  0.55 :pre
+
+:line
+
+The third section above lists the number of owned atoms (Nlocal),
+ghost atoms (Nghost), and pair-wise neighbors stored per processor.
+The max and min values give the spread of these values across
+processors with a 10-bin histogram showing the distribution. The total
+number of histogram counts is equal to the number of processors.
+
+:line
+
+The last section gives aggregate statistics (across all processors)
+for pair-wise neighbors and special neighbors that LAMMPS keeps track
+of (see the "special_bonds"_special_bonds.html command).  The number
+of times neighbor lists were rebuilt is tallied, as is the number of
+potentially {dangerous} rebuilds.  If atom movement triggered neighbor
+list rebuilding (see the "neigh_modify"_neigh_modify.html command),
+then dangerous reneighborings are those that were triggered on the
+first timestep atom movement was checked for.  If this count is
+non-zero you may wish to reduce the delay factor to insure no force
+interactions are missed by atoms moving beyond the neighbor skin
+distance before a rebuild takes place.
+
+:line
+
+If an energy minimization was performed via the
+"minimize"_minimize.html command, additional information is printed,
+e.g.
+
+Minimization stats:
+  Stopping criterion = linesearch alpha is zero
+  Energy initial, next-to-last, final =
+         -6372.3765206     -8328.46998942     -8328.46998942
+  Force two-norm initial, final = 1059.36 5.36874
+  Force max component initial, final = 58.6026 1.46872
+  Final line search alpha, max atom move = 2.7842e-10 4.0892e-10
+  Iterations, force evaluations = 701 1516 :pre
+
+The first line prints the criterion that determined minimization was
+converged. The next line lists the initial and final energy, as well
+as the energy on the next-to-last iteration.  The next 2 lines give a
+measure of the gradient of the energy (force on all atoms).  The
+2-norm is the "length" of this 3N-component force vector; the largest
+component (x, y, or z) of force (infinity-norm) is also given.  Then
+information is provided about the line search and statistics on how
+many iterations and force-evaluations the minimizer required.
+Multiple force evaluations are typically done at each iteration to
+perform a 1d line minimization in the search direction.  See the
+"minimize"_minimize.html doc page for more details.
+
+:line
+
+If a "kspace_style"_kspace_style.html long-range Coulombics solver
+that performs FFTs was used during the run (PPPM, Ewald), then
+additional information is printed, e.g.
+
+FFT time (% of Kspce) = 0.200313 (8.34477)
+FFT Gflps 3d 1d-only = 2.31074 9.19989 :pre
+
+The first line is the time spent doing 3d FFTs (several per timestep)
+and the fraction it represents of the total KSpace time (listed
+above).  Each 3d FFT requires computation (3 sets of 1d FFTs) and
+communication (transposes).  The total flops performed is 5Nlog_2(N),
+where N is the number of points in the 3d grid.  The FFTs are timed
+with and without the communication and a Gflop rate is computed.  The
+3d rate is with communication; the 1d rate is without (just the 1d
+FFTs).  Thus you can estimate what fraction of your FFT time was spent
+in communication, roughly 75% in the example above.
diff --git a/doc/src/Run_windows.txt b/doc/src/Run_windows.txt
new file mode 100644
index 0000000000..1151a4a2bb
--- /dev/null
+++ b/doc/src/Run_windows.txt
@@ -0,0 +1,73 @@
+"Higher level section"_Run.html - "LAMMPS WWW Site"_lws - "LAMMPS
+Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+Running LAMMPS on Windows :h3
+
+To run a serial (non-MPI) executable, follow these steps:
+
+Get a command prompt by going to Start->Run... ,
+then typing "cmd". :ulb,l
+
+Move to the directory where you have your input script,
+(e.g. by typing: cd "Documents"). :l
+
+At the command prompt, type "lmp_serial -in in.file", where
+in.file is the name of your LAMMPS input script. :l,ule
+
+Note that the serial executable includes support for multi-threading
+parallelization from the styles in the USER-OMP packages.  To run with
+4 threads, you can type this:
+
+lmp_serial -in in.lj -pk omp 4 -sf omp :pre
+
+:line
+
+For the MPI executable, which allows you to run LAMMPS under Windows
+in parallel, follow these steps.
+
+Download and install a compatible MPI library binary package:
+
+for 32-bit Windows: "mpich2-1.4.1p1-win-ia32.msi"_download.lammps.org/thirdparty/mpich2-1.4.1p1-win-ia32.msi
+for 64-bit Windows: "mpich2-1.4.1p1-win-x86-64.msi"_download.lammps.org/thirdparty/mpich2-1.4.1p1-win-x86-64.msi :ul
+
+The LAMMPS Windows installer packages will automatically adjust your
+path for the default location of this MPI package. After the
+installation of the MPICH2 software, it needs to be integrated into
+the system.  For this you need to start a Command Prompt in
+{Administrator Mode} (right click on the icon and select it). Change
+into the MPICH2 installation directory, then into the subdirectory
+[bin] and execute [smpd.exe -install]. Exit the command window.
+
+Get a new, regular command prompt by going to Start->Run... ,
+then typing "cmd". :ulb,l
+
+Move to the directory where you have your input file
+(e.g. by typing: cd "Documents"). :l,ule
+
+Then type something like this:
+
+mpiexec -localonly 4 lmp_mpi -in in.file
+mpiexec -np 4 lmp_mpi -in in.file :pre
+
+where in.file is the name of your LAMMPS input script. For the latter
+case, you may be prompted to enter your password.
+
+In this mode, output may not immediately show up on the screen, so if
+your input script takes a long time to execute, you may need to be
+patient before the output shows up.
+
+The parallel executable can also run on a single processor by typing
+something like this:
+
+lmp_mpi -in in.lj :pre
+
+Note that the parallel executable also includes OpenMP
+multi-threading, which can be combined with MPI using something like:
+
+mpiexec -localonly 2 lmp_mpi -in in.lj -pk omp 2 -sf omp :pre
diff --git a/doc/src/Section_start.txt b/doc/src/Section_start.txt
deleted file mode 100644
index 19a798d5df..0000000000
--- a/doc/src/Section_start.txt
+++ /dev/null
@@ -1,1823 +0,0 @@
-"Previous Section"_Intro.html - "LAMMPS WWW Site"_lws -
-"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Commands.html :c
-
-:link(lws,http://lammps.sandia.gov)
-:link(ld,Manual.html)
-:link(lc,Commands_all.html)
-
-:line
-
-2. Getting Started :h2
-
-This section describes how to build and run LAMMPS, for both new and
-experienced users.
-
-2.1 "What's in the LAMMPS distribution"_#start_1
-2.2 "Making LAMMPS"_#start_2
-2.3 "Making LAMMPS with optional packages"_#start_3
-2.4 "Building LAMMPS as a library"_#start_4
-2.5 "Running LAMMPS"_#start_5
-2.6 "Command-line options"_#start_6
-2.7 "Screen output"_#start_7
-2.8 "Tips for users of previous versions"_#start_8 :all(b)
-
-:line
-
-2.1 What's in the LAMMPS distribution :h3,link(start_1)
-
-When you download a LAMMPS tarball you will need to unzip and untar
-the downloaded file with the following commands, after placing the
-tarball in an appropriate directory.
-
-tar -xzvf lammps*.tar.gz :pre
-
-This will create a LAMMPS directory containing two files and several
-sub-directories:
-
-README: text file
-LICENSE: the GNU General Public License (GPL)
-bench: benchmark problems
-doc: documentation
-examples: simple test problems
-potentials: embedded atom method (EAM) potential files
-src: source files
-tools: pre- and post-processing tools :tb(s=:)
-
-Note that the "download page"_download also has links to download
-pre-build Windows installers, as well as pre-built packages for
-several widely used Linux distributions.  It also has instructions
-for how to download/install LAMMPS for Macs (via Homebrew), and to
-download and update LAMMPS from SVN and Git repositories, which gives
-you access to the up-to-date sources that are used by the LAMMPS
-core developers.
-
-:link(download,http://lammps.sandia.gov/download.html)
-
-The Windows and Linux packages for serial or parallel include
-only selected packages and bug-fixes/upgrades listed on "this
-page"_http://lammps.sandia.gov/bug.html up to a certain date, as
-stated on the download page.  If you want an executable with
-non-included packages or that is more current, then you'll need to
-build LAMMPS yourself, as discussed in the next section.
-
-Skip to the "Running LAMMPS"_#start_6 sections for info on how to
-launch a LAMMPS Windows executable on a Windows box.
-
-:line
-
-2.2 Making LAMMPS :h3,link(start_2)
-
-This section has the following sub-sections:
-
-2.2.1 "Read this first"_#start_2_1
-2.2.1 "Steps to build a LAMMPS executable"_#start_2_2
-2.2.3 "Common errors that can occur when making LAMMPS"_#start_2_3
-2.2.4 "Additional build tips"_#start_2_4
-2.2.5 "Building for a Mac"_#start_2_5
-2.2.6 "Building for Windows"_#start_2_6 :all(b)
-
-:line
-
-Read this first :h4,link(start_2_1)
-
-If you want to avoid building LAMMPS yourself, read the preceding
-section about options available for downloading and installing
-executables.  Details are discussed on the "download"_download page.
-
-Building LAMMPS can be simple or not-so-simple.  If all you need are
-the default packages installed in LAMMPS, and MPI is already installed
-on your machine, or you just want to run LAMMPS in serial, then you
-can typically use the Makefile.mpi or Makefile.serial files in
-src/MAKE by typing one of these lines (from the src dir):
-
-make mpi
-make serial :pre
-
-Note that on a facility supercomputer, there are often "modules"
-loaded in your environment that provide the compilers and MPI you
-should use.  In this case, the "mpicxx" compile/link command in
-Makefile.mpi should simply work by accessing those modules.
-
-It may be the case that one of the other Makefile.machine files in the
-src/MAKE sub-directories is a better match to your system (type "make"
-to see a list), you can use it as-is by typing (for example):
-
-make stampede :pre
-
-If any of these builds (with an existing Makefile.machine) works on
-your system, then you're done!
-
-If you need to install an optional package with a LAMMPS command you
-want to use, and the package does not depend on an extra library, you
-can simply type
-
-make name :pre
-
-before invoking (or re-invoking) the above steps.  "Name" is the
-lower-case name of the package, e.g. replica or user-misc.
-
-If you want to do one of the following:
-
-use a LAMMPS command that requires an extra library (e.g. "dump
-image"_dump_image.html) build with a package that requires an extra
-library build with an accelerator package that requires special
-compiler/linker settings run on a machine that has its own compilers,
-settings, or libraries :ul
-
-then building LAMMPS is more complicated.  You may need to find where
-extra libraries exist on your machine or install them if they don't.
-You may need to build extra libraries that are included in the LAMMPS
-distribution, before building LAMMPS itself.  You may need to edit a
-Makefile.machine file to make it compatible with your system.
-
-Please read the following sections carefully.  If you are not
-comfortable with makefiles, or building codes on a Unix platform, or
-running an MPI job on your machine, please find a local expert to help
-you.  Many compilation, linking, and run problems users experience are
-often not LAMMPS issues - they are peculiar to the user's system,
-compilers, libraries, etc.  Such questions are better answered by a
-local expert.
-
-If you have a build problem that you are convinced is a LAMMPS issue
-(e.g. the compiler complains about a line of LAMMPS source code), then
-please post the issue to the "LAMMPS mail
-list"_http://lammps.sandia.gov/mail.html.
-
-If you succeed in building LAMMPS on a new kind of machine, for which
-there isn't a similar machine Makefile included in the
-src/MAKE/MACHINES directory, then send it to the developers and we can
-include it in the LAMMPS distribution.
-
-:line
-
-Steps to build a LAMMPS executable :h4,link(start_2_2)
-
-Step 0 :h5
-
-The src directory contains the C++ source and header files for LAMMPS.
-It also contains a top-level Makefile and a MAKE sub-directory with
-low-level Makefile.* files for many systems and machines.  See the
-src/MAKE/README file for a quick overview of what files are available
-and what sub-directories they are in.
-
-The src/MAKE dir has a few files that should work as-is on many
-platforms.  The src/MAKE/OPTIONS dir has more that invoke additional
-compiler, MPI, and other setting options commonly used by LAMMPS, to
-illustrate their syntax.  The src/MAKE/MACHINES dir has many more that
-have been tweaked or optimized for specific machines.  These files are
-all good starting points if you find you need to change them for your
-machine.  Put any file you edit into the src/MAKE/MINE directory and
-it will be never be touched by any LAMMPS updates.
-
->From within the src directory, type "make" or "gmake".  You should see
-a list of available choices from src/MAKE and all of its
-sub-directories.  If one of those has the options you want or is the
-machine you want, you can type a command like:
-
-make mpi :pre
-or
-
-make serial :pre
-or
-
-gmake mac :pre
-
-Note that the corresponding Makefile.machine can exist in src/MAKE or
-any of its sub-directories.  If a file with the same name appears in
-multiple places (not a good idea), the order they are used is as
-follows: src/MAKE/MINE, src/MAKE, src/MAKE/OPTIONS, src/MAKE/MACHINES.
-This gives preference to a file you have created/edited and put in
-src/MAKE/MINE.
-
-Note that on a multi-processor or multi-core platform you can launch a
-parallel make, by using the "-j" switch with the make command, which
-will build LAMMPS more quickly.
-
-If you get no errors and an executable like [lmp_mpi] or [lmp_serial]
-or [lmp_mac] is produced, then you're done; it's your lucky day.
-
-Note that by default only a few of LAMMPS optional packages are
-installed.  To build LAMMPS with optional packages, see "this
-section"_#start_3 below.
-
-Step 1 :h5
-
-If Step 0 did not work, you will need to create a low-level Makefile
-for your machine, like Makefile.foo.  You should make a copy of an
-existing Makefile.* in src/MAKE or one of its sub-directories as a
-starting point.  The only portions of the file you need to edit are
-the first line, the "compiler/linker settings" section, and the
-"LAMMPS-specific settings" section.  When it works, put the edited
-file in src/MAKE/MINE and it will not be altered by any future LAMMPS
-updates.
-
-Step 2 :h5
-
-Change the first line of Makefile.foo to list the word "foo" after the
-"#", and whatever other options it will set.  This is the line you
-will see if you just type "make".
-
-Step 3 :h5
-
-The "compiler/linker settings" section lists compiler and linker
-settings for your C++ compiler, including optimization flags.  You can
-use g++, the open-source GNU compiler, which is available on all Unix
-systems.  You can also use mpicxx which will typically be available if
-MPI is installed on your system, though you should check which actual
-compiler it wraps.  Vendor compilers often produce faster code.  On
-boxes with Intel CPUs, we suggest using the Intel icc compiler, which
-can be downloaded from "Intel's compiler site"_intel.
-
-:link(intel,http://www.intel.com/software/products/noncom)
-
-If building a C++ code on your machine requires additional libraries,
-then you should list them as part of the LIB variable.  You should
-not need to do this if you use mpicxx.
-
-The DEPFLAGS setting is what triggers the C++ compiler to create a
-dependency list for a source file.  This speeds re-compilation when
-source (*.cpp) or header (*.h) files are edited.  Some compilers do
-not support dependency file creation, or may use a different switch
-than -D.  GNU g++ and Intel icc works with -D.  If your compiler can't
-create dependency files, then you'll need to create a Makefile.foo
-patterned after Makefile.storm, which uses different rules that do not
-involve dependency files.  Note that when you build LAMMPS for the
-first time on a new platform, a long list of *.d files will be printed
-out rapidly.  This is not an error; it is the Makefile doing its
-normal creation of dependencies.
-
-Step 4 :h5
-
-The "system-specific settings" section has several parts.  Note that
-if you change any -D setting in this section, you should do a full
-re-compile, after typing "make clean" (which will describe different
-clean options).
-
-The LMP_INC variable is used to include options that turn on ifdefs
-within the LAMMPS code.  The options that are currently recognized are:
-
--DLAMMPS_GZIP
--DLAMMPS_JPEG
--DLAMMPS_PNG
--DLAMMPS_FFMPEG
--DLAMMPS_MEMALIGN
--DLAMMPS_SMALLBIG
--DLAMMPS_BIGBIG
--DLAMMPS_SMALLSMALL
--DLAMMPS_LONGLONG_TO_LONG
--DLAMMPS_EXCEPTIONS
--DPACK_ARRAY
--DPACK_POINTER
--DPACK_MEMCPY :ul
-
-The read_data and dump commands will read/write gzipped files if you
-compile with -DLAMMPS_GZIP.  It requires that your machine supports
-the "popen()" function in the standard runtime library and that a gzip
-executable can be found by LAMMPS during a run.
-
-NOTE: on some clusters with high-speed networks, using the fork()
-library calls (required by popen()) can interfere with the fast
-communication library and lead to simulations using compressed output
-or input to hang or crash. For selected operations, compressed file
-I/O is also available using a compression library instead, which are
-provided in the COMPRESS package. From more details about compiling
-LAMMPS with packages, please see below.
-
-If you use -DLAMMPS_JPEG, the "dump image"_dump_image.html command
-will be able to write out JPEG image files. For JPEG files, you must
-also link LAMMPS with a JPEG library, as described below. If you use
--DLAMMPS_PNG, the "dump image"_dump.html command will be able to write
-out PNG image files.  For PNG files, you must also link LAMMPS with a
-PNG library, as described below.  If neither of those two defines are
-used, LAMMPS will only be able to write out uncompressed PPM image
-files.
-
-If you use -DLAMMPS_FFMPEG, the "dump movie"_dump_image.html command
-will be available to support on-the-fly generation of rendered movies
-the need to store intermediate image files. It requires that your
-machines supports the "popen" function in the standard runtime library
-and that an FFmpeg executable can be found by LAMMPS during the run.
-
-NOTE: Similar to the note above, this option can conflict with
-high-speed networks, because it uses popen().
-
-Using -DLAMMPS_MEMALIGN=<bytes> enables the use of the
-posix_memalign() call instead of malloc() when large chunks or memory
-are allocated by LAMMPS.  This can help to make more efficient use of
-vector instructions of modern CPUS, since dynamically allocated memory
-has to be aligned on larger than default byte boundaries (e.g. 16
-bytes instead of 8 bytes on x86 type platforms) for optimal
-performance.
-
-Use at most one of the -DLAMMPS_SMALLBIG, -DLAMMPS_BIGBIG,
--DLAMMPS_SMALLSMALL settings.  The default is -DLAMMPS_SMALLBIG. These
-settings refer to use of 4-byte (small) vs 8-byte (big) integers
-within LAMMPS, as specified in src/lmptype.h.  The only reason to use
-the BIGBIG setting is to enable simulation of huge molecular systems
-(which store bond topology info) with more than 2 billion atoms, or to
-track the image flags of moving atoms that wrap around a periodic box
-more than 512 times.  Normally, the only reason to use SMALLSMALL is
-if your machine does not support 64-bit integers, though you can use
-SMALLSMALL setting if you are running in serial or on a desktop
-machine or small cluster where you will never run large systems or for
-long time (more than 2 billion atoms, more than 2 billion timesteps).
-See the "Additional build tips"_#start_2_4 section below for more
-details on these settings.
-
-Note that the USER-ATC package is not currently compatible with
--DLAMMPS_BIGBIG.  Also the GPU package requires the lib/gpu library to
-be compiled with the same setting, or the link will fail.
-
-The -DLAMMPS_LONGLONG_TO_LONG setting may be needed if your system or
-MPI version does not recognize "long long" data types.  In this case a
-"long" data type is likely already 64-bits, in which case this setting
-will convert to that data type.
-
-The -DLAMMPS_EXCEPTIONS setting can be used to activate alternative
-versions of error handling inside of LAMMPS.  This is useful when
-external codes drive LAMMPS as a library.  Using this option, LAMMPS
-errors do not kill the caller.  Instead, the call stack is unwound and
-control returns to the caller.  The library interface provides the
-lammps_has_error() and lammps_get_last_error_message() functions to
-detect and find out more about a LAMMPS error.
-
-Using one of the -DPACK_ARRAY, -DPACK_POINTER, and -DPACK_MEMCPY
-options can make for faster parallel FFTs (in the PPPM solver) on some
-platforms.  The -DPACK_ARRAY setting is the default.  See the
-"kspace_style"_kspace_style.html command for info about PPPM.  See
-Step 6 below for info about building LAMMPS with an FFT library.
-
-Step 5 :h5
-
-The 3 MPI variables are used to specify an MPI library to build LAMMPS
-with.  Note that you do not need to set these if you use the MPI
-compiler mpicxx for your CC and LINK setting in the section above.
-The MPI wrapper knows where to find the needed files.
-
-If you want LAMMPS to run in parallel, you must have an MPI library
-installed on your platform.  If MPI is installed on your system in the
-usual place (under /usr/local), you also may not need to specify these
-3 variables, assuming /usr/local is in your path.  On some large
-parallel machines which use "modules" for their compile/link
-environments, you may simply need to include the correct module in
-your build environment, before building LAMMPS.  Or the parallel
-machine may have a vendor-provided MPI which the compiler has no
-trouble finding.
-
-Failing this, these 3 variables can be used to specify where the mpi.h
-file (MPI_INC) and the MPI library file (MPI_PATH) are found and the
-name of the library file (MPI_LIB).
-
-If you are installing MPI yourself, we recommend Argonne's MPICH2
-or OpenMPI.  MPICH can be downloaded from the "Argonne MPI
-site"_http://www.mcs.anl.gov/research/projects/mpich2/.  OpenMPI can
-be downloaded from the "OpenMPI site"_http://www.open-mpi.org.
-Other MPI packages should also work. If you are running on a big
-parallel platform, your system people or the vendor should have
-already installed a version of MPI, which is likely to be faster
-than a self-installed MPICH or OpenMPI, so find out how to build
-and link with it.  If you use MPICH or OpenMPI, you will have to
-configure and build it for your platform.  The MPI configure script
-should have compiler options to enable you to use the same compiler
-you are using for the LAMMPS build, which can avoid problems that can
-arise when linking LAMMPS to the MPI library.
-
-If you just want to run LAMMPS on a single processor, you can use the
-dummy MPI library provided in src/STUBS, since you don't need a true
-MPI library installed on your system.  See src/MAKE/Makefile.serial
-for how to specify the 3 MPI variables in this case.  You will also
-need to build the STUBS library for your platform before making LAMMPS
-itself.  Note that if you are building with src/MAKE/Makefile.serial,
-e.g. by typing "make serial", then the STUBS library is built for you.
-
-To build the STUBS library from the src directory, type "make
-mpi-stubs", or from the src/STUBS dir, type "make".  This should
-create a libmpi_stubs.a file suitable for linking to LAMMPS.  If the
-build fails, you will need to edit the STUBS/Makefile for your
-platform.
-
-The file STUBS/mpi.c provides a CPU timer function called MPI_Wtime()
-that calls gettimeofday() .  If your system doesn't support
-gettimeofday() , you'll need to insert code to call another timer.
-Note that the ANSI-standard function clock() rolls over after an hour
-or so, and is therefore insufficient for timing long LAMMPS
-simulations.
-
-Step 6 :h5
-
-The 3 FFT variables allow you to specify an FFT library which LAMMPS
-uses (for performing 1d FFTs) when running the particle-particle
-particle-mesh (PPPM) option for long-range Coulombics via the
-"kspace_style"_kspace_style.html command.
-
-LAMMPS supports common open-source or vendor-supplied FFT libraries
-for this purpose.  If you leave these 3 variables blank, LAMMPS will
-use the open-source "KISS FFT library"_http://kissfft.sf.net, which is
-included in the LAMMPS distribution.  This library is portable to all
-platforms and for typical LAMMPS simulations is almost as fast as FFTW
-or vendor optimized libraries.  If you are not including the KSPACE
-package in your build, you can also leave the 3 variables blank.
-
-Otherwise, select which kinds of FFTs to use as part of the FFT_INC
-setting by a switch of the form -DFFT_XXX.  Recommended values for XXX
-are: MKL or FFTW3.  FFTW2 and NONE are supported as legacy options.
-Selecting -DFFT_FFTW will use the FFTW3 library and -DFFT_NONE will
-use the KISS library described above.
-
-You may also need to set the FFT_INC, FFT_PATH, and FFT_LIB variables,
-so the compiler and linker can find the needed FFT header and library
-files.  Note that on some large parallel machines which use "modules"
-for their compile/link environments, you may simply need to include
-the correct module in your build environment.  Or the parallel machine
-may have a vendor-provided FFT library which the compiler has no
-trouble finding.  See the src/MAKE/OPTIONS/Makefile.fftw file for an
-example of how to specify these variables to use the FFTW3 library.
-
-FFTW is fast, portable library that should also work on any platform
-and typically be faster than KISS FFT.  You can download it from
-"www.fftw.org"_http://www.fftw.org.  Both the legacy version 2.1.X and
-the newer 3.X versions are supported as -DFFT_FFTW2 or -DFFT_FFTW3.
-Building FFTW for your box should be as simple as ./configure; make;
-make install.  The install command typically requires root privileges
-(e.g. invoke it via sudo), unless you specify a local directory with
-the "--prefix" option of configure.  Type "./configure --help" to see
-various options.
-
-If you wish to have FFTW support for single-precision FFTs (see below
-about -DFFT_SINGLE) in addition to the default double-precision FFTs,
-you will need to build FFTW a second time for single-precision.  For
-FFTW3, do this via:
-
-make clean
-./configure --enable-single; make; make install :pre
-
-which should produce the additional library libfftw3f.a.
-
-For FFTW2, do this:
-
-make clean
-./configure --enable-float --enable-type-prefix; make; make install :pre
-
-which should produce the additional library libsfftw.a and additional
-include file sfttw.a.  Note that on some platforms FFTW2 has been
-pre-installed for both single- and double-precision, and may already
-have these files as well as libdfftw.a and dfftw.h for double
-precision.
-
-The FFT_INC variable also allows for a -DFFT_SINGLE setting that will
-use single-precision FFTs with PPPM, which can speed-up long-range
-calculations, particularly in parallel or on GPUs.  Fourier transform
-and related PPPM operations are somewhat insensitive to floating point
-truncation errors and thus do not always need to be performed in
-double precision.  Using the -DFFT_SINGLE setting trades off a little
-accuracy for reduced memory use and parallel communication costs for
-transposing 3d FFT data.  Note that single precision FFTs have only
-been tested with the FFTW3, FFTW2, MKL, and KISS FFT options.
-
-When using -DFFT_SINGLE with FFTW3 or FFTW2, you need to build FFTW
-with support for single-precision, as explained above.  For FFTW3 you
-also need to include -lfftw3f with the FFT_LIB setting, in addition to
--lfftw3.  For FFTW2, you also need to specify -DFFT_SIZE with the
-FFT_INC setting and -lsfftw with the FFT_LIB setting (in place of
--lfftw).  Similarly, if FFTW2 has been pre-installed with an explicit
-double-precision library (libdfftw.a and not the default libfftw.a),
-then you can specify -DFFT_SIZE (and not -DFFT_SINGLE), and specify
--ldfftw to use double-precision FFTs.
-
-Step 7 :h5
-
-The 3 JPG variables allow you to specify a JPEG and/or PNG library
-which LAMMPS uses when writing out JPEG or PNG files via the "dump
-image"_dump_image.html command.  These can be left blank if you do not
-use the -DLAMMPS_JPEG or -DLAMMPS_PNG switches discussed above in Step
-4, since in that case JPEG/PNG output will be disabled.
-
-A standard JPEG library usually goes by the name libjpeg.a or
-libjpeg.so and has an associated header file jpeglib.h.  Whichever
-JPEG library you have on your platform, you'll need to set the
-appropriate JPG_INC, JPG_PATH, and JPG_LIB variables, so that the
-compiler and linker can find it.
-
-A standard PNG library usually goes by the name libpng.a or libpng.so
-and has an associated header file png.h.  Whichever PNG library you
-have on your platform, you'll need to set the appropriate JPG_INC,
-JPG_PATH, and JPG_LIB variables, so that the compiler and linker can
-find it.
-
-As before, if these header and library files are in the usual place on
-your machine, you may not need to set these variables.
-
-Step 8 :h5
-
-Note that by default only a few of LAMMPS optional packages are
-installed.  To build LAMMPS with optional packages, see "this
-section"_#start_3 below, before proceeding to Step 9.
-
-Step 9 :h5
-
-That's it.  Once you have a correct Makefile.foo, and you have
-pre-built any other needed libraries (e.g. MPI, FFT, etc) all you need
-to do from the src directory is type something like this:
-
-make foo
-make -j N foo
-gmake foo
-gmake -j N foo :pre
-
-The -j or -j N switches perform a parallel build which can be much
-faster, depending on how many cores your compilation machine has.  N
-is the number of cores the build runs on.
-
-You should get the executable lmp_foo when the build is complete.
-
-:line
-
-Errors that can occur when making LAMMPS :h4 :link(start_2_3)
-
-If an error occurs when building LAMMPS, the compiler or linker will
-state very explicitly what the problem is.  The error message should
-give you a hint as to which of the steps above has failed, and what
-you need to do in order to fix it.  Building a code with a Makefile is
-a very logical process.  The compiler and linker need to find the
-appropriate files and those files need to be compatible with LAMMPS
-settings and source files.  When a make fails, there is usually a very
-simple reason, which you or a local expert will need to fix.
-
-Here are two non-obvious errors that can occur:
-
-(1) If the make command breaks immediately with errors that indicate
-it can't find files with a "*" in their names, this can be because
-your machine's native make doesn't support wildcard expansion in a
-makefile.  Try gmake instead of make.  If that doesn't work, try using
-a -f switch with your make command to use a pre-generated
-Makefile.list which explicitly lists all the needed files, e.g.
-
-make makelist
-make -f Makefile.list linux
-gmake -f Makefile.list mac :pre
-
-The first "make" command will create a current Makefile.list with all
-the file names in your src dir.  The 2nd "make" command (make or
-gmake) will use it to build LAMMPS.  Note that you should
-include/exclude any desired optional packages before using the "make
-makelist" command.
-
-(2) If you get an error that says something like 'identifier "atoll"
-is undefined', then your machine does not support "long long"
-integers.  Try using the -DLAMMPS_LONGLONG_TO_LONG setting described
-above in Step 4.
-
-:line
-
-Additional build tips :h4,link(start_2_4)
-
-Building LAMMPS for multiple platforms. :h5
-
-You can make LAMMPS for multiple platforms from the same src
-directory.  Each target creates its own object sub-directory called
-Obj_target where it stores the system-specific *.o files.
-
-Cleaning up. :h5
-
-Typing "make clean-all" or "make clean-machine" will delete *.o object
-files created when LAMMPS is built, for either all builds or for a
-particular machine.
-
-Changing the LAMMPS size limits via -DLAMMPS_SMALLBIG or -DLAMMPS_BIGBIG or -DLAMMPS_SMALLSMALL :h5
-
-As explained above, any of these 3 settings can be specified on the
-LMP_INC line in your low-level src/MAKE/Makefile.foo.
-
-The default is -DLAMMPS_SMALLBIG which allows for systems with up to
-2^63 atoms and 2^63 timesteps (about 9e18). The atom limit is for
-atomic systems which do not store bond topology info and thus do not
-require atom IDs.  If you use atom IDs for atomic systems (which is
-the default) or if you use a molecular model, which stores bond
-topology info and thus requires atom IDs, the limit is 2^31 atoms
-(about 2 billion).  This is because the IDs are stored in 32-bit
-integers.
-
-Likewise, with this setting, the 3 image flags for each atom (see the
-"dump"_dump.html doc page for a discussion) are stored in a 32-bit
-integer, which means the atoms can only wrap around a periodic box (in
-each dimension) at most 512 times.  If atoms move through the periodic
-box more than this many times, the image flags will "roll over",
-e.g. from 511 to -512, which can cause diagnostics like the
-mean-squared displacement, as calculated by the "compute
-msd"_compute_msd.html command, to be faulty.
-
-To allow for larger atomic systems with atom IDs or larger molecular
-systems or larger image flags, compile with -DLAMMPS_BIGBIG.  This
-stores atom IDs and image flags in 64-bit integers.  This enables
-atomic or molecular systems with atom IDS of up to 2^63 atoms (about
-9e18).  And image flags will not "roll over" until they reach 2^20 =
-1048576.
-
-If your system does not support 8-byte integers, you will need to
-compile with the -DLAMMPS_SMALLSMALL setting.  This will restrict the
-total number of atoms (for atomic or molecular systems) and timesteps
-to 2^31 (about 2 billion).  Image flags will roll over at 2^9 = 512.
-
-Note that in src/lmptype.h there are definitions of all these data
-types as well as the MPI data types associated with them.  The MPI
-types need to be consistent with the associated C data types, or else
-LAMMPS will generate a run-time error.  As far as we know, the
-settings defined in src/lmptype.h are portable and work on every
-current system.
-
-In all cases, the size of problem that can be run on a per-processor
-basis is limited by 4-byte integer storage to 2^31 atoms per processor
-(about 2 billion). This should not normally be a limitation since such
-a problem would have a huge per-processor memory footprint due to
-neighbor lists and would run very slowly in terms of CPU secs/timestep.
-
-:line
-
-Building for a Mac :h4,link(start_2_5)
-
-OS X is a derivative of BSD Unix, so it should just work.  See the
-src/MAKE/MACHINES/Makefile.mac and Makefile.mac_mpi files.
-
-:line
-
-Building for Windows :h4,link(start_2_6)
-
-If you want to build a Windows version of LAMMPS, you can build it
-yourself, but it may require some effort. LAMMPS expects a Unix-like
-build environment for the default build procedure. This can be done
-using either Cygwin or MinGW; the latter also exists as a ready-to-use
-Linux-to-Windows cross-compiler in several Linux distributions. In
-these cases, you can do the installation after installing several
-unix-style commands like make, grep, sed and bash with some shell
-utilities.
-
-For Cygwin and the MinGW cross-compilers, suitable makefiles are
-provided in src/MAKE/MACHINES. When using other compilers, like
-Visual C++ or Intel compilers for Windows, you may have to implement
-your own build system. Due to differences between the Windows OS
-and Windows system libraries to Unix-like environments like Linux
-or MacOS, when compiling for Windows a few adjustments may be needed:
-
-Do [not] set the -DLAMMPS_MEMALIGN define (see LMP_INC makefile variable)
-Add -lwsock32 -lpsapi to the linker flags (see LIB makefile variable)
-Try adding -static-libgcc or -static or both to the linker flags when your LAMMPS executable complains about missing .dll files  :ul
-
-Since none of the current LAMMPS core developers has significant
-experience building executables on Windows, we are happy to distribute
-contributed instructions and modifications to improve the situation,
-but we cannot provide support for those.
-
-With the so-called "Anniversary Update" to Windows 10, there is a
-Ubuntu Linux subsystem available for Windows, that can be installed
-and then used to compile/install LAMMPS as if you are running on a
-Ubuntu Linux system instead of Windows.
-
-As an alternative, you can download pre-compiled installer packages from
-"packages.lammps.org/windows.html"_http://packages.lammps.org/windows.html.
-These executables are built with most optional packages included and the
-download includes documentation, potential files, some tools and many
-examples, but no source code.
-
-:line
-
-2.3 Making LAMMPS with optional packages :h3,link(start_3)
-
-This section has the following sub-sections:
-
-2.3.1 "Package basics"_#start_3_1
-2.3.2 "Including/excluding packages"_#start_3_2
-2.3.3 "Packages that require extra libraries"_#start_3_3 :all(b)
-
-:line
-
-Package basics: :h4,link(start_3_1)
-
-The source code for LAMMPS is structured as a set of core files which
-are always included, plus optional packages.  Packages are groups of
-files that enable a specific set of features.  For example, force
-fields for molecular systems or granular systems are in packages.
-
-The "Packages"_Packages.html doc pages has details about all the
-packages, which come in two flavors: [standard] and [user]
-packages. It also has specific instructions for building LAMMPS with
-any package which requires an extra library.  General instructions are
-below.
-
-You can see the list of all packages by typing "make package" from
-within the src directory of the LAMMPS distribution.  It will also
-list various make commands that can be used to manage packages.
-
-If you use a command in a LAMMPS input script that is part of a
-package, you must have built LAMMPS with that package, else you will
-get an error that the style is invalid or the command is unknown.
-Every command's doc page specifies if it is part of a package.  You can
-type
-
-lmp_machine -h :pre
-
-to run your executable with the optional "-h command-line
-switch"_#start_6 for "help", which will list the styles and commands
-known to your executable, and immediately exit.
-
-:line
-
-Including/excluding packages :h4,link(start_3_2)
-
-To use (or not use) a package you must install it (or un-install it)
-before building LAMMPS.  From the src directory, this is as simple as:
-
-make yes-colloid
-make mpi :pre
-
-or
-
-make no-user-omp
-make mpi :pre
-
-NOTE: You should NOT install/un-install packages and build LAMMPS in a
-single make command using multiple targets, e.g. make yes-colloid mpi.
-This is because the make procedure creates a list of source files that
-will be out-of-date for the build if the package configuration changes
-within the same command.
-
-Any package can be installed or not in a LAMMPS build, independent of
-all other packages.  However, some packages include files derived from
-files in other packages.  LAMMPS checks for this and does the right
-thing.  I.e. individual files are only included if their dependencies
-are already included.  Likewise, if a package is excluded, other files
-dependent on that package are also excluded.
-
-NOTE: The one exception is that we do not recommend building with both
-the KOKKOS package installed and any of the other acceleration
-packages (GPU, OPT, USER-INTEL, USER-OMP) also installed.  This is
-because of how Kokkos sometimes builds using a wrapper compiler which
-can make it difficult to invoke all the compile/link flags correctly
-for both Kokkos and non-Kokkos files.
-
-If you will never run simulations that use the features in a
-particular packages, there is no reason to include it in your build.
-For some packages, this will keep you from having to build extra
-libraries, and will also produce a smaller executable which may run a
-bit faster.
-
-When you download a LAMMPS tarball, three packages are pre-installed
-in the src directory -- KSPACE, MANYBODY, MOLECULE -- because they are
-so commonly used.  When you download LAMMPS source files from the SVN
-or Git repositories, no packages are pre-installed.
-
-Packages are installed or un-installed by typing
-
-make yes-name
-make no-name :pre
-
-where "name" is the name of the package in lower-case, e.g.  name =
-kspace for the KSPACE package or name = user-atc for the USER-ATC
-package.  You can also type any of these commands:
-
-make yes-all | install all packages
-make no-all | un-install all packages
-make yes-standard or make yes-std | install standard packages
-make no-standard or make no-std| un-install standard packages
-make yes-user | install user packages
-make no-user | un-install user packages
-make yes-lib | install packages that require extra libraries
-make no-lib | un-install packages that require extra libraries
-make yes-ext | install packages that require external libraries
-make no-ext | un-install packages that require external libraries :tb(s=|)
-
-which install/un-install various sets of packages.  Typing "make
-package" will list all the these commands.
-
-NOTE: Installing or un-installing a package works by simply moving
-files back and forth between the main src directory and
-sub-directories with the package name (e.g. src/KSPACE, src/USER-ATC),
-so that the files are included or excluded when LAMMPS is built.
-After you have installed or un-installed a package, you must re-build
-LAMMPS for the action to take effect.
-
-The following make commands help manage files that exist in both the
-src directory and in package sub-directories.  You do not normally
-need to use these commands unless you are editing LAMMPS files or have
-downloaded a patch from the LAMMPS web site.
-
-Typing "make package-status" or "make ps" will show which packages are
-currently installed. For those that are installed, it will list any
-files that are different in the src directory and package
-sub-directory.
-
-Typing "make package-installed" or "make pi" will list which packages are
-currently installed, without listing the status of packages that are not
-installed.
-
-Typing "make package-update" or "make pu" will overwrite src files
-with files from the package sub-directories if the package is
-installed.  It should be used after a patch has been applied, since
-patches only update the files in the package sub-directory, but not
-the src files.
-
-Typing "make package-overwrite" will overwrite files in the package
-sub-directories with src files.
-
-Typing "make package-diff" lists all differences between these files.
-
-Again, just type "make package" to see all of the package-related make
-options.
-
-:line
-
-Packages that require extra libraries :h4,link(start_3_3)
-
-A few of the standard and user packages require extra libraries.  See
-the "Packages"_Packages.html doc pages for two tables of packages
-which indicate which ones require libraries.  For each such package,
-the Section 4 doc page gives details on how to build the extra
-library, including how to download it if necessary.  The basic ideas
-are summarized here.
-
-[System libraries:]
-
-Packages in the standard and user tables of the
-"Packages"_Packages.html doc pages with a "sys" in the last column
-link to system libraries that typically already exist on your machine.
-E.g. the python package links to a system Python library.  If your
-machine does not have the required library, you will have to download
-and install it on your machine, in either the system or user space.
-
-[Internal libraries:]
-
-Packages in the standard and user tables of the
-"Packages"_Packages.html doc pages with an "int" in the last column
-link to internal libraries whose source code is included with LAMMPS,
-in the lib/name directory where name is the package name.  You must
-first build the library in that directory before building LAMMPS with
-that package installed.  E.g. the gpu package links to a library you
-build in the lib/gpu dir.  You can often do the build in one step by
-typing "make lib-name args=..."  from the src dir, with appropriate
-arguments.  You can leave off the args to see a help message.  See the
-"Packages details"_Packages_details.html doc page for details for each
-package.
-
-[External libraries:]
-
-Packages in the standard and user tables of the
-"Packages"_Packages.html doc pages with an "ext" in the last column
-link to external libraries whose source code is not included with
-LAMMPS.  You must first download and install the library before
-building LAMMPS with that package installed.  E.g. the voronoi package
-links to the freely available "Voro++ library"_voro_home2.  You can
-often do the download/build in one step by typing "make lib-name
-args=..." from the src dir, with appropriate arguments.  You can leave
-off the args to see a help message.  See the "Packages
-details"_Packages_details.html doc page for details for each package.
-
-:link(voro_home2,http://math.lbl.gov/voro++)
-
-[Possible errors:]
-
-There are various common errors which can occur when building extra
-libraries or when building LAMMPS with packages that require the extra
-libraries.
-
-If you cannot build the extra library itself successfully, you may
-need to edit or create an appropriate Makefile for your machine, e.g.
-with appropriate compiler or system settings.  Provided makefiles are
-typically in the lib/name directory.  E.g. see the Makefile.* files in
-lib/gpu.
-
-The LAMMPS build often uses settings in a lib/name/Makefile.lammps
-file which either exists in the LAMMPS distribution or is created or
-copied from a lib/name/Makefile.lammps.* file when the library is
-built.  If those settings are not correct for your machine you will
-need to edit or create an appropriate Makefile.lammps file.
-
-Package-specific details for these steps are given on the "Packages
-details"_Packages_details.html doc page and in README files in the
-lib/name directories.
-
-[Compiler options needed for accelerator packages:]
-
-Several packages contain code that is optimized for specific hardware,
-e.g. CPU, KNL, or GPU.  These are the OPT, GPU, KOKKOS, USER-INTEL,
-and USER-OMP packages.  Compiling and linking the source files in
-these accelerator packages for optimal performance requires specific
-settings in the Makefile.machine file you use.
-
-A summary of the Makefile.machine settings needed for each of these
-packages is given on the "Packages"_Packages.html doc pages.  More
-info is given on the doc pages that describe each package in detail:
-
-"USER-INTEL package"_Speed_intel.html
-"GPU package"_Speed_gpu.html
-"KOKKOS package"_Speed_kokkos.html
-"USER-OMP package"_Speed_omp.html
-"OPT package"_Speed_opt.html :all(b)
-
-You can also use or examine the following machine Makefiles in
-src/MAKE/OPTIONS, which include the settings.  Note that the
-USER-INTEL and KOKKOS packages can use settings that build LAMMPS for
-different hardware.  The USER-INTEL package can be compiled for Intel
-CPUs and KNLs; the KOKKOS package builds for CPUs (OpenMP), GPUs
-(CUDA), and Intel KNLs.
-
-Makefile.intel_cpu
-Makefile.intel_phi
-Makefile.kokkos_omp
-Makefile.kokkos_cuda_mpi
-Makefile.kokkos_phi
-Makefile.omp
-Makefile.opt :ul
-
-:line
-
-2.4 Building LAMMPS as a library :h3,link(start_4)
-
-LAMMPS can be built as either a static or shared library, which can
-then be called from another application or a scripting language.  See
-the "Howto couple"_Howto_couple.html doc page for more info on
-coupling LAMMPS to other codes.  See the "Python"_Python.html doc page
-for more info on wrapping and running LAMMPS from Python.
-
-Static library :h4
-
-To build LAMMPS as a static library (*.a file on Linux), type
-
-make foo mode=lib :pre
-
-where foo is the machine name.  This kind of library is typically used
-to statically link a driver application to LAMMPS, so that you can
-insure all dependencies are satisfied at compile time.  This will use
-the ARCHIVE and ARFLAGS settings in src/MAKE/Makefile.foo.  The build
-will create the file liblammps_foo.a which another application can
-link to.  It will also create a soft link liblammps.a, which will
-point to the most recently built static library.
-
-Shared library :h4
-
-To build LAMMPS as a shared library (*.so file on Linux), which can be
-dynamically loaded, e.g. from Python, type
-
-make foo mode=shlib :pre
-
-where foo is the machine name.  This kind of library is required when
-wrapping LAMMPS with Python; see the "Python"_Python.html doc page for
-details.  This will use the SHFLAGS and SHLIBFLAGS settings in
-src/MAKE/Makefile.foo and perform the build in the directory
-Obj_shared_foo.  This is so that each file can be compiled with the
--fPIC flag which is required for inclusion in a shared library.  The
-build will create the file liblammps_foo.so which another application
-can link to dynamically.  It will also create a soft link
-liblammps.so, which will point to the most recently built shared
-library.  This is the file the Python wrapper loads by default.
-
-Note that for a shared library to be usable by a calling program, all
-the auxiliary libraries it depends on must also exist as shared
-libraries.  This will be the case for libraries included with LAMMPS,
-such as the dummy MPI library in src/STUBS or any package libraries in
-lib/packages, since they are always built as shared libraries using
-the -fPIC switch.  However, if a library like MPI or FFTW does not
-exist as a shared library, the shared library build will generate an
-error.  This means you will need to install a shared library version
-of the auxiliary library.  The build instructions for the library
-should tell you how to do this.
-
-Here is an example of such errors when the system FFTW or provided
-lib/colvars library have not been built as shared libraries:
-
-/usr/bin/ld: /usr/local/lib/libfftw3.a(mapflags.o): relocation
-R_X86_64_32 against '.rodata' can not be used when making a shared
-object; recompile with -fPIC
-/usr/local/lib/libfftw3.a: could not read symbols: Bad value :pre
-
-/usr/bin/ld: ../../lib/colvars/libcolvars.a(colvarmodule.o):
-relocation R_X86_64_32 against '__pthread_key_create' can not be used
-when making a shared object; recompile with -fPIC
-../../lib/colvars/libcolvars.a: error adding symbols: Bad value :pre
-
-As an example, here is how to build and install the "MPICH
-library"_mpich, a popular open-source version of MPI, distributed by
-Argonne National Labs, as a shared library in the default
-/usr/local/lib location:
-
-:link(mpich,http://www-unix.mcs.anl.gov/mpi)
-
-./configure --enable-shared
-make
-make install :pre
-
-You may need to use "sudo make install" in place of the last line if
-you do not have write privileges for /usr/local/lib.  The end result
-should be the file /usr/local/lib/libmpich.so.
-
-[Additional requirement for using a shared library:] :h4
-
-The operating system finds shared libraries to load at run-time using
-the environment variable LD_LIBRARY_PATH.  So you may wish to copy the
-file src/liblammps.so or src/liblammps_g++.so (for example) to a place
-the system can find it by default, such as /usr/local/lib, or you may
-wish to add the LAMMPS src directory to LD_LIBRARY_PATH, so that the
-current version of the shared library is always available to programs
-that use it.
-
-For the csh or tcsh shells, you would add something like this to your
-~/.cshrc file:
-
-setenv LD_LIBRARY_PATH $\{LD_LIBRARY_PATH\}:/home/sjplimp/lammps/src :pre
-
-Calling the LAMMPS library :h4
-
-Either flavor of library (static or shared) allows one or more LAMMPS
-objects to be instantiated from the calling program.
-
-When used from a C++ program, all of LAMMPS is wrapped in a LAMMPS_NS
-namespace; you can safely use any of its classes and methods from
-within the calling code, as needed.
-
-When used from a C or Fortran program or a scripting language like
-Python, the library has a simple function-style interface, provided in
-src/library.cpp and src/library.h.
-
-See the sample codes in examples/COUPLE/simple for examples of C++ and
-C and Fortran codes that invoke LAMMPS thru its library interface.
-There are other examples as well in the COUPLE directory which use
-coupling ideas discussed on the "Howto couple"_Howto_couple.html doc
-page.  See the "Python"_Python.html doc page for a description of the
-Python wrapper provided with LAMMPS that operates through the LAMMPS
-library interface.
-
-The files src/library.cpp and library.h define the C-style API for
-using LAMMPS as a library.  See the "Howto library"_Howto_library.html
-doc page for a description of the interface and how to extend it for
-your needs.
-
-:line
-
-2.5 Running LAMMPS :h3,link(start_5)
-
-By default, LAMMPS runs by reading commands from standard input.  Thus
-if you run the LAMMPS executable by itself, e.g.
-
-lmp_linux :pre
-
-it will simply wait, expecting commands from the keyboard.  Typically
-you should put commands in an input script and use I/O redirection,
-e.g.
-
-lmp_linux < in.file :pre
-
-For parallel environments this should also work.  If it does not, use
-the '-in' command-line switch, e.g.
-
-lmp_linux -in in.file :pre
-
-The "Commands"_Commands.html doc page describes how input scripts are
-structured and what commands they contain.
-
-You can test LAMMPS on any of the sample inputs provided in the
-examples or bench directory.  Input scripts are named in.* and sample
-outputs are named log.*.name.P where name is a machine and P is the
-number of processors it was run on.
-
-Here is how you might run a standard Lennard-Jones benchmark on a
-Linux box, using mpirun to launch a parallel job:
-
-cd src
-make linux
-cp lmp_linux ../bench
-cd ../bench
-mpirun -np 4 lmp_linux -in in.lj :pre
-
-See "this page"_bench for timings for this and the other benchmarks on
-various platforms.  Note that some of the example scripts require
-LAMMPS to be built with one or more of its optional packages.
-
-:link(bench,http://lammps.sandia.gov/bench.html)
-
-:line
-
-On a Windows box, you can skip making LAMMPS and simply download an
-installer package from "here"_http://packages.lammps.org/windows.html
-
-For running the non-MPI executable, follow these steps:
-
-Get a command prompt by going to Start->Run... ,
-then typing "cmd". :ulb,l
-
-Move to the directory where you have your input, e.g. a copy of
-the [in.lj] input from the bench folder. (e.g. by typing: cd "Documents"). :l
-
-At the command prompt, type "lmp_serial -in in.lj", replacing [in.lj]
-with the name of your LAMMPS input script. :l
-
-The serial executable includes support for multi-threading
-parallelization from the styles in the USER-OMP packages.
-
-To run with, e.g. 4 threads, type "lmp_serial -in in.lj -pk omp 4 -sf omp"
-:ule
-
-For the MPI version, which allows you to run LAMMPS under Windows with
-the more general message passing parallel library (LAMMPS has been
-designed from ground up to use MPI efficiently), follow these steps:
-
-Download and install a compatible MPI library binary package:
-for 32-bit Windows
-"mpich2-1.4.1p1-win-ia32.msi"_download.lammps.org/thirdparty/mpich2-1.4.1p1-win-ia32.msi
-and for 64-bit Windows
-"mpich2-1.4.1p1-win-x86-64.msi"_download.lammps.org/thirdparty/mpich2-1.4.1p1-win-x86-64.msi
-:ulb,l
-
-The LAMMPS Windows installer packages will automatically adjust your
-path for the default location of this MPI package. After the installation
-of the MPICH2 software, it needs to be integrated into the system.
-For this you need to start a Command Prompt in {Administrator Mode}
-(right click on the icon and select it). Change into the MPICH2
-installation directory, then into the subdirectory [bin] and execute
-[smpd.exe -install]. Exit the command window.
-
-Get a new, regular command prompt by going to Start->Run... ,
-then typing "cmd". :l
-
-Move to the directory where you have your input file
-(e.g. by typing: cd "Documents"). :l
-
-Then type something like this:
-
-mpiexec -localonly 4 lmp_mpi -in in.lj :pre
-or
-
-mpiexec -np 4 lmp_mpi -in in.lj :pre
-
-replacing [in.lj] with the name of your LAMMPS input script. For the latter
-case, you may be prompted to enter your password. :l
-
-In this mode, output may not immediately show up on the screen, so if
-your input script takes a long time to execute, you may need to be
-patient before the output shows up. :l
-
-The parallel executable can also run on a single processor by typing
-something like:
-
-lmp_mpi -in in.lj :pre
-
-And the parallel executable also includes OpenMP multi-threading, which
-can be combined with MPI using something like:
-
-mpiexec -localonly 2 lmp_mpi -in in.lj -pk omp 2 -sf omp :pre
-
-:ule
-
-:line
-
-The screen output from LAMMPS is described in a section below.  As it
-runs, LAMMPS also writes a log.lammps file with the same information.
-
-Note that this sequence of commands copies the LAMMPS executable
-(lmp_linux) to the directory with the input files.  This may not be
-necessary, but some versions of MPI reset the working directory to
-where the executable is, rather than leave it as the directory where
-you launch mpirun from (if you launch lmp_linux on its own and not
-under mpirun).  If that happens, LAMMPS will look for additional input
-files and write its output files to the executable directory, rather
-than your working directory, which is probably not what you want.
-
-If LAMMPS encounters errors in the input script or while running a
-simulation it will print an ERROR message and stop or a WARNING
-message and continue.  See the "Errors"_Errors.html doc page for a
-discussion of the various kinds of errors LAMMPS can or can't detect,
-a list of all ERROR and WARNING messages, and what to do about them.
-
-LAMMPS can run a problem on any number of processors, including a
-single processor.  In theory you should get identical answers on any
-number of processors and on any machine.  In practice, numerical
-round-off can cause slight differences and eventual divergence of
-molecular dynamics phase space trajectories.
-
-LAMMPS can run as large a problem as will fit in the physical memory
-of one or more processors.  If you run out of memory, you must run on
-more processors or setup a smaller problem.
-
-:line
-
-2.6 Command-line options :h3,link(start_6)
-
-At run time, LAMMPS recognizes several optional command-line switches
-which may be used in any order.  Either the full word or a one-or-two
-letter abbreviation can be used:
-
--e or -echo
--h or -help
--i or -in
--k or -kokkos
--l or -log
--nc or -nocite
--pk or -package
--p or -partition
--pl or -plog
--ps or -pscreen
--r or -restart
--ro or -reorder
--sc or -screen
--sf or -suffix
--v or -var :ul
-
-For example, lmp_ibm might be launched as follows:
-
-mpirun -np 16 lmp_ibm -v f tmp.out -l my.log -sc none -in in.alloy
-mpirun -np 16 lmp_ibm -var f tmp.out -log my.log -screen none -in in.alloy :pre
-
-Here are the details on the options:
-
--echo style :pre
-
-Set the style of command echoing.  The style can be {none} or {screen}
-or {log} or {both}.  Depending on the style, each command read from
-the input script will be echoed to the screen and/or logfile.  This
-can be useful to figure out which line of your script is causing an
-input error.  The default value is {log}.  The echo style can also be
-set by using the "echo"_echo.html command in the input script itself.
-
--help :pre
-
-Print a brief help summary and a list of options compiled into this
-executable for each LAMMPS style (atom_style, fix, compute,
-pair_style, bond_style, etc).  This can tell you if the command you
-want to use was included via the appropriate package at compile time.
-LAMMPS will print the info and immediately exit if this switch is
-used.
-
--in file :pre
-
-Specify a file to use as an input script.  This is an optional switch
-when running LAMMPS in one-partition mode.  If it is not specified,
-LAMMPS reads its script from standard input, typically from a script
-via I/O redirection; e.g. lmp_linux < in.run.  I/O redirection should
-also work in parallel, but if it does not (in the unlikely case that
-an MPI implementation does not support it), then use the -in flag.
-Note that this is a required switch when running LAMMPS in
-multi-partition mode, since multiple processors cannot all read from
-stdin.
-
--kokkos on/off keyword/value ... :pre
-
-Explicitly enable or disable KOKKOS support, as provided by the KOKKOS
-package.  Even if LAMMPS is built with this package, as described
-above in "Section 2.3"_#start_3, this switch must be set to enable
-running with the KOKKOS-enabled styles the package provides.  If the
-switch is not set (the default), LAMMPS will operate as if the KOKKOS
-package were not installed; i.e. you can run standard LAMMPS or with
-the GPU or USER-OMP packages, for testing or benchmarking purposes.
-
-Additional optional keyword/value pairs can be specified which
-determine how Kokkos will use the underlying hardware on your
-platform.  These settings apply to each MPI task you launch via the
-"mpirun" or "mpiexec" command.  You may choose to run one or more MPI
-tasks per physical node.  Note that if you are running on a desktop
-machine, you typically have one physical node.  On a cluster or
-supercomputer there may be dozens or 1000s of physical nodes.
-
-Either the full word or an abbreviation can be used for the keywords.
-Note that the keywords do not use a leading minus sign.  I.e. the
-keyword is "t", not "-t".  Also note that each of the keywords has a
-default setting.  Example of when to use these options and what
-settings to use on different platforms is given on the "Speed
-kokkos"_Speed_kokkos.html doc page.
-
-d or device
-g or gpus
-t or threads
-n or numa :ul
-
-device Nd :pre
-
-This option is only relevant if you built LAMMPS with CUDA=yes, you
-have more than one GPU per node, and if you are running with only one
-MPI task per node.  The Nd setting is the ID of the GPU on the node to
-run on.  By default Nd = 0.  If you have multiple GPUs per node, they
-have consecutive IDs numbered as 0,1,2,etc.  This setting allows you
-to launch multiple independent jobs on the node, each with a single
-MPI task per node, and assign each job to run on a different GPU.
-
-gpus Ng Ns :pre
-
-This option is only relevant if you built LAMMPS with CUDA=yes, you
-have more than one GPU per node, and you are running with multiple MPI
-tasks per node (up to one per GPU).  The Ng setting is how many GPUs
-you will use.  The Ns setting is optional.  If set, it is the ID of a
-GPU to skip when assigning MPI tasks to GPUs.  This may be useful if
-your desktop system reserves one GPU to drive the screen and the rest
-are intended for computational work like running LAMMPS.  By default
-Ng = 1 and Ns is not set.
-
-Depending on which flavor of MPI you are running, LAMMPS will look for
-one of these 3 environment variables
-
-SLURM_LOCALID (various MPI variants compiled with SLURM support)
-MV2_COMM_WORLD_LOCAL_RANK (Mvapich)
-OMPI_COMM_WORLD_LOCAL_RANK (OpenMPI) :pre
-
-which are initialized by the "srun", "mpirun" or "mpiexec" commands.
-The environment variable setting for each MPI rank is used to assign a
-unique GPU ID to the MPI task.
-
-threads Nt :pre
-
-This option assigns Nt number of threads to each MPI task for
-performing work when Kokkos is executing in OpenMP or pthreads mode.
-The default is Nt = 1, which essentially runs in MPI-only mode.  If
-there are Np MPI tasks per physical node, you generally want Np*Nt =
-the number of physical cores per node, to use your available hardware
-optimally.  This also sets the number of threads used by the host when
-LAMMPS is compiled with CUDA=yes.
-
-numa Nm :pre
-
-This option is only relevant when using pthreads with hwloc support.
-In this case Nm defines the number of NUMA regions (typically sockets)
-on a node which will be utilized by a single MPI rank.  By default Nm
-= 1.  If this option is used the total number of worker-threads per
-MPI rank is threads*numa.  Currently it is always almost better to
-assign at least one MPI rank per NUMA region, and leave numa set to
-its default value of 1. This is because letting a single process span
-multiple NUMA regions induces a significant amount of cross NUMA data
-traffic which is slow.
-
--log file :pre
-
-Specify a log file for LAMMPS to write status information to.  In
-one-partition mode, if the switch is not used, LAMMPS writes to the
-file log.lammps.  If this switch is used, LAMMPS writes to the
-specified file.  In multi-partition mode, if the switch is not used, a
-log.lammps file is created with hi-level status information.  Each
-partition also writes to a log.lammps.N file where N is the partition
-ID.  If the switch is specified in multi-partition mode, the hi-level
-logfile is named "file" and each partition also logs information to a
-file.N.  For both one-partition and multi-partition mode, if the
-specified file is "none", then no log files are created.  Using a
-"log"_log.html command in the input script will override this setting.
-Option -plog will override the name of the partition log files file.N.
-
--nocite :pre
-
-Disable writing the log.cite file which is normally written to list
-references for specific cite-able features used during a LAMMPS run.
-See the "citation page"_http://lammps.sandia.gov/cite.html for more
-details.
-
--package style args .... :pre
-
-Invoke the "package"_package.html command with style and args.  The
-syntax is the same as if the command appeared at the top of the input
-script.  For example "-package gpu 2" or "-pk gpu 2" is the same as
-"package gpu 2"_package.html in the input script.  The possible styles
-and args are documented on the "package"_package.html doc page.  This
-switch can be used multiple times, e.g. to set options for the
-USER-INTEL and USER-OMP packages which can be used together.
-
-Along with the "-suffix" command-line switch, this is a convenient
-mechanism for invoking accelerator packages and their options without
-having to edit an input script.
-
--partition 8x2 4 5 ... :pre
-
-Invoke LAMMPS in multi-partition mode.  When LAMMPS is run on P
-processors and this switch is not used, LAMMPS runs in one partition,
-i.e. all P processors run a single simulation.  If this switch is
-used, the P processors are split into separate partitions and each
-partition runs its own simulation.  The arguments to the switch
-specify the number of processors in each partition.  Arguments of the
-form MxN mean M partitions, each with N processors.  Arguments of the
-form N mean a single partition with N processors.  The sum of
-processors in all partitions must equal P.  Thus the command
-"-partition 8x2 4 5" has 10 partitions and runs on a total of 25
-processors.
-
-Running with multiple partitions can be useful for running
-"multi-replica simulations"_Howto_replica.html, where each replica
-runs on on one or a few processors.  Note that with MPI installed on a
-machine (e.g. your desktop), you can run on more (virtual) processors
-than you have physical processors.
-
-To run multiple independent simulations from one input script, using
-multiple partitions, see the "Howto multiple"_Howto_multiple.html doc
-page.  World- and universe-style "variables"_variable.html are useful
-in this context.
-
--plog file :pre
-
-Specify the base name for the partition log files, so partition N
-writes log information to file.N. If file is none, then no partition
-log files are created.  This overrides the filename specified in the
--log command-line option.  This option is useful when working with
-large numbers of partitions, allowing the partition log files to be
-suppressed (-plog none) or placed in a sub-directory (-plog
-replica_files/log.lammps) If this option is not used the log file for
-partition N is log.lammps.N or whatever is specified by the -log
-command-line option.
-
--pscreen file :pre
-
-Specify the base name for the partition screen file, so partition N
-writes screen information to file.N. If file is none, then no
-partition screen files are created.  This overrides the filename
-specified in the -screen command-line option.  This option is useful
-when working with large numbers of partitions, allowing the partition
-screen files to be suppressed (-pscreen none) or placed in a
-sub-directory (-pscreen replica_files/screen).  If this option is not
-used the screen file for partition N is screen.N or whatever is
-specified by the -screen command-line option.
-
--restart restartfile {remap} datafile keyword value ... :pre
-
-Convert the restart file into a data file and immediately exit.  This
-is the same operation as if the following 2-line input script were
-run:
-
-read_restart restartfile {remap}
-write_data datafile keyword value ... :pre
-
-Note that the specified restartfile and datafile can have wild-card
-characters ("*",%") as described by the
-"read_restart"_read_restart.html and "write_data"_write_data.html
-commands.  But a filename such as file.* will need to be enclosed in
-quotes to avoid shell expansion of the "*" character.
-
-Note that following restartfile, the optional flag {remap} can be
-used.  This has the same effect as adding it to the
-"read_restart"_read_restart.html command, as explained on its doc
-page.  This is only useful if the reading of the restart file triggers
-an error that atoms have been lost.  In that case, use of the remap
-flag should allow the data file to still be produced.
-
-Also note that following datafile, the same optional keyword/value
-pairs can be listed as used by the "write_data"_write_data.html
-command.
-
--reorder nth N
--reorder custom filename :pre
-
-Reorder the processors in the MPI communicator used to instantiate
-LAMMPS, in one of several ways.  The original MPI communicator ranks
-all P processors from 0 to P-1.  The mapping of these ranks to
-physical processors is done by MPI before LAMMPS begins.  It may be
-useful in some cases to alter the rank order.  E.g. to insure that
-cores within each node are ranked in a desired order.  Or when using
-the "run_style verlet/split"_run_style.html command with 2 partitions
-to insure that a specific Kspace processor (in the 2nd partition) is
-matched up with a specific set of processors in the 1st partition.
-See the "Speed tips"_Speed_tips.html doc page for more details.
-
-If the keyword {nth} is used with a setting {N}, then it means every
-Nth processor will be moved to the end of the ranking.  This is useful
-when using the "run_style verlet/split"_run_style.html command with 2
-partitions via the -partition command-line switch.  The first set of
-processors will be in the first partition, the 2nd set in the 2nd
-partition.  The -reorder command-line switch can alter this so that
-the 1st N procs in the 1st partition and one proc in the 2nd partition
-will be ordered consecutively, e.g. as the cores on one physical node.
-This can boost performance.  For example, if you use "-reorder nth 4"
-and "-partition 9 3" and you are running on 12 processors, the
-processors will be reordered from
-
-0 1 2 3 4 5 6 7 8 9 10 11 :pre
-
-to
-
-0 1 2 4 5 6 8 9 10 3 7 11 :pre
-
-so that the processors in each partition will be
-
-0 1 2 4 5 6 8 9 10
-3 7 11 :pre
-
-See the "processors" command for how to insure processors from each
-partition could then be grouped optimally for quad-core nodes.
-
-If the keyword is {custom}, then a file that specifies a permutation
-of the processor ranks is also specified.  The format of the reorder
-file is as follows.  Any number of initial blank or comment lines
-(starting with a "#" character) can be present.  These should be
-followed by P lines of the form:
-
-I J :pre
-
-where P is the number of processors LAMMPS was launched with.  Note
-that if running in multi-partition mode (see the -partition switch
-above) P is the total number of processors in all partitions.  The I
-and J values describe a permutation of the P processors.  Every I and
-J should be values from 0 to P-1 inclusive.  In the set of P I values,
-every proc ID should appear exactly once.  Ditto for the set of P J
-values.  A single I,J pairing means that the physical processor with
-rank I in the original MPI communicator will have rank J in the
-reordered communicator.
-
-Note that rank ordering can also be specified by many MPI
-implementations, either by environment variables that specify how to
-order physical processors, or by config files that specify what
-physical processors to assign to each MPI rank.  The -reorder switch
-simply gives you a portable way to do this without relying on MPI
-itself.  See the "processors out"_processors.html command for how
-to output info on the final assignment of physical processors to
-the LAMMPS simulation domain.
-
--screen file :pre
-
-Specify a file for LAMMPS to write its screen information to.  In
-one-partition mode, if the switch is not used, LAMMPS writes to the
-screen.  If this switch is used, LAMMPS writes to the specified file
-instead and you will see no screen output.  In multi-partition mode,
-if the switch is not used, hi-level status information is written to
-the screen.  Each partition also writes to a screen.N file where N is
-the partition ID.  If the switch is specified in multi-partition mode,
-the hi-level screen dump is named "file" and each partition also
-writes screen information to a file.N.  For both one-partition and
-multi-partition mode, if the specified file is "none", then no screen
-output is performed. Option -pscreen will override the name of the
-partition screen files file.N.
-
--suffix style args :pre
-
-Use variants of various styles if they exist.  The specified style can
-be {cuda}, {gpu}, {intel}, {kk}, {omp}, {opt}, or {hybrid}.  These
-refer to optional packages that LAMMPS can be built with, as described
-above in "Section 2.3"_#start_3.  The "gpu" style corresponds to the
-GPU package, the "intel" style to the USER-INTEL package, the "kk"
-style to the KOKKOS package, the "opt" style to the OPT package, and
-the "omp" style to the USER-OMP package. The hybrid style is the only
-style that accepts arguments. It allows for two packages to be
-specified. The first package specified is the default and will be used
-if it is available. If no style is available for the first package,
-the style for the second package will be used if available. For
-example, "-suffix hybrid intel omp" will use styles from the
-USER-INTEL package if they are installed and available, but styles for
-the USER-OMP package otherwise.
-
-Along with the "-package" command-line switch, this is a convenient
-mechanism for invoking accelerator packages and their options without
-having to edit an input script.
-
-As an example, all of the packages provide a "pair_style
-lj/cut"_pair_lj.html variant, with style names lj/cut/gpu,
-lj/cut/intel, lj/cut/kk, lj/cut/omp, and lj/cut/opt.  A variant style
-can be specified explicitly in your input script, e.g. pair_style
-lj/cut/gpu.  If the -suffix switch is used the specified suffix
-(gpu,intel,kk,omp,opt) is automatically appended whenever your input
-script command creates a new "atom"_atom_style.html,
-"pair"_pair_style.html, "fix"_fix.html, "compute"_compute.html, or
-"run"_run_style.html style.  If the variant version does not exist,
-the standard version is created.
-
-For the GPU package, using this command-line switch also invokes the
-default GPU settings, as if the command "package gpu 1" were used at
-the top of your input script.  These settings can be changed by using
-the "-package gpu" command-line switch or the "package
-gpu"_package.html command in your script.
-
-For the USER-INTEL package, using this command-line switch also
-invokes the default USER-INTEL settings, as if the command "package
-intel 1" were used at the top of your input script.  These settings
-can be changed by using the "-package intel" command-line switch or
-the "package intel"_package.html command in your script. If the
-USER-OMP package is also installed, the hybrid style with "intel omp"
-arguments can be used to make the omp suffix a second choice, if a
-requested style is not available in the USER-INTEL package.  It will
-also invoke the default USER-OMP settings, as if the command "package
-omp 0" were used at the top of your input script.  These settings can
-be changed by using the "-package omp" command-line switch or the
-"package omp"_package.html command in your script.
-
-For the KOKKOS package, using this command-line switch also invokes
-the default KOKKOS settings, as if the command "package kokkos" were
-used at the top of your input script.  These settings can be changed
-by using the "-package kokkos" command-line switch or the "package
-kokkos"_package.html command in your script.
-
-For the OMP package, using this command-line switch also invokes the
-default OMP settings, as if the command "package omp 0" were used at
-the top of your input script.  These settings can be changed by using
-the "-package omp" command-line switch or the "package
-omp"_package.html command in your script.
-
-The "suffix"_suffix.html command can also be used within an input
-script to set a suffix, or to turn off or back on any suffix setting
-made via the command line.
-
--var name value1 value2 ... :pre
-
-Specify a variable that will be defined for substitution purposes when
-the input script is read.  This switch can be used multiple times to
-define multiple variables.  "Name" is the variable name which can be a
-single character (referenced as $x in the input script) or a full
-string (referenced as $\{abc\}).  An "index-style
-variable"_variable.html will be created and populated with the
-subsequent values, e.g. a set of filenames.  Using this command-line
-option is equivalent to putting the line "variable name index value1
-value2 ..."  at the beginning of the input script.  Defining an index
-variable as a command-line argument overrides any setting for the same
-index variable in the input script, since index variables cannot be
-re-defined.  See the "variable"_variable.html command for more info on
-defining index and other kinds of variables and the "Commands
-parse"_Commands_parse.html page for more info on using variables in
-input scripts.
-
-NOTE: Currently, the command-line parser looks for arguments that
-start with "-" to indicate new switches.  Thus you cannot specify
-multiple variable values if any of they start with a "-", e.g. a
-negative numeric value.  It is OK if the first value1 starts with a
-"-", since it is automatically skipped.
-
-:line
-
-2.7 LAMMPS screen output :h3,link(start_7)
-
-As LAMMPS reads an input script, it prints information to both the
-screen and a log file about significant actions it takes to setup a
-simulation.  When the simulation is ready to begin, LAMMPS performs
-various initializations and prints the amount of memory (in MBytes per
-processor) that the simulation requires.  It also prints details of
-the initial thermodynamic state of the system.  During the run itself,
-thermodynamic information is printed periodically, every few
-timesteps.  When the run concludes, LAMMPS prints the final
-thermodynamic state and a total run time for the simulation.  It then
-appends statistics about the CPU time and storage requirements for the
-simulation.  An example set of statistics is shown here:
-
-Loop time of 2.81192 on 4 procs for 300 steps with 2004 atoms :pre
-
-Performance: 18.436 ns/day  1.302 hours/ns  106.689 timesteps/s
-97.0% CPU use with 4 MPI tasks x no OpenMP threads :pre
-
-MPI task timings breakdown:
-Section |  min time  |  avg time  |  max time  |%varavg| %total
----------------------------------------------------------------
-Pair    | 1.9808     | 2.0134     | 2.0318     |   1.4 | 71.60
-Bond    | 0.0021894  | 0.0060319  | 0.010058   |   4.7 |  0.21
-Kspace  | 0.3207     | 0.3366     | 0.36616    |   3.1 | 11.97
-Neigh   | 0.28411    | 0.28464    | 0.28516    |   0.1 | 10.12
-Comm    | 0.075732   | 0.077018   | 0.07883    |   0.4 |  2.74
-Output  | 0.00030518 | 0.00042665 | 0.00078821 |   1.0 |  0.02
-Modify  | 0.086606   | 0.086631   | 0.086668   |   0.0 |  3.08
-Other   |            | 0.007178   |            |       |  0.26 :pre
-
-Nlocal:    501 ave 508 max 490 min
-Histogram: 1 0 0 0 0 0 1 1 0 1
-Nghost:    6586.25 ave 6628 max 6548 min
-Histogram: 1 0 1 0 0 0 1 0 0 1
-Neighs:    177007 ave 180562 max 170212 min
-Histogram: 1 0 0 0 0 0 0 1 1 1 :pre
-
-Total # of neighbors = 708028
-Ave neighs/atom = 353.307
-Ave special neighs/atom = 2.34032
-Neighbor list builds = 26
-Dangerous builds = 0 :pre
-
-The first section provides a global loop timing summary. The {loop time}
-is the total wall time for the section.  The {Performance} line is
-provided for convenience to help predicting the number of loop
-continuations required and for comparing performance with other,
-similar MD codes.  The {CPU use} line provides the CPU utilization per
-MPI task; it should be close to 100% times the number of OpenMP
-threads (or 1 of no OpenMP). Lower numbers correspond to delays due
-to file I/O or insufficient thread utilization.
-
-The MPI task section gives the breakdown of the CPU run time (in
-seconds) into major categories:
-
-{Pair} stands for all non-bonded force computation
-{Bond} stands for bonded interactions: bonds, angles, dihedrals, impropers
-{Kspace} stands for reciprocal space interactions: Ewald, PPPM, MSM
-{Neigh} stands for neighbor list construction
-{Comm} stands for communicating atoms and their properties
-{Output} stands for writing dumps and thermo output
-{Modify} stands for fixes and computes called by them
-{Other} is the remaining time :ul
-
-For each category, there is a breakdown of the least, average and most
-amount of wall time a processor spent on this section. Also you have the
-variation from the average time. Together these numbers allow to gauge
-the amount of load imbalance in this segment of the calculation. Ideally
-the difference between minimum, maximum and average is small and thus
-the variation from the average close to zero. The final column shows
-the percentage of the total loop time is spent in this section.
-
-When using the "timer full"_timer.html setting, an additional column
-is present that also prints the CPU utilization in percent. In
-addition, when using {timer full} and the "package omp"_package.html
-command are active, a similar timing summary of time spent in threaded
-regions to monitor thread utilization and load balance is provided. A
-new entry is the {Reduce} section, which lists the time spent in
-reducing the per-thread data elements to the storage for non-threaded
-computation. These thread timings are taking from the first MPI rank
-only and and thus, as the breakdown for MPI tasks can change from MPI
-rank to MPI rank, this breakdown can be very different for individual
-ranks. Here is an example output for this section:
-
-Thread timings breakdown (MPI rank 0):
-Total threaded time 0.6846 / 90.6%
-Section |  min time  |  avg time  |  max time  |%varavg| %total
----------------------------------------------------------------
-Pair    | 0.5127     | 0.5147     | 0.5167     |   0.3 | 75.18
-Bond    | 0.0043139  | 0.0046779  | 0.0050418  |   0.5 |  0.68
-Kspace  | 0.070572   | 0.074541   | 0.07851    |   1.5 | 10.89
-Neigh   | 0.084778   | 0.086969   | 0.089161   |   0.7 | 12.70
-Reduce  | 0.0036485  | 0.003737   | 0.0038254  |   0.1 |  0.55 :pre
-
-The third section lists the number of owned atoms (Nlocal), ghost atoms
-(Nghost), and pair-wise neighbors stored per processor.  The max and min
-values give the spread of these values across processors with a 10-bin
-histogram showing the distribution. The total number of histogram counts
-is equal to the number of processors.
-
-The last section gives aggregate statistics for pair-wise neighbors
-and special neighbors that LAMMPS keeps track of (see the
-"special_bonds"_special_bonds.html command).  The number of times
-neighbor lists were rebuilt during the run is given as well as the
-number of potentially "dangerous" rebuilds.  If atom movement
-triggered neighbor list rebuilding (see the
-"neigh_modify"_neigh_modify.html command), then dangerous
-reneighborings are those that were triggered on the first timestep
-atom movement was checked for.  If this count is non-zero you may wish
-to reduce the delay factor to insure no force interactions are missed
-by atoms moving beyond the neighbor skin distance before a rebuild
-takes place.
-
-If an energy minimization was performed via the
-"minimize"_minimize.html command, additional information is printed,
-e.g.
-
-Minimization stats:
-  Stopping criterion = linesearch alpha is zero
-  Energy initial, next-to-last, final =
-         -6372.3765206     -8328.46998942     -8328.46998942
-  Force two-norm initial, final = 1059.36 5.36874
-  Force max component initial, final = 58.6026 1.46872
-  Final line search alpha, max atom move = 2.7842e-10 4.0892e-10
-  Iterations, force evaluations = 701 1516 :pre
-
-The first line prints the criterion that determined the minimization
-to be completed. The third line lists the initial and final energy,
-as well as the energy on the next-to-last iteration.  The next 2 lines
-give a measure of the gradient of the energy (force on all atoms).
-The 2-norm is the "length" of this force vector; the inf-norm is the
-largest component. Then some information about the line search and
-statistics on how many iterations and force-evaluations the minimizer
-required.  Multiple force evaluations are typically done at each
-iteration to perform a 1d line minimization in the search direction.
-
-If a "kspace_style"_kspace_style.html long-range Coulombics solve was
-performed during the run (PPPM, Ewald), then additional information is
-printed, e.g.
-
-FFT time (% of Kspce) = 0.200313 (8.34477)
-FFT Gflps 3d 1d-only = 2.31074 9.19989 :pre
-
-The first line gives the time spent doing 3d FFTs (4 per timestep) and
-the fraction it represents of the total KSpace time (listed above).
-Each 3d FFT requires computation (3 sets of 1d FFTs) and communication
-(transposes).  The total flops performed is 5Nlog_2(N), where N is the
-number of points in the 3d grid.  The FFTs are timed with and without
-the communication and a Gflop rate is computed.  The 3d rate is with
-communication; the 1d rate is without (just the 1d FFTs).  Thus you
-can estimate what fraction of your FFT time was spent in
-communication, roughly 75% in the example above.
-
-:line
-
-2.8 Tips for users of previous LAMMPS versions :h3,link(start_8)
-
-The current C++ began with a complete rewrite of LAMMPS 2001, which
-was written in F90.  Features of earlier versions of LAMMPS are listed
-on the "History page"_http://lammps.sandia.gov/history.html of the
-LAMMPS website.  The F90 and F77 versions (2001 and 99) are also
-freely distributed as open-source codes; check the "History
-page"_http://lammps.sandia.gov/history.html of the LAMMPS website for
-info about those versions.  The 99 and 2001 versions are no longer
-under active development; they do not have all the features of C++
-LAMMPS.
-
-If you are a previous user of LAMMPS 2001, these are the most
-significant changes you will notice in C++ LAMMPS:
-
-(1) The names and arguments of many input script commands have
-changed.  All commands are now a single word (e.g. read_data instead
-of read data).
-
-(2) All the functionality of LAMMPS 2001 is included in C++ LAMMPS,
-but you may need to specify the relevant commands in different ways.
-
-(3) The format of the data file can be streamlined for some problems.
-See the "read_data"_read_data.html command for details.  The data file
-section "Nonbond Coeff" has been renamed to "Pair Coeff" in C++ LAMMPS.
-
-(4) Binary restart files written by LAMMPS 2001 cannot be read by C++
-LAMMPS with a "read_restart"_read_restart.html command.  This is
-because they were output by F90 which writes in a different binary
-format than C or C++ writes or reads.  Use the {restart2data} tool
-provided with LAMMPS 2001 to convert the 2001 restart file to a text
-data file.  Then edit the data file as necessary before using the C++
-LAMMPS "read_data"_read_data.html command to read it in.
-
-(5) There are numerous small numerical changes in C++ LAMMPS that mean
-you will not get identical answers when comparing to a 2001 run.
-However, your initial thermodynamic energy and MD trajectory should be
-close if you have setup the problem for both codes the same.
-- 
GitLab


From cfc1b3a82399f636197d3271deeaaf522519f681 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Thu, 9 Aug 2018 10:20:02 -0600
Subject: [PATCH 172/243] more changes induced by removing Section_start.txt

---
 doc/src/Errors_common.txt                     |    6 +-
 doc/src/Errors_messages.txt                   |    4 +-
 doc/src/Examples.txt                          |    8 +-
 doc/src/Howto.txt                             |    6 +-
 doc/src/Howto_couple.txt                      |   21 +-
 doc/src/Howto_library.txt                     |   19 +-
 doc/src/Howto_multiple.txt                    |    3 +-
 doc/src/Howto_replica.txt                     |   17 +-
 doc/src/Howto_restart.txt                     |    4 +-
 doc/src/Howto_temperature.txt                 |   11 +-
 doc/src/Manual.txt                            |   25 +-
 doc/src/Modify_contribute.txt                 |   15 +-
 doc/src/Packages.txt                          |    8 +-
 doc/src/Packages_details.txt                  | 1175 ++---------------
 doc/src/Python_shlib.txt                      |   13 +-
 doc/src/Python_test.txt                       |    8 +-
 doc/src/Speed_gpu.txt                         |   18 +-
 doc/src/Speed_intel.txt                       |   71 +-
 doc/src/Speed_kokkos.txt                      |   73 +-
 doc/src/Speed_measure.txt                     |    4 +-
 doc/src/Speed_omp.txt                         |   21 +-
 doc/src/Speed_opt.txt                         |    4 +-
 doc/src/Speed_packages.txt                    |    6 +-
 doc/src/angle_charmm.txt                      |   12 +-
 doc/src/angle_class2.txt                      |   12 +-
 doc/src/angle_cosine.txt                      |   12 +-
 doc/src/angle_cosine_buck6d.txt               |    4 +-
 doc/src/angle_cosine_delta.txt                |   12 +-
 doc/src/angle_cosine_periodic.txt             |   12 +-
 doc/src/angle_cosine_shift.txt                |   19 +-
 doc/src/angle_cosine_shift_exp.txt            |   12 +-
 doc/src/angle_cosine_squared.txt              |   12 +-
 doc/src/angle_dipole.txt                      |   12 +-
 doc/src/angle_fourier.txt                     |   12 +-
 doc/src/angle_fourier_simple.txt              |   12 +-
 doc/src/angle_harmonic.txt                    |   12 +-
 doc/src/angle_hybrid.txt                      |    4 +-
 doc/src/angle_quartic.txt                     |   12 +-
 doc/src/angle_sdk.txt                         |    4 +-
 doc/src/angle_style.txt                       |    7 +-
 doc/src/angle_table.txt                       |   12 +-
 doc/src/atom_modify.txt                       |    6 +-
 doc/src/atom_style.txt                        |   12 +-
 doc/src/balance.txt                           |   10 +-
 doc/src/bond_class2.txt                       |   12 +-
 doc/src/bond_fene.txt                         |   14 +-
 doc/src/bond_fene_expand.txt                  |   14 +-
 doc/src/bond_gromos.txt                       |   14 +-
 doc/src/bond_harmonic.txt                     |   14 +-
 doc/src/bond_harmonic_shift.txt               |   12 +-
 doc/src/bond_harmonic_shift_cut.txt           |   12 +-
 doc/src/bond_hybrid.txt                       |    6 +-
 doc/src/bond_morse.txt                        |   14 +-
 doc/src/bond_nonlinear.txt                    |   14 +-
 doc/src/bond_oxdna.txt                        |    4 +-
 doc/src/bond_quartic.txt                      |   14 +-
 doc/src/bond_style.txt                        |    7 +-
 doc/src/bond_table.txt                        |   14 +-
 doc/src/compute_ackland_atom.txt              |    4 +-
 doc/src/compute_basal_atom.txt                |    4 +-
 doc/src/compute_cnp_atom.txt                  |    4 +-
 doc/src/compute_damage_atom.txt               |    4 +-
 doc/src/compute_dilatation_atom.txt           |    4 +-
 doc/src/compute_dpd.txt                       |    4 +-
 doc/src/compute_dpd_atom.txt                  |    4 +-
 doc/src/compute_edpd_temp_atom.txt            |    4 +-
 doc/src/compute_entropy_atom.txt              |    4 +-
 doc/src/compute_erotate_rigid.txt             |    4 +-
 doc/src/compute_event_displace.txt            |    4 +-
 doc/src/compute_fep.txt                       |    4 +-
 doc/src/compute_ke_atom_eff.txt               |    4 +-
 doc/src/compute_ke_eff.txt                    |    4 +-
 doc/src/compute_ke_rigid.txt                  |    4 +-
 doc/src/compute_meso_e_atom.txt               |    4 +-
 doc/src/compute_meso_rho_atom.txt             |    4 +-
 doc/src/compute_meso_t_atom.txt               |    4 +-
 doc/src/compute_msd_nongauss.txt              |    6 +-
 doc/src/compute_plasticity_atom.txt           |    4 +-
 doc/src/compute_pressure.txt                  |    8 +-
 doc/src/compute_pressure_uef.txt              |    6 +-
 doc/src/compute_rigid_local.txt               |    4 +-
 doc/src/compute_saed.txt                      |    4 +-
 doc/src/compute_smd_contact_radius.txt        |    4 +-
 doc/src/compute_smd_damage.txt                |    4 +-
 doc/src/compute_smd_hourglass_error.txt       |    4 +-
 doc/src/compute_smd_internal_energy.txt       |    8 +-
 doc/src/compute_smd_plastic_strain.txt        |    8 +-
 doc/src/compute_smd_plastic_strain_rate.txt   |    8 +-
 doc/src/compute_smd_rho.txt                   |    4 +-
 doc/src/compute_smd_tlsph_defgrad.txt         |    8 +-
 doc/src/compute_smd_tlsph_dt.txt              |    4 +-
 doc/src/compute_smd_tlsph_num_neighs.txt      |    4 +-
 doc/src/compute_smd_tlsph_shape.txt           |    4 +-
 doc/src/compute_smd_tlsph_strain.txt          |    4 +-
 doc/src/compute_smd_tlsph_strain_rate.txt     |    4 +-
 doc/src/compute_smd_tlsph_stress.txt          |    4 +-
 .../compute_smd_triangle_mesh_vertices.txt    |    4 +-
 doc/src/compute_smd_ulsph_num_neighs.txt      |    8 +-
 doc/src/compute_smd_ulsph_strain.txt          |    8 +-
 doc/src/compute_smd_ulsph_strain_rate.txt     |    9 +-
 doc/src/compute_smd_ulsph_stress.txt          |    8 +-
 doc/src/compute_smd_vol.txt                   |    4 +-
 doc/src/compute_sna_atom.txt                  |    4 +-
 doc/src/compute_spin.txt                      |    8 +-
 doc/src/compute_tally.txt                     |    6 +-
 doc/src/compute_tdpd_cc_atom.txt              |    4 +-
 doc/src/compute_temp.txt                      |    8 +-
 doc/src/compute_temp_asphere.txt              |    4 +-
 doc/src/compute_temp_body.txt                 |    4 +-
 doc/src/compute_temp_deform_eff.txt           |    4 +-
 doc/src/compute_temp_eff.txt                  |    4 +-
 doc/src/compute_temp_partial.txt              |    8 +-
 doc/src/compute_temp_region_eff.txt           |    4 +-
 doc/src/compute_temp_rotate.txt               |    4 +-
 doc/src/compute_temp_uef.txt                  |    6 +-
 doc/src/compute_ti.txt                        |    4 +-
 doc/src/compute_voronoi_atom.txt              |    4 +-
 doc/src/compute_xrd.txt                       |    4 +-
 doc/src/dihedral_charmm.txt                   |   12 +-
 doc/src/dihedral_class2.txt                   |   12 +-
 doc/src/dihedral_cosine_shift_exp.txt         |   12 +-
 doc/src/dihedral_fourier.txt                  |   12 +-
 doc/src/dihedral_harmonic.txt                 |   12 +-
 doc/src/dihedral_helix.txt                    |   12 +-
 doc/src/dihedral_hybrid.txt                   |    4 +-
 doc/src/dihedral_multi_harmonic.txt           |   12 +-
 doc/src/dihedral_nharmonic.txt                |   12 +-
 doc/src/dihedral_opls.txt                     |   12 +-
 doc/src/dihedral_quadratic.txt                |   12 +-
 doc/src/dihedral_spherical.txt                |    4 +-
 doc/src/dihedral_style.txt                    |    7 +-
 doc/src/dihedral_table.txt                    |   12 +-
 doc/src/dihedral_table_cut.txt                |    4 +-
 doc/src/dump.txt                              |   21 +-
 doc/src/dump_cfg_uef.txt                      |    6 +-
 doc/src/dump_h5md.txt                         |   14 +-
 doc/src/dump_image.txt                        |    7 +-
 doc/src/dump_molfile.txt                      |    4 +-
 doc/src/dump_netcdf.txt                       |    4 +-
 doc/src/dump_vtk.txt                          |    6 +-
 doc/src/echo.txt                              |    4 +-
 doc/src/fix.txt                               |    6 +-
 doc/src/fix_addforce.txt                      |    8 +-
 doc/src/fix_addtorque.txt                     |    4 +-
 doc/src/fix_append_atoms.txt                  |    4 +-
 doc/src/fix_atom_swap.txt                     |    4 +-
 doc/src/fix_ave_correlate_long.txt            |    4 +-
 doc/src/fix_aveforce.txt                      |    8 +-
 doc/src/fix_bocs.txt                          |    4 +-
 doc/src/fix_bond_break.txt                    |    4 +-
 doc/src/fix_bond_create.txt                   |    4 +-
 doc/src/fix_bond_react.txt                    |    4 +-
 doc/src/fix_bond_swap.txt                     |    4 +-
 doc/src/fix_cmap.txt                          |    4 +-
 doc/src/fix_colvars.txt                       |    4 +-
 doc/src/fix_deform.txt                        |    8 +-
 doc/src/fix_deposit.txt                       |    4 +-
 doc/src/fix_dpd_energy.txt                    |   12 +-
 doc/src/fix_dpd_source.txt                    |    4 +-
 doc/src/fix_efield.txt                        |    4 +-
 doc/src/fix_ehex.txt                          |    4 +-
 doc/src/fix_enforce2d.txt                     |    8 +-
 doc/src/fix_eos_cv.txt                        |    4 +-
 doc/src/fix_eos_table.txt                     |    4 +-
 doc/src/fix_eos_table_rx.txt                  |   12 +-
 doc/src/fix_evaporate.txt                     |    4 +-
 doc/src/fix_filter_corotate.txt               |    4 +-
 doc/src/fix_flow_gauss.txt                    |    4 +-
 doc/src/fix_freeze.txt                        |   12 +-
 doc/src/fix_gcmc.txt                          |    4 +-
 doc/src/fix_gld.txt                           |    4 +-
 doc/src/fix_gle.txt                           |    6 +-
 doc/src/fix_gravity.txt                       |    8 +-
 doc/src/fix_grem.txt                          |    4 +-
 doc/src/fix_imd.txt                           |    4 +-
 doc/src/fix_ipi.txt                           |    6 +-
 doc/src/fix_langevin.txt                      |    8 +-
 doc/src/fix_langevin_eff.txt                  |    4 +-
 doc/src/fix_langevin_spin.txt                 |    6 +-
 doc/src/fix_latte.txt                         |    8 +-
 doc/src/fix_lb_fluid.txt                      |    4 +-
 doc/src/fix_lb_momentum.txt                   |    4 +-
 doc/src/fix_lb_pc.txt                         |    4 +-
 doc/src/fix_lb_rigid_pc_sphere.txt            |    4 +-
 doc/src/fix_lb_viscous.txt                    |    4 +-
 doc/src/fix_manifoldforce.txt                 |   27 +-
 doc/src/fix_meso.txt                          |    4 +-
 doc/src/fix_meso_stationary.txt               |    4 +-
 doc/src/fix_momentum.txt                      |    8 +-
 doc/src/fix_mscg.txt                          |    4 +-
 doc/src/fix_msst.txt                          |    4 +-
 doc/src/fix_mvv_dpd.txt                       |    4 +-
 doc/src/fix_neb.txt                           |    4 +-
 doc/src/fix_nh.txt                            |    8 +-
 doc/src/fix_nh_eff.txt                        |    4 +-
 doc/src/fix_nh_uef.txt                        |    4 +-
 doc/src/fix_nph_asphere.txt                   |   12 +-
 doc/src/fix_nph_body.txt                      |   12 +-
 doc/src/fix_nph_sphere.txt                    |    8 +-
 doc/src/fix_nphug.txt                         |   12 +-
 doc/src/fix_npt_asphere.txt                   |   12 +-
 doc/src/fix_npt_body.txt                      |   12 +-
 doc/src/fix_npt_sphere.txt                    |    8 +-
 doc/src/fix_nve.txt                           |    8 +-
 doc/src/fix_nve_asphere.txt                   |   12 +-
 doc/src/fix_nve_asphere_noforce.txt           |    4 +-
 doc/src/fix_nve_body.txt                      |    4 +-
 doc/src/fix_nve_dot.txt                       |    4 +-
 doc/src/fix_nve_dotc_langevin.txt             |    4 +-
 doc/src/fix_nve_eff.txt                       |    4 +-
 doc/src/fix_nve_line.txt                      |    4 +-
 doc/src/fix_nve_manifold_rattle.txt           |    4 +-
 doc/src/fix_nve_sphere.txt                    |    8 +-
 doc/src/fix_nve_spin.txt                      |    6 +-
 doc/src/fix_nve_tri.txt                       |    4 +-
 doc/src/fix_nvk.txt                           |    6 +-
 doc/src/fix_nvt_asphere.txt                   |   12 +-
 doc/src/fix_nvt_body.txt                      |   12 +-
 doc/src/fix_nvt_manifold_rattle.txt           |   14 +-
 doc/src/fix_nvt_sllod.txt                     |    8 +-
 doc/src/fix_nvt_sllod_eff.txt                 |    4 +-
 doc/src/fix_nvt_sphere.txt                    |    8 +-
 doc/src/fix_orient.txt                        |    4 +-
 doc/src/fix_phonon.txt                        |    8 +-
 doc/src/fix_pimd.txt                          |    4 +-
 doc/src/fix_poems.txt                         |    4 +-
 doc/src/fix_pour.txt                          |    4 +-
 doc/src/fix_precession_spin.txt               |    8 +-
 doc/src/fix_python_invoke.txt                 |    6 +-
 doc/src/fix_python_move.txt                   |    4 +-
 doc/src/fix_qbmsst.txt                        |    4 +-
 doc/src/fix_qeq.txt                           |    4 +-
 doc/src/fix_qeq_comb.txt                      |    8 +-
 doc/src/fix_qeq_reax.txt                      |   12 +-
 doc/src/fix_qmmm.txt                          |    4 +-
 doc/src/fix_qtb.txt                           |    4 +-
 doc/src/fix_reax_bonds.txt                    |   12 +-
 doc/src/fix_reaxc_species.txt                 |   16 +-
 doc/src/fix_rhok.txt                          |    4 +-
 doc/src/fix_rigid.txt                         |   12 +-
 doc/src/fix_rx.txt                            |   12 +-
 doc/src/fix_setforce.txt                      |    8 +-
 doc/src/fix_shake.txt                         |   12 +-
 doc/src/fix_shardlow.txt                      |   12 +-
 doc/src/fix_smd.txt                           |    4 +-
 doc/src/fix_smd_adjust_dt.txt                 |   27 +-
 doc/src/fix_smd_integrate_tlsph.txt           |   18 +-
 doc/src/fix_smd_integrate_ulsph.txt           |   28 +-
 doc/src/fix_smd_move_triangulated_surface.txt |   34 +-
 doc/src/fix_smd_setvel.txt                    |    4 +-
 doc/src/fix_smd_wall_surface.txt              |   45 +-
 doc/src/fix_srd.txt                           |    4 +-
 doc/src/fix_temp_rescale_eff.txt              |    4 +-
 doc/src/fix_tfmc.txt                          |    4 +-
 doc/src/fix_thermal_conductivity.txt          |    4 +-
 doc/src/fix_ti_spring.txt                     |    4 +-
 doc/src/fix_tmd.txt                           |    4 +-
 doc/src/fix_ttm.txt                           |    3 +-
 doc/src/fix_tune_kspace.txt                   |    6 +-
 doc/src/fix_viscosity.txt                     |    4 +-
 doc/src/fix_wall.txt                          |    8 +-
 doc/src/fix_wall_body_polygon.txt             |    4 +-
 doc/src/fix_wall_body_polyhedron.txt          |    6 +-
 doc/src/fix_wall_ees.txt                      |    4 +-
 doc/src/fix_wall_gran.txt                     |    4 +-
 doc/src/fix_wall_gran_region.txt              |    4 +-
 doc/src/fix_wall_piston.txt                   |    4 +-
 doc/src/fix_wall_reflect.txt                  |    8 +-
 doc/src/group2ndx.txt                         |    4 +-
 doc/src/improper_class2.txt                   |   12 +-
 doc/src/improper_cossq.txt                    |   12 +-
 doc/src/improper_cvff.txt                     |   12 +-
 doc/src/improper_distance.txt                 |    4 +-
 doc/src/improper_fourier.txt                  |   12 +-
 doc/src/improper_harmonic.txt                 |   12 +-
 doc/src/improper_hybrid.txt                   |    4 +-
 doc/src/improper_inversion_harmonic.txt       |    4 +-
 doc/src/improper_ring.txt                     |   12 +-
 doc/src/improper_style.txt                    |    7 +-
 doc/src/improper_umbrella.txt                 |   12 +-
 doc/src/jump.txt                              |   11 +-
 doc/src/kspace_style.txt                      |   20 +-
 doc/src/lammps.book                           |   22 +-
 doc/src/log.txt                               |    5 +-
 doc/src/neb.txt                               |   20 +-
 doc/src/neighbor.txt                          |    4 +-
 doc/src/next.txt                              |   10 +-
 doc/src/package.txt                           |   95 +-
 doc/src/pair_adp.txt                          |    8 +-
 doc/src/pair_agni.txt                         |   25 +-
 doc/src/pair_airebo.txt                       |   12 +-
 doc/src/pair_beck.txt                         |    8 +-
 doc/src/pair_body_nparticle.txt               |    4 +-
 doc/src/pair_body_rounded_polygon.txt         |    4 +-
 doc/src/pair_body_rounded_polyhedron.txt      |    4 +-
 doc/src/pair_bop.txt                          |    5 +-
 doc/src/pair_born.txt                         |   12 +-
 doc/src/pair_brownian.txt                     |   12 +-
 doc/src/pair_buck.txt                         |   12 +-
 doc/src/pair_buck6d_coul_gauss.txt            |    6 +-
 doc/src/pair_buck_long.txt                    |   14 +-
 doc/src/pair_charmm.txt                       |   14 +-
 doc/src/pair_class2.txt                       |   12 +-
 doc/src/pair_colloid.txt                      |   12 +-
 doc/src/pair_comb.txt                         |   14 +-
 doc/src/pair_coul.txt                         |   10 +-
 doc/src/pair_coul_diel.txt                    |    9 +-
 doc/src/pair_coul_shield.txt                  |    6 +-
 doc/src/pair_cs.txt                           |    4 +-
 doc/src/pair_dipole.txt                       |   16 +-
 doc/src/pair_dpd.txt                          |    8 +-
 doc/src/pair_dpd_fdt.txt                      |   12 +-
 doc/src/pair_dsmc.txt                         |    4 +-
 doc/src/pair_eam.txt                          |   12 +-
 doc/src/pair_edip.txt                         |   12 +-
 doc/src/pair_eff.txt                          |    4 +-
 doc/src/pair_eim.txt                          |    8 +-
 doc/src/pair_exp6_rx.txt                      |   12 +-
 doc/src/pair_gauss.txt                        |   12 +-
 doc/src/pair_gayberne.txt                     |   12 +-
 doc/src/pair_gran.txt                         |   12 +-
 doc/src/pair_gromacs.txt                      |    8 +-
 doc/src/pair_gw.txt                           |    4 +-
 doc/src/pair_hbond_dreiding.txt               |    8 +-
 doc/src/pair_hybrid.txt                       |   12 +-
 doc/src/pair_ilp_graphene_hbn.txt             |    4 +-
 doc/src/pair_kim.txt                          |    4 +-
 doc/src/pair_kolmogorov_crespi_full.txt       |    4 +-
 doc/src/pair_kolmogorov_crespi_z.txt          |    4 +-
 doc/src/pair_lcbop.txt                        |    4 +-
 doc/src/pair_line_lj.txt                      |    4 +-
 doc/src/pair_list.txt                         |    4 +-
 doc/src/pair_lj.txt                           |   14 +-
 doc/src/pair_lj96.txt                         |    8 +-
 doc/src/pair_lj_cubic.txt                     |    8 +-
 doc/src/pair_lj_expand.txt                    |    8 +-
 doc/src/pair_lj_long.txt                      |   14 +-
 doc/src/pair_lj_smooth.txt                    |    8 +-
 doc/src/pair_lj_smooth_linear.txt             |    8 +-
 doc/src/pair_lj_soft.txt                      |   10 +-
 doc/src/pair_lubricate.txt                    |   12 +-
 doc/src/pair_lubricateU.txt                   |    4 +-
 doc/src/pair_mdf.txt                          |    4 +-
 doc/src/pair_meam.txt                         |   14 +-
 doc/src/pair_meam_spline.txt                  |   12 +-
 doc/src/pair_meam_sw_spline.txt               |    5 +-
 doc/src/pair_meso.txt                         |    4 +-
 doc/src/pair_mgpt.txt                         |    4 +-
 doc/src/pair_momb.txt                         |    4 +-
 doc/src/pair_morse.txt                        |   16 +-
 doc/src/pair_multi_lucy.txt                   |    4 +-
 doc/src/pair_multi_lucy_rx.txt                |   12 +-
 doc/src/pair_nb3b_harmonic.txt                |   12 +-
 doc/src/pair_nm.txt                           |   12 +-
 doc/src/pair_oxdna.txt                        |    4 +-
 doc/src/pair_oxdna2.txt                       |    4 +-
 doc/src/pair_peri.txt                         |   12 +-
 doc/src/pair_polymorphic.txt                  |    4 +-
 doc/src/pair_python.txt                       |    4 +-
 doc/src/pair_quip.txt                         |    4 +-
 doc/src/pair_reaxc.txt                        |   12 +-
 doc/src/pair_resquared.txt                    |   12 +-
 doc/src/pair_sdk.txt                          |   18 +-
 doc/src/pair_smd_hertz.txt                    |   30 +-
 doc/src/pair_smd_tlsph.txt                    |   46 +-
 doc/src/pair_smd_triangulated_surface.txt     |   24 +-
 doc/src/pair_smd_ulsph.txt                    |   54 +-
 doc/src/pair_smtbq.txt                        |    4 +-
 doc/src/pair_snap.txt                         |   14 +-
 doc/src/pair_soft.txt                         |    8 +-
 doc/src/pair_sph_heatconduction.txt           |    4 +-
 doc/src/pair_sph_idealgas.txt                 |    4 +-
 doc/src/pair_sph_lj.txt                       |    4 +-
 doc/src/pair_sph_rhosum.txt                   |    4 +-
 doc/src/pair_sph_taitwater.txt                |    4 +-
 doc/src/pair_sph_taitwater_morris.txt         |    4 +-
 doc/src/pair_spin_dmi.txt                     |    8 +-
 doc/src/pair_spin_exchange.txt                |    8 +-
 doc/src/pair_spin_magelec.txt                 |    8 +-
 doc/src/pair_spin_neel.txt                    |    8 +-
 doc/src/pair_style.txt                        |    7 +-
 doc/src/pair_sw.txt                           |   12 +-
 doc/src/pair_table.txt                        |    8 +-
 doc/src/pair_table_rx.txt                     |   12 +-
 doc/src/pair_tersoff.txt                      |   12 +-
 doc/src/pair_tersoff_mod.txt                  |   12 +-
 doc/src/pair_tersoff_zbl.txt                  |   12 +-
 doc/src/pair_thole.txt                        |   12 +-
 doc/src/pair_tri_lj.txt                       |    4 +-
 doc/src/pair_ufm.txt                          |    8 +-
 doc/src/pair_vashishta.txt                    |   12 +-
 doc/src/pair_yukawa.txt                       |    8 +-
 doc/src/pair_yukawa_colloid.txt               |   12 +-
 doc/src/pair_zbl.txt                          |    8 +-
 doc/src/partition.txt                         |    7 +-
 doc/src/prd.txt                               |   22 +-
 doc/src/processors.txt                        |   29 +-
 doc/src/python.txt                            |    4 +-
 doc/src/read_data.txt                         |    8 +-
 doc/src/read_dump.txt                         |    6 +-
 doc/src/read_restart.txt                      |    3 +-
 doc/src/region.txt                            |    8 +-
 doc/src/rerun.txt                             |    4 +-
 doc/src/restart.txt                           |    3 +-
 doc/src/run_style.txt                         |   22 +-
 doc/src/suffix.txt                            |   16 +-
 doc/src/tad.txt                               |    4 +-
 doc/src/temper.txt                            |   25 +-
 doc/src/temper_grem.txt                       |    4 +-
 doc/src/temper_npt.txt                        |    4 +-
 doc/src/thermo_style.txt                      |    6 +-
 doc/src/timer.txt                             |    4 +-
 doc/src/variable.txt                          |   49 +-
 doc/src/write_data.txt                        |    2 +-
 doc/src/write_restart.txt                     |    3 +-
 415 files changed, 2033 insertions(+), 2894 deletions(-)

diff --git a/doc/src/Errors_common.txt b/doc/src/Errors_common.txt
index 43d1a85a7b..8f26b22b3a 100644
--- a/doc/src/Errors_common.txt
+++ b/doc/src/Errors_common.txt
@@ -58,9 +58,9 @@ style", with ... being fix, compute, pair, etc, it means that you
 mistyped the style name or that the command is part of an optional
 package which was not compiled into your executable.  The list of
 available styles in your executable can be listed by using "the -h
-command-line argument"_Section_start.html#start_6.  The installation
-and compilation of optional packages is explained in the "installation
-instructions"_Section_start.html#start_3.
+command-line swith"_Run_options.html.  The installation and
+compilation of optional packages is explained on the "Build
+packages"_Build_packages.html doc page.
 
 For a given command, LAMMPS expects certain arguments in a specified
 order.  If you mess this up, LAMMPS will often flag the error, but it
diff --git a/doc/src/Errors_messages.txt b/doc/src/Errors_messages.txt
index 03fc25b561..d279b5e975 100644
--- a/doc/src/Errors_messages.txt
+++ b/doc/src/Errors_messages.txt
@@ -7911,8 +7911,8 @@ Atom IDs must be positive integers. :dd
 {One or more atom IDs is too big} :dt
 
 The limit on atom IDs is set by the SMALLBIG, BIGBIG, SMALLSMALL
-setting in your Makefile.  See Section_start 2.2 of the manual for
-more details. :dd
+setting in your LAMMPS build.  See the "Build
+settings"_Build_settings.html doc page for more info. :dd
 
 {One or more atom IDs is zero} :dt
 
diff --git a/doc/src/Examples.txt b/doc/src/Examples.txt
index 5bd8da2409..4b6db8a047 100644
--- a/doc/src/Examples.txt
+++ b/doc/src/Examples.txt
@@ -112,10 +112,10 @@ web site.
 
 If you uncomment the "dump image"_dump_image.html line(s) in the input
 script a series of JPG images will be produced by the run (assuming
-you built LAMMPS with JPG support; see "Section
-2.2"_Section_start.html#start_2 for details).  These can be viewed
-individually or turned into a movie or animated by tools like
-ImageMagick or QuickTime or various Windows-based tools.  See the
+you built LAMMPS with JPG support; see the
+"Build_settings"_Build_settings.html doc page for details).  These can
+be viewed individually or turned into a movie or animated by tools
+like ImageMagick or QuickTime or various Windows-based tools.  See the
 "dump image"_dump_image.html doc page for more details.  E.g. this
 Imagemagick command would create a GIF file suitable for viewing in a
 browser.
diff --git a/doc/src/Howto.txt b/doc/src/Howto.txt
index d9a60d1ef4..6e434552e7 100644
--- a/doc/src/Howto.txt
+++ b/doc/src/Howto.txt
@@ -84,7 +84,7 @@ END_RST -->
 
 "Using GitHub with LAMMPS"_Howto_github.html
 "PyLAMMPS interface to LAMMPS"_Howto_pylammps.html
-"Using LAMMPS with bash on Windows"_Howto_bash.html
+"Using LAMMPS with bash on Windows"_Howto_bash.html :all(b)
 
 "Restart a simulation"_Howto_restart.html
 "Visualize LAMMPS snapshots"_Howto_viz.html
@@ -121,8 +121,8 @@ END_RST -->
 "Polarizable models"_Howto_polarizable.html
 "Adiabatic core/shell model"_Howto_coreshell.html
 "Drude induced dipoles"_Howto_drude.html
-"Drude induced dipoles (extended)"_Howto_drude2.html :all(b)
+"Drude induced dipoles (extended)"_Howto_drude2.html
 "Manifolds (surfaces)"_Howto_manifold.html
-"Magnetic spins"_Howto_spins.html
+"Magnetic spins"_Howto_spins.html :all(b)
 
 <!-- END_HTML_ONLY -->
diff --git a/doc/src/Howto_couple.txt b/doc/src/Howto_couple.txt
index 38595a9d16..4c0f72a806 100644
--- a/doc/src/Howto_couple.txt
+++ b/doc/src/Howto_couple.txt
@@ -77,17 +77,16 @@ strain induced across grain boundaries :l
 :link(quest,http://dft.sandia.gov/Quest)
 :link(spparks,http://www.sandia.gov/~sjplimp/spparks.html)
 
-"This section"_Section_start.html#start_5 of the documentation
-describes how to build LAMMPS as a library.  Once this is done, you
-can interface with LAMMPS either via C++, C, Fortran, or Python (or
-any other language that supports a vanilla C-like interface).  For
-example, from C++ you could create one (or more) "instances" of
-LAMMPS, pass it an input script to process, or execute individual
-commands, all by invoking the correct class methods in LAMMPS.  From C
-or Fortran you can make function calls to do the same things.  See the
-"Python"_Python.html doc pages for a description of the Python wrapper
-provided with LAMMPS that operates through the LAMMPS library
-interface.
+The "Build basics"_Build_basics.html doc page describes how to build
+LAMMPS as a library.  Once this is done, you can interface with LAMMPS
+either via C++, C, Fortran, or Python (or any other language that
+supports a vanilla C-like interface).  For example, from C++ you could
+create one (or more) "instances" of LAMMPS, pass it an input script to
+process, or execute individual commands, all by invoking the correct
+class methods in LAMMPS.  From C or Fortran you can make function
+calls to do the same things.  See the "Python"_Python.html doc pages
+for a description of the Python wrapper provided with LAMMPS that
+operates through the LAMMPS library interface.
 
 The files src/library.cpp and library.h contain the C-style interface
 to LAMMPS.  See the "Howto library"_Howto_library.html doc page for a
diff --git a/doc/src/Howto_library.txt b/doc/src/Howto_library.txt
index 0d4852fbf2..8e99182f87 100644
--- a/doc/src/Howto_library.txt
+++ b/doc/src/Howto_library.txt
@@ -9,10 +9,10 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 Library interface to LAMMPS :h3
 
-As described in "Section 2.5"_Section_start.html#start_5, LAMMPS can
-be built as a library, so that it can be called by another code, used
-in a "coupled manner"_Howto_couple.html with other codes, or driven
-through a "Python interface"_Python.html.
+As described on the "Build basics"_Build_basics.html doc page, LAMMPS
+can be built as a library, so that it can be called by another code,
+used in a "coupled manner"_Howto_couple.html with other codes, or
+driven through a "Python interface"_Python.html.
 
 All of these methodologies use a C-style interface to LAMMPS that is
 provided in the files src/library.cpp and src/library.h.  The
@@ -51,12 +51,11 @@ void lammps_free(void *) :pre
 
 The lammps_open() function is used to initialize LAMMPS, passing in a
 list of strings as if they were "command-line
-arguments"_Section_start.html#start_6 when LAMMPS is run in
-stand-alone mode from the command line, and a MPI communicator for
-LAMMPS to run under.  It returns a ptr to the LAMMPS object that is
-created, and which is used in subsequent library calls.  The
-lammps_open() function can be called multiple times, to create
-multiple instances of LAMMPS.
+arguments"_Run_options.html when LAMMPS is run in stand-alone mode
+from the command line, and a MPI communicator for LAMMPS to run under.
+It returns a ptr to the LAMMPS object that is created, and which is
+used in subsequent library calls.  The lammps_open() function can be
+called multiple times, to create multiple instances of LAMMPS.
 
 LAMMPS will run on the set of processors in the communicator.  This
 means the calling code can run LAMMPS on all or a subset of
diff --git a/doc/src/Howto_multiple.txt b/doc/src/Howto_multiple.txt
index edcb8196cf..9ad872fedc 100644
--- a/doc/src/Howto_multiple.txt
+++ b/doc/src/Howto_multiple.txt
@@ -80,8 +80,7 @@ jump in.polymer :pre
 All of the above examples work whether you are running on 1 or
 multiple processors, but assumed you are running LAMMPS on a single
 partition of processors.  LAMMPS can be run on multiple partitions via
-the "-partition" command-line switch as described in "this
-section"_Section_start.html#start_6 of the manual.
+the "-partition command-line switch"_Run_options.html.
 
 In the last 2 examples, if LAMMPS were run on 3 partitions, the same
 scripts could be used if the "index" and "loop" variables were
diff --git a/doc/src/Howto_replica.txt b/doc/src/Howto_replica.txt
index 1b44fe5374..2135e52e0e 100644
--- a/doc/src/Howto_replica.txt
+++ b/doc/src/Howto_replica.txt
@@ -29,29 +29,28 @@ runs different replicas at a series of temperature to facilitate
 rare-event sampling.
 
 These commands can only be used if LAMMPS was built with the REPLICA
-package.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info on packages.
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 PIMD runs different replicas whose individual particles are coupled
 together by springs to model a system or ring-polymers.
 
 This commands can only be used if LAMMPS was built with the USER-MISC
-package.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info on packages.
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 In all these cases, you must run with one or more processors per
 replica.  The processors assigned to each replica are determined at
 run-time by using the "-partition command-line
-switch"_Section_start.html#start_6 to launch LAMMPS on multiple
-partitions, which in this context are the same as replicas.  E.g.
-these commands:
+switch"_Run_options.html to launch LAMMPS on multiple partitions,
+which in this context are the same as replicas.  E.g.  these commands:
 
 mpirun -np 16 lmp_linux -partition 8x2 -in in.temper
 mpirun -np 8 lmp_linux -partition 8x1 -in in.neb :pre
 
 would each run 8 replicas, on either 16 or 8 processors.  Note the use
-of the "-in command-line switch"_Section_start.html#start_6 to specify
-the input script which is required when running in multi-replica mode.
+of the "-in command-line switch"_Run_options.html to specify the input
+script which is required when running in multi-replica mode.
 
 Also note that with MPI installed on a machine (e.g. your desktop),
 you can run on more (virtual) processors than you have physical
diff --git a/doc/src/Howto_restart.txt b/doc/src/Howto_restart.txt
index b211775479..bc67daa78e 100644
--- a/doc/src/Howto_restart.txt
+++ b/doc/src/Howto_restart.txt
@@ -16,8 +16,8 @@ restart files can be saved to disk using the "restart"_restart.html
 command.  At a later time, these binary files can be read via a
 "read_restart"_read_restart.html command in a new script.  Or they can
 be converted to text data files using the "-r command-line
-switch"_Section_start.html#start_6 and read by a
-"read_data"_read_data.html command in a new script.
+switch"_Run_options.html and read by a "read_data"_read_data.html
+command in a new script.
 
 Here we give examples of 2 scripts that read either a binary restart
 file or a converted data file and then issue a new run command to
diff --git a/doc/src/Howto_temperature.txt b/doc/src/Howto_temperature.txt
index 7a318250cf..8a9e262da1 100644
--- a/doc/src/Howto_temperature.txt
+++ b/doc/src/Howto_temperature.txt
@@ -17,7 +17,10 @@ aggregate motion of particles) and its thermal velocity.  The sum of
 the two is the particle's total velocity, but the latter is often what
 is wanted to compute a temperature.
 
-LAMMPS has several options for computing temperatures, any of which can be used in "thermostatting"_Howto_thermostat.html and "barostatting"_Howto_barostat.html.  These "compute commands"_compute.html calculate temperature:
+LAMMPS has several options for computing temperatures, any of which
+can be used in "thermostatting"_Howto_thermostat.html and
+"barostatting"_Howto_barostat.html.  These "compute
+commands"_compute.html calculate temperature:
 
 "compute temp"_compute_temp.html
 "compute temp/sphere"_compute_temp_sphere.html
@@ -35,6 +38,6 @@ velocities) that are removed when computing the thermal temperature.
 temp/asphere"_compute_temp_asphere.html compute kinetic energy for
 finite-size particles that includes rotational degrees of freedom.
 They both allow for velocity biases indirectly, via an optional extra
-argument which is another temperature compute that subtracts a velocity bias.
-This allows the translational velocity of spherical or aspherical
-particles to be adjusted in prescribed ways.
+argument which is another temperature compute that subtracts a
+velocity bias.  This allows the translational velocity of spherical or
+aspherical particles to be adjusted in prescribed ways.
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index a5e8b63640..a3747465cd 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -72,7 +72,9 @@ every LAMMPS command.
    :includehidden:
 
    Intro
-   Section_start
+   Install
+   Build
+   Run
    Commands
    Packages
    Speed
@@ -107,15 +109,9 @@ END_RST -->
 
 <!-- HTML_ONLY -->
 "Introduction"_Intro.html :olb,l
-"Getting started"_Section_start.html :l
-  2.1 "What's in the LAMMPS distribution"_start_1 :ulb,b
-  2.2 "Making LAMMPS"_start_2 :b
-  2.3 "Making LAMMPS with optional packages"_start_3 :b
-  2.4 "Building LAMMPS as a library"_start_4 :b
-  2.5 "Running LAMMPS"_start_5 :b
-  2.6 "Command-line options"_start_6 :b
-  2.7 "Screen output"_start_7 :b
-  2.8 "Tips for users of previous versions"_start_8 :ule,b
+"Install LAMMPS"_Install.html :l
+"Build LAMMPS"_Build.html :l
+"Run LAMMPS"_Run.html :l
 "Commands"_Commands.html :l
 "Optional packages"_Packages.html :l
 "Accelerate performance"_Speed.html :l
@@ -127,15 +123,6 @@ END_RST -->
 "Errors"_Errors.html :l
 :ole
 
-:link(start_1,Section_start.html#start_1)
-:link(start_2,Section_start.html#start_2)
-:link(start_3,Section_start.html#start_3)
-:link(start_4,Section_start.html#start_4)
-:link(start_5,Section_start.html#start_5)
-:link(start_6,Section_start.html#start_6)
-:link(start_7,Section_start.html#start_7)
-:link(start_8,Section_start.html#start_8)
-
 <!-- END_HTML_ONLY -->
 
 </BODY>
diff --git a/doc/src/Modify_contribute.txt b/doc/src/Modify_contribute.txt
index ef9fe6a717..8cbea8bb31 100644
--- a/doc/src/Modify_contribute.txt
+++ b/doc/src/Modify_contribute.txt
@@ -44,13 +44,14 @@ compression, as this works well on all platforms.
 
 If the new features/files are broadly useful we may add them as core
 files to LAMMPS or as part of a "standard
-package"_Section_start.html#start_3.  Else we will add them as a
-user-contributed file or package.  Examples of user packages are in
-src sub-directories that start with USER.  The USER-MISC package is
-simply a collection of (mostly) unrelated single files, which is the
-simplest way to have your contribution quickly added to the LAMMPS
-distribution.  You can see a list of the both standard and user
-packages by typing "make package" in the LAMMPS src directory.
+package"_Packages_standard.html.  Else we will add them as a
+user-contributed file or "user package"_Packages_user.html.  Examples
+of user packages are in src sub-directories that start with USER.  The
+USER-MISC package is simply a collection of (mostly) unrelated single
+files, which is the simplest way to have your contribution quickly
+added to the LAMMPS distribution.  All the standard and user packages
+are listed and described on the "Packages
+details"_Packages_details.html doc page.
 
 Note that by providing us files to release, you are agreeing to make
 them open-source, i.e. we can release them under the terms of the GPL,
diff --git a/doc/src/Packages.txt b/doc/src/Packages.txt
index a7f45a99b7..e48c947be3 100644
--- a/doc/src/Packages.txt
+++ b/doc/src/Packages.txt
@@ -13,12 +13,12 @@ Optional packages :h2
 This section gives an overview of the optional packages that extend
 LAMMPS functionality.  Packages are groups of files that enable a
 specific set of features.  For example, force fields for molecular
-systems or rigid-body constraint are in packages.  You can see the
+systems or rigid-body constraints are in packages.  You can see the
 list of all packages and "make" commands to manage them by typing
 "make package" from within the src directory of the LAMMPS
-distribution.  "Section 2.3"_Section_start.html#start_3 gives general
-info on how to install and un-install packages as part of the LAMMPS
-build process.
+distribution.  The "Build package"_Build_package.html doc page gives
+general info on how to install and un-install packages as part of the
+LAMMPS build process.
 
 <!-- RST
 
diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt
index eb92fe4dc4..1dbde273b4 100644
--- a/doc/src/Packages_details.txt
+++ b/doc/src/Packages_details.txt
@@ -17,6 +17,13 @@ library it requires.  It also gives links to documentation, example
 scripts, and pictures/movies (if available) that illustrate use of the
 package.
 
+The majority of packages can be included in a LAMMPS build with a
+single setting (-D PGK_NAME for CMake) or command ("make yes-name" for
+make).  See the "Build package"_Build_package.html doc page for more
+info.  A few packages may require additional steps; this is indicated
+in the descriptions below.  The "Build extras"_Build_extras.html doc
+page gives those details.
+
 NOTE: To see the complete list of commands a package adds to LAMMPS,
 you can examine the files in its src directory, e.g. "ls
 src/GRANULAR".  Files with names that start with fix, compute, atom,
@@ -102,14 +109,6 @@ ASPHERE package :link(ASPHERE),h4
 Computes, time-integration fixes, and pair styles for aspherical
 particle models including ellipsoids, 2d lines, and 3d triangles.
 
-[Install or un-install:]
-
-make yes-asphere
-make machine :pre
-
-make no-asphere
-make machine :pre
-
 [Supporting info:]
 
 src/ASPHERE: filenames -> commands
@@ -134,14 +133,6 @@ time-integration fixes, pair styles, as well as the body styles
 themselves.  See the "Howto body"_Howto_body.html doc page for an
 overview.
 
-[Install or un-install:]
-
-make yes-body
-make machine :pre
-
-make no-body
-make machine :pre
-
 [Supporting info:]
 
 src/BODY filenames -> commands
@@ -160,14 +151,6 @@ CLASS2 package :link(CLASS2),h4
 Bond, angle, dihedral, improper, and pair styles for the COMPASS
 CLASS2 molecular force field.
 
-[Install or un-install:]
-
-make yes-class2
-make machine :pre
-
-make no-class2
-make machine :pre
-
 [Supporting info:]
 
 src/CLASS2: filenames -> commands
@@ -192,14 +175,6 @@ simplified approximation to Stokesian dynamics.
 which were created by Amit Kumar and Michael Bybee from Jonathan
 Higdon's group at UIUC.
 
-[Install or un-install:]
-
-make yes-colloid
-make machine :pre
-
-make no-colloid
-make machine :pre
-
 [Supporting info:]
 
 src/COLLOID: filenames -> commands
@@ -226,19 +201,11 @@ available on your system.
 
 [Author:] Axel Kohlmeyer (Temple U).
 
-[Install or un-install:]
-
-Note that building with this package assumes you have the zlib
-compression library available on your system.  The LAMMPS build uses
-the settings in the lib/compress/Makefile.lammps file in the
-compile/link process.  You should only need to edit this file if the
-LAMMPS build fails on your system.
+[Install:] 
 
-make yes-compress
-make machine :pre
-
-make no-compress
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -266,14 +233,6 @@ this package.
 
 [Author:] Hendrik Heenen (Technical U of Munich).
 
-[Install or un-install:]
-
-make yes-coreshell
-make machine :pre
-
-make no-coreshell
-make machine :pre
-
 [Supporting info:]
 
 src/CORESHELL: filenames -> commands
@@ -294,14 +253,6 @@ DIPOLE package :link(DIPOLE),h4
 An atom style and several pair styles for point dipole models with
 short-range or long-range interactions.
 
-[Install or un-install:]
-
-make yes-dipole
-make machine :pre
-
-make no-dipole
-make machine :pre
-
 [Supporting info:]
 
 src/DIPOLE: filenames -> commands
@@ -325,66 +276,17 @@ and only the CUDA versions are regularly tested.  The "Speed
 gpu"_Speed_gpu.html doc page gives details of what hardware and GPU
 software is required on your system, and details on how to build and
 use this package.  Its styles can be invoked at run time via the "-sf
-gpu" or "-suffix gpu" "command-line
-switches"_Section_start.html#start_6.  See also the "KOKKOS"_#KOKKOS
-package, which has GPU-enabled styles.
+gpu" or "-suffix gpu" "command-line switches"_Run_options.html.  See
+also the "KOKKOS"_#KOKKOS package, which has GPU-enabled styles.
 
 [Authors:] Mike Brown (Intel) while at Sandia and ORNL and Trung Nguyen
 (Northwestern U) while at ORNL.
 
-[Install or un-install:]
-
-Before building LAMMPS with this package, you must first build the GPU
-library in lib/gpu from a set of provided C and CUDA files.  You can
-do this manually if you prefer; follow the instructions in
-lib/gpu/README. Please note, that the GPU library uses MPI calls, so
-you have to make certain to use the same MPI library (or the STUBS
-library) settings as the main LAMMPS code. That same applies to the
--DLAMMPS_BIGBIG, -DLAMMPS_SMALLBIG, or -DLAMMPS_SMALLSMALL define.
-
-You can also do it in one step from the lammps/src
-dir, using a command like these, which simply invoke the
-lib/gpu/Install.py script with the specified args:
-
-make lib-gpu               # print help message
-make lib-gpu args="-b"     # build GPU library with default Makefile.linux
-make lib-gpu args="-m xk7 -p single -o xk7.single"  # create new Makefile.xk7.single, altered for single-precision
-make lib-gpu args="-m mpi -p mixed -b" # build GPU library with mixed precision using settings in Makefile.mpi :pre
+[Install:] 
 
-Note that this procedure through the '-m machine' flag starts with one of
-the existing Makefile.machine files in lib/gpu. For your convenience,
-machine makefiles for "mpi" and "serial" are provided, which have the
-same settings as the corresponding machine makefiles in the main LAMMPS
-source folder. In addition you can alter 4 important settings in that
-Makefile, via the -h, -a, -p, -e switches, and also save a copy of the
-new Makefile, if desired:
-
-CUDA_HOME = where NVIDIA CUDA software is installed on your system
-CUDA_ARCH = what GPU hardware you have (see help message for details)
-CUDA_PRECISION = precision (double, mixed, single)
-EXTRAMAKE = which Makefile.lammps.* file to copy to Makefile.lammps :ul
-
-If the library build is successful, at least 3 files should be created:
-lib/gpu/libgpu.a, lib/gpu/nvc_get_devices, and lib/gpu/Makefile.lammps.
-The latter has settings that enable LAMMPS to link with CUDA libraries.
-If the settings in Makefile.lammps for your machine are not correct,
-the LAMMPS build will fail, and lib/gpu/Makefile.lammps may need to
-be edited.
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
-
-make yes-gpu
-make machine :pre
-
-make no-gpu
-make machine :pre
-
-NOTE: If you re-build the GPU library in lib/gpu, you should always
-un-install the GPU package, then re-install it and re-build LAMMPS.
-This is because the compilation of files in the GPU package use the
-library settings from the lib/gpu/Makefile.machine used to build the
-GPU library.
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -393,8 +295,8 @@ src/GPU/README
 lib/gpu/README
 "Speed packages"_Speed_packages.html
 "Speed gpu"_Speed_gpu.html.html
-"Section 2.6 -sf gpu"_Section_start.html#start_6
-"Section 2.6 -pk gpu"_Section_start.html#start_6
+"Section 2.6 -sf gpu"_Run_options.html
+"Section 2.6 -pk gpu"_Run_options.html
 "package gpu"_package.html
 "Commands all"_Commands_all.html pages (pair,kspace) for styles followed by (g)
 "Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
@@ -409,14 +311,6 @@ Pair styles and fixes for finite-size granular particles, which
 interact with each other and boundaries via frictional and dissipative
 potentials.
 
-[Install or un-install:]
-
-make yes-granular
-make machine :pre
-
-make no-granular
-make machine :pre
-
 [Supporting info:]
 
 src/GRANULAR: filenames -> commands
@@ -456,48 +350,11 @@ API which the "pair_style kim"_pair_kim.html command uses.  He
 developed the pair style in collaboration with Valeriu Smirichinski (U
 Minnesota).
 
-[Install or un-install:]
-
-Before building LAMMPS with this package, you must first download and
-build the KIM library and include the KIM models that you want to
-use. You can do this manually if you prefer; follow the instructions
-in lib/kim/README.  You can also do it in one step from the lammps/src
-dir, using a command like these, which simply invoke the
-lib/kim/Install.py script with the specified args.
-
-make lib-kim              # print help message
-make lib-kim args="-b "   # (re-)install KIM API lib with only example models
-make lib-kim args="-b -a Glue_Ercolessi_Adams_Al__MO_324507536345_001"  # ditto plus one model
-make lib-kim args="-b -a everything"     # install KIM API lib with all models
-make lib-kim args="-n -a EAM_Dynamo_Ackland_W__MO_141627196590_002"       # add one model or model driver
-make lib-kim args="-p /usr/local/kim-api" # use an existing KIM API installation at the provided location
-make lib-kim args="-p /usr/local/kim-api -a EAM_Dynamo_Ackland_W__MO_141627196590_002" # ditto but add one model or driver :pre
-
-Note that in LAMMPS lingo, a KIM model driver is a pair style
-(e.g. EAM or Tersoff).  A KIM model is a pair style for a particular
-element or alloy and set of parameters, e.g. EAM for Cu with a
-specific EAM potential file.  Also note that installing the KIM API
-library with all its models, may take around 30 min to build.  Of
-course you only need to do that once.
-
-See the list of KIM model drivers here:
-https://openkim.org/kim-items/model-drivers/alphabetical
-
-See the list of all KIM models here:
-https://openkim.org/kim-items/models/by-model-drivers
-
-See the list of example KIM models included by default here:
-https://openkim.org/kim-api on the "What is in the KIM API source
-package?" page.
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
+[Install:] 
 
-make yes-kim
-make machine :pre
-
-make no-kim
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -521,9 +378,9 @@ style name.  The "Speed kokkos"_Speed_kokkos.html doc page gives
 details of what hardware and software is required on your system, and
 how to build and use this package.  Its styles can be invoked at run
 time via the "-sf kk" or "-suffix kk" "command-line
-switches"_Section_start.html#start_6.  Also see the "GPU"_#GPU,
-"OPT"_#OPT, "USER-INTEL"_#USER-INTEL, and "USER-OMP"_#USER-OMP
-packages, which have styles optimized for CPUs, KNLs, and GPUs.
+switches"_Run_options.html.  Also see the "GPU"_#GPU, "OPT"_#OPT,
+"USER-INTEL"_#USER-INTEL, and "USER-OMP"_#USER-OMP packages, which
+have styles optimized for CPUs, KNLs, and GPUs.
 
 You must have a C++11 compatible compiler to use this package.
 
@@ -534,53 +391,11 @@ which was developed by Carter Edwards, Christian Trott, and others at
 Sandia, and which is included in the LAMMPS distribution in
 lib/kokkos.
 
-[Install or un-install:]
-
-For the KOKKOS package, you have 3 choices when building.  You can
-build with either CPU or KNL or GPU support.  Each choice requires
-additional settings in your Makefile.machine for the KOKKOS_DEVICES
-and KOKKOS_ARCH settings.  See the src/MAKE/OPTIONS/Makefile.kokkos*
-files for examples.
-
-For multicore CPUs using OpenMP:
-
-KOKKOS_DEVICES = OpenMP
-KOKKOS_ARCH = HSW           # HSW = Haswell, SNB = SandyBridge, BDW = Broadwell, etc :pre
-
-For Intel KNLs using OpenMP:
-
-KOKKOS_DEVICES = OpenMP
-KOKKOS_ARCH = KNL :pre
-
-For NVIDIA GPUs using CUDA:
+[Install:] 
 
-KOKKOS_DEVICES = Cuda
-KOKKOS_ARCH = Pascal60,Power8     # P100 hosted by an IBM Power8, etc
-KOKKOS_ARCH = Kepler37,Power8     # K80 hosted by an IBM Power8, etc :pre
-
-For GPUs, you also need these 2 lines in your Makefile.machine before
-the CC line is defined, in this case for use with OpenMPI mpicxx.  The
-2 lines define a nvcc wrapper compiler, which will use nvcc for
-compiling CUDA files or use a C++ compiler for non-Kokkos, non-CUDA
-files.
-
-KOKKOS_ABSOLUTE_PATH = $(shell cd $(KOKKOS_PATH); pwd)
-export OMPI_CXX = $(KOKKOS_ABSOLUTE_PATH)/config/nvcc_wrapper
-CC =		mpicxx :pre
-
-Once you have an appropriate Makefile.machine, you can
-install/un-install the package and build LAMMPS in the usual manner.
-Note that you cannot build one executable to run on multiple hardware
-targets (CPU or KNL or GPU).  You need to build LAMMPS once for each
-hardware target, to produce a separate executable.  Also note that we
-do not recommend building with other acceleration packages installed
-(GPU, OPT, USER-INTEL, USER-OMP) when also building with KOKKOS.
-
-make yes-kokkos
-make machine :pre
-
-make no-kokkos
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -589,9 +404,9 @@ src/KOKKOS/README
 lib/kokkos/README
 "Speed packages"_Speed_packages.html
 "Speed kokkos"_Speed_kokkos.html
-"Section 2.6 -k on ..."_Section_start.html#start_6
-"Section 2.6 -sf kk"_Section_start.html#start_6
-"Section 2.6 -pk kokkos"_Section_start.html#start_6
+"Section 2.6 -k on ..."_Run_options.html
+"Section 2.6 -sf kk"_Run_options.html
+"Section 2.6 -pk kokkos"_Run_options.html
 "package kokkos"_package.html
 "Commands all"_Commands_all.html pages (fix,compute,pair,etc) for styles followed by (k)
 "Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
@@ -607,20 +422,14 @@ which compute the corresponding short-range pairwise Coulombic
 interactions.  These include Ewald, particle-particle particle-mesh
 (PPPM), and multilevel summation method (MSM) solvers.
 
-[Install or un-install:]
+[Install:]
 
 Building with this package requires a 1d FFT library be present on
 your system for use by the PPPM solvers.  This can be the KISS FFT
 library provided with LAMMPS, 3rd party libraries like FFTW, or a
-vendor-supplied FFT library.  See step 6 of "Section
-2.2.2"_Section_start.html#start_2_2 of the manual for details on how
-to select different FFT options in your machine Makefile.
-
-make yes-kspace
-make machine :pre
-
-make no-kspace
-make machine :pre
+vendor-supplied FFT library.  See the "Build
+settings"_Build_settings.html doc page for details on how to select
+different FFT options for your LAMPMS build.
 
 [Supporting info:]
 
@@ -655,36 +464,11 @@ description is given with the "fix latte"_fix_latte.html command.
 itself is developed at Los Alamos National Laboratory by Marc
 Cawkwell, Anders Niklasson, and Christian Negre.
 
-[Install or un-install:]
+[Install:]
 
-Before building LAMMPS with this package, you must first download and
-build the LATTE library.  You can do this manually if you prefer;
-follow the instructions in lib/latte/README.  You can also do it in
-one step from the lammps/src dir, using a command like these, which
-simply invokes the lib/latte/Install.py script with the specified
-args:
-
-make lib-latte                          # print help message
-make lib-latte args="-b"                # download and build in lib/latte/LATTE-master
-make lib-latte args="-p $HOME/latte"    # use existing LATTE installation in $HOME/latte
-make lib-latte args="-b -m gfortran"    # download and build in lib/latte and 
-                                        #   copy Makefile.lammps.gfortran to Makefile.lammps
-:pre
-
-Note that 3 symbolic (soft) links, "includelink" and "liblink" and
-"filelink.o", are created in lib/latte to point into the LATTE home dir.
-When LAMMPS builds in src it will use these links.  You should 
-also check that the Makefile.lammps file you create is appropriate
-for the compiler you use on your system to build LATTE.
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
-
-make yes-latte
-make machine :pre
-
-make no-latte
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -704,14 +488,6 @@ MANYBODY package :link(MANYBODY),h4
 A variety of manybody and bond-order potentials.  These include
 (AI)REBO, BOP, EAM, EIM, Stillinger-Weber, and Tersoff potentials.
 
-[Install or un-install:]
-
-make yes-manybody
-make machine :pre
-
-make no-manybody
-make machine :pre
-
 [Supporting info:]
 
 src/MANYBODY: filenames -> commands
@@ -735,14 +511,6 @@ attributes.  These include fixes for creating, breaking, and swapping
 bonds, for performing atomic swaps, and performing grand-canonical MC
 (GCMC) in conjuction with dynamics.
 
-[Install or un-install:]
-
-make yes-mc
-make machine :pre
-
-make no-mc
-make machine :pre
-
 [Supporting info:]
 
 src/MC: filenames -> commands
@@ -770,37 +538,11 @@ while providing the identical features and USER interface.
 
 [Author:] Greg Wagner (Northwestern U) while at Sandia.
 
-[Install or un-install:]
-
-Before building LAMMPS with this package, you must first build the
-MEAM library in lib/meam.  You can do this manually if you prefer;
-follow the instructions in lib/meam/README.  You can also do it in one
-step from the lammps/src dir, using a command like these, which simply
-invoke the lib/meam/Install.py script with the specified args:
-
-make lib-meam                  # print help message
-make lib-meam args="-m mpi"    # build with default Fortran compiler compatible with your MPI library
-make lib-meam args="-m serial" # build with compiler compatible with "make serial" (GNU Fortran)
-make lib-meam args="-m ifort"  # build with Intel Fortran compiler using Makefile.ifort :pre
-
-The build should produce two files: lib/meam/libmeam.a and
-lib/meam/Makefile.lammps.  The latter is copied from an existing
-Makefile.lammps.* and has settings needed to link C++ (LAMMPS) with
-Fortran (MEAM library).  Typically the two compilers used for LAMMPS
-and the MEAM library need to be consistent (e.g. both Intel or both
-GNU compilers).  If necessary, you can edit/create a new
-lib/meam/Makefile.machine file for your system, which should define an
-EXTRAMAKE variable to specify a corresponding Makefile.lammps.machine
-file.
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
-
-make yes-meam
-make machine :pre
+[Install:] 
 
-make no-meam
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 NOTE: You should test building the MEAM library with both the Intel
 and GNU compilers to see if a simulation runs faster with one versus
@@ -827,14 +569,6 @@ listing, "ls src/MISC", to see the list of commands.
 NOTE: the MISC package contains styles that require using the
 -restrict flag, when compiling with Intel compilers.
 
-[Install or un-install:]
-
-make yes-misc
-make machine :pre
-
-make no-misc
-make machine :pre
-
 [Supporting info:]
 
 src/MISC: filenames -> commands
@@ -860,14 +594,6 @@ that are used to model molecular systems with fixed covalent bonds.
 The pair styles include the Dreiding (hydrogen-bonding) and CHARMM
 force fields, and a TIP4P water model.
 
-[Install or un-install:]
-
-make yes-molecule
-make machine :pre
-
-make no-molecule
-make machine :pre
-
 [Supporting info:]
 
 src/MOLECULE: filenames -> commands
@@ -897,18 +623,6 @@ MPIIO library.  It adds "dump styles"_dump.html with a "mpiio" in
 their style name.  Restart files with an ".mpiio" suffix are also
 written and read in parallel.
 
-[Install or un-install:]
-
-Note that MPIIO is part of the standard message-passing interface
-(MPI) library, so you should not need any additional compiler or link
-settings, beyond what LAMMPS normally uses for MPI on your system.
-
-make yes-mpiio
-make machine :pre
-
-make no-mpiio
-make machine :pre
-
 [Supporting info:]
 
 src/MPIIO: filenames -> commands
@@ -936,39 +650,11 @@ system.
 library was developed by Jacob Wagner in Greg Voth's group at the
 University of Chicago.
 
-[Install or un-install:]
-
-Before building LAMMPS with this package, you must first download and
-build the MS-CG library.  Building the MS-CG library and using it from
-LAMMPS requires a C++11 compatible compiler and that the GSL
-(GNU Scientific Library) headers and libraries are installed on your
-machine.  See the lib/mscg/README and MSCG/Install files for more details.
-
-Assuming these libraries are in place, you can do the download and
-build of MS-CG manually if you prefer; follow the instructions in
-lib/mscg/README.  You can also do it in one step from the lammps/src
-dir, using a command like these, which simply invoke the
-lib/mscg/Install.py script with the specified args:
-
-make lib-mscg             # print help message
-make lib-mscg args="-b -m serial"   # download and build in lib/mscg/MSCG-release-master
-                                    # with the settings compatible with "make serial"
-make lib-mscg args="-b -m mpi"      # download and build in lib/mscg/MSCG-release-master
-                                    # with the settings compatible with "make mpi"
-make lib-mscg args="-p /usr/local/mscg-release" # use the existing MS-CG installation in /usr/local/mscg-release :pre
-
-Note that 2 symbolic (soft) links, "includelink" and "liblink", will be created in lib/mscg
-to point to the MS-CG src/installation dir.  When LAMMPS is built in src it will use these links.
-You should not need to edit the lib/mscg/Makefile.lammps file.
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
-
-make yes-mscg
-make machine :pre
+[Install:] 
 
-make no-mscg
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -989,34 +675,25 @@ CHARMM, and Morse potentials.  The styles have an "opt" suffix in
 their style name.  The "Speed opt"_Speed_opt.html doc page gives
 details of how to build and use this package.  Its styles can be
 invoked at run time via the "-sf opt" or "-suffix opt" "command-line
-switches"_Section_start.html#start_6.  See also the "KOKKOS"_#KOKKOS,
+switches"_Run_options.html.  See also the "KOKKOS"_#KOKKOS,
 "USER-INTEL"_#USER-INTEL, and "USER-OMP"_#USER-OMP packages, which
 have styles optimized for CPU performance.
 
 [Authors:] James Fischer (High Performance Technologies), David Richie,
 and Vincent Natoli (Stone Ridge Technolgy).
 
-[Install or un-install:]
+[Install:] 
 
-make yes-opt
-make machine :pre
-
-make no-opt
-make machine :pre
-
-NOTE: The compile flag "-restrict" must be used to build LAMMPS with
-the OPT package when using Intel compilers.  It should be added to
-the CCFLAGS line of your Makefile.machine.  See Makefile.opt in
-src/MAKE/OPTIONS for an example.
-
-CCFLAGS: add -restrict for Intel compilers :ul
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
 src/OPT: filenames -> commands
 "Speed packages"_Speed_packages.html
 "Speed opt"_Speed_opt.html
-"Section 2.6 -sf opt"_Section_start.html#start_6
+"Section 2.6 -sf opt"_Run_options.html
 "Commands pair"_Commands_pair.html for styles followed by (t)
 "Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
 
@@ -1035,14 +712,6 @@ model.
 Additional Peridynamics models were added by Rezwanur Rahman and John
 Foster (UTSA).
 
-[Install or un-install:]
-
-make yes-peri
-make machine :pre
-
-make no-peri
-make machine :pre
-
 [Supporting info:]
 
 src/PERI: filenames -> commands
@@ -1070,35 +739,11 @@ connections at hinge points.
 
 [Author:] Rudra Mukherjee (JPL) while at RPI.
 
-[Install or un-install:]
-
-Before building LAMMPS with this package, you must first build the
-POEMS library in lib/poems.  You can do this manually if you prefer;
-follow the instructions in lib/poems/README.  You can also do it in
-one step from the lammps/src dir, using a command like these, which
-simply invoke the lib/poems/Install.py script with the specified args:
-
-make lib-poems                   # print help message
-make lib-poems args="-m serial"  # build with GNU g++ compiler (settings as with "make serial")
-make lib-poems args="-m mpi"     # build with default MPI C++ compiler (settings as with "make mpi")
-make lib-poems args="-m icc"     # build with Intel icc compiler :pre
+[Install:] 
 
-The build should produce two files: lib/poems/libpoems.a and
-lib/poems/Makefile.lammps.  The latter is copied from an existing
-Makefile.lammps.* and has settings needed to build LAMMPS with the
-POEMS library (though typically the settings are just blank).  If
-necessary, you can edit/create a new lib/poems/Makefile.machine file
-for your system, which should define an EXTRAMAKE variable to specify
-a corresponding Makefile.lammps.machine file.
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
-
-make yes-poems
-make machine :pre
-
-make no-meam
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -1121,21 +766,16 @@ call"_Python_call.html doc page for an overview of using Python from
 LAMMPS in this manner and all the "Python"_Python.html doc pages for
 other ways to use LAMMPS and Python together.
 
-[Install or un-install:]
-
-make yes-python
-make machine :pre
-
-make no-python
-make machine :pre
-
 NOTE: Building with the PYTHON package assumes you have a Python
 shared library available on your system, which needs to be a Python 2
 version, 2.6 or later.  Python 3 is not yet supported.  See the
-lib/python/README for more details.  Note that the build uses the
-lib/python/Makefile.lammps file in the compile/link process.  You
-should only need to create a new Makefile.lammps.* file (and copy it
-to Makefile.lammps) if the LAMMPS build fails.
+lib/python/README for more details.
+
+[Install:] 
+
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -1154,14 +794,6 @@ Several fixes for performing charge equilibration (QEq) via different
 algorithms.  These can be used with pair styles that perform QEq as
 part of their formulation.
 
-[Install or un-install:]
-
-make yes-qeq
-make machine :pre
-
-make no-qeq
-make machine :pre
-
 [Supporting info:]
 
 src/QEQ: filenames -> commands
@@ -1183,37 +815,11 @@ monitoring molecules as bonds are created and destroyed.
 
 [Author:] Aidan Thompson (Sandia).
 
-[Install or un-install:]
-
-Before building LAMMPS with this package, you must first build the
-REAX library in lib/reax.  You can do this manually if you prefer;
-follow the instructions in lib/reax/README.  You can also do it in one
-step from the lammps/src dir, using a command like these, which simply
-invoke the lib/reax/Install.py script with the specified args:
-
-make lib-reax                    # print help message
-make lib-reax args="-m serial"   # build with GNU Fortran compiler (settings as with "make serial")
-make lib-reax args="-m mpi"      # build with default MPI Fortran compiler (settings as with "make mpi")
-make lib-reax args="-m ifort"    # build with Intel ifort compiler :pre
-
-The build should produce two files: lib/reax/libreax.a and
-lib/reax/Makefile.lammps.  The latter is copied from an existing
-Makefile.lammps.* and has settings needed to link C++ (LAMMPS) with
-Fortran (REAX library).  Typically the two compilers used for LAMMPS
-and the REAX library need to be consistent (e.g. both Intel or both
-GNU compilers).  If necessary, you can edit/create a new
-lib/reax/Makefile.machine file for your system, which should define an
-EXTRAMAKE variable to specify a corresponding Makefile.lammps.machine
-file.
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
-
-make yes-reax
-make machine :pre
+[Install:] 
 
-make no-reax
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -1239,14 +845,6 @@ verlet/split algorithm for performing long-range Coulombics on one set
 of processors, and the remainder of the force field calcalation on
 another set.
 
-[Install or un-install:]
-
-make yes-replica
-make machine :pre
-
-make no-replica
-make machine :pre
-
 [Supporting info:]
 
 src/REPLICA: filenames -> commands
@@ -1271,16 +869,6 @@ particles.  This includes SHAKE and RATTLE, as well as varous
 rigid-body integrators for a few large bodies or many small bodies.
 Also several computes which calculate properties of rigid bodies.
 
-To install/build:
-
-make yes-rigid
-make machine :pre
-
-To un-install/re-build:
-
-make no-rigid
-make machine :pre
-
 [Supporting info:]
 
 src/RIGID: filenames -> commands
@@ -1303,14 +891,6 @@ SHOCK package :link(SHOCK),h4
 Fixes for running impact simulations where a shock-wave passes through
 a material.
 
-[Install or un-install:]
-
-make yes-shock
-make machine :pre
-
-make no-shock
-make machine :pre
-
 [Supporting info:]
 
 src/SHOCK: filenames -> commands
@@ -1334,14 +914,6 @@ computes which analyze attributes of the potential.
 
 [Author:] Aidan Thompson (Sandia).
 
-[Install or un-install:]
-
-make yes-snap
-make machine :pre
-
-make no-snap
-make machine :pre
-
 [Supporting info:]
 
 src/SNAP: filenames -> commands
@@ -1362,14 +934,6 @@ the usual manner via MD.  Various pair, fix, and compute styles.
 
 [Author:] Julian Tranchida (Sandia).
 
-[Install or un-install:]
-
-make yes-spin
-make machine :pre
-
-make no-spin
-make machine :pre
-
 [Supporting info:]
 
 src/SPIN: filenames -> commands
@@ -1393,16 +957,6 @@ A pair of fixes which implement the Stochastic Rotation Dynamics (SRD)
 method for coarse-graining of a solvent, typically around large
 colloidal particles.
 
-To install/build:
-
-make yes-srd
-make machine :pre
-
-To un-install/re-build:
-
-make no-srd
-make machine :pre
-
 [Supporting info:]
 
 src/SRD: filenames -> commands
@@ -1434,33 +988,11 @@ system.
 library was written by Chris Rycroft (Harvard U) while at UC Berkeley
 and LBNL.
 
-[Install or un-install:]
-
-Before building LAMMPS with this package, you must first download and
-build the Voro++ library.  You can do this manually if you prefer;
-follow the instructions in lib/voronoi/README.  You can also do it in
-one step from the lammps/src dir, using a command like these, which
-simply invoke the lib/voronoi/Install.py script with the specified
-args:
-
-make lib-voronoi                          # print help message
-make lib-voronoi args="-b"                # download and build the default version in lib/voronoi/voro++-<version>
-make lib-voronoi args="-p $HOME/voro++"   # use existing Voro++ installation in $HOME/voro++
-make lib-voronoi args="-b -v voro++0.4.6" # download and build the 0.4.6 version in lib/voronoi/voro++-0.4.6 :pre
-
-Note that 2 symbolic (soft) links, "includelink" and "liblink", are
-created in lib/voronoi to point to the Voro++ src dir.  When LAMMPS
-builds in src it will use these links.  You should not need to edit
-the lib/voronoi/Makefile.lammps file.
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
+[Install:] 
 
-make yes-voronoi
-make machine :pre
-
-make no-voronoi
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -1484,46 +1016,11 @@ atomic information to continuum fields.
 
 [Authors:] Reese Jones, Jeremy Templeton, Jon Zimmerman (Sandia).
 
-[Install or un-install:]
-
-Before building LAMMPS with this package, you must first build the ATC
-library in lib/atc.  You can do this manually if you prefer; follow
-the instructions in lib/atc/README.  You can also do it in one step
-from the lammps/src dir, using a command like these, which simply
-invoke the lib/atc/Install.py script with the specified args:
-
-make lib-atc                      # print help message
-make lib-atc args="-m serial"     # build with GNU g++ compiler and MPI STUBS (settings as with "make serial")
-make lib-atc args="-m mpi"        # build with default MPI compiler (settings as with "make mpi")
-make lib-atc args="-m icc"        # build with Intel icc compiler :pre
-
-The build should produce two files: lib/atc/libatc.a and
-lib/atc/Makefile.lammps.  The latter is copied from an existing
-Makefile.lammps.* and has settings needed to build LAMMPS with the ATC
-library.  If necessary, you can edit/create a new
-lib/atc/Makefile.machine file for your system, which should define an
-EXTRAMAKE variable to specify a corresponding Makefile.lammps.machine
-file.
-
-Note that the Makefile.lammps file has settings for the BLAS and
-LAPACK linear algebra libraries.  As explained in lib/atc/README these
-can either exist on your system, or you can use the files provided in
-lib/linalg.  In the latter case you also need to build the library
-in lib/linalg with a command like these:
-
-make lib-linalg                     # print help message
-make lib-linalg args="-m serial"    # build with GNU Fortran compiler (settings as with "make serial")
-make lib-linalg args="-m mpi"       # build with default MPI Fortran compiler (settings as with "make mpi")
-make lib-linalg args="-m gfortran"  # build with GNU Fortran compiler :pre
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
-
-make yes-user-atc
-make machine :pre
+[Install:] 
 
-make no-user-atc
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -1546,46 +1043,11 @@ model.
 
 [Author:] Ilya Valuev (JIHT, Russia).
 
-[Install or un-install:]
+[Install:] 
 
-Before building LAMMPS with this package, you must first build the
-AWPMD library in lib/awpmd.  You can do this manually if you prefer;
-follow the instructions in lib/awpmd/README.  You can also do it in
-one step from the lammps/src dir, using a command like these, which
-simply invoke the lib/awpmd/Install.py script with the specified args:
-
-make lib-awpmd                   # print help message
-make lib-awpmd args="-m serial"  # build with GNU g++ compiler and MPI STUBS (settings as with "make serial")
-make lib-awpmd args="-m mpi"     # build with default MPI compiler (settings as with "make mpi")
-make lib-awpmd args="-m icc"     # build with Intel icc compiler :pre
-
-The build should produce two files: lib/awpmd/libawpmd.a and
-lib/awpmd/Makefile.lammps.  The latter is copied from an existing
-Makefile.lammps.* and has settings needed to build LAMMPS with the
-AWPMD library.  If necessary, you can edit/create a new
-lib/awpmd/Makefile.machine file for your system, which should define
-an EXTRAMAKE variable to specify a corresponding
-Makefile.lammps.machine file.
-
-Note that the Makefile.lammps file has settings for the BLAS and
-LAPACK linear algebra libraries.  As explained in lib/awpmd/README
-these can either exist on your system, or you can use the files
-provided in lib/linalg.  In the latter case you also need to build the
-library in lib/linalg with a command like these:
-
-make lib-linalg                     # print help message
-make lib-linalg args="-m serial"    # build with GNU Fortran compiler (settings as with "make serial")
-make lib-linalg args="-m mpi"       # build with default MPI Fortran compiler (settings as with "make mpi")
-make lib-linalg args="-m gfortran"  # build with GNU Fortran compiler :pre
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
-
-make yes-user-awpmd
-make machine :pre
-
-make no-user-awpmd
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -1608,15 +1070,8 @@ N. J. H. Dunn and W. G. Noid, "Bottom-up coarse-grained models that
 accurately describe the structure, pressure, and compressibility of
 molecular liquids," J. Chem. Phys. 143, 243148 (2015).
 
-[Authors:] Nicholas J. H. Dunn and Michael R. DeLyser (The Pennsylvania State University)
-
-[Install or un-install:]
-
-make yes-user-bocs
-make machine :pre
-
-make no-user-bocs
-make machine :pre
+[Authors:] Nicholas J. H. Dunn and Michael R. DeLyser (The
+Pennsylvania State University)
 
 [Supporting info:]
 
@@ -1645,14 +1100,6 @@ stability.
 
 [Author:] Oliver Henrich (University of Strathclyde, Glasgow).
 
-[Install or un-install:]
-
-make yes-user-cgdna
-make machine :pre
-
-make no-user-cgdna
-make machine :pre
-
 [Supporting info:]
 
 src/USER-CGDNA: filenames -> commands
@@ -1676,14 +1123,6 @@ acids.
 
 [Author:] Axel Kohlmeyer (Temple U).
 
-[Install or un-install:]
-
-make yes-user-cgsdk
-make machine :pre
-
-make no-user-cgsdk
-make machine :pre
-
 [Supporting info:]
 
 src/USER-CGSDK: filenames -> commands
@@ -1712,36 +1151,11 @@ and Jerome Henin (LISM, CNRS, Marseille, France), originally for
 the NAMD MD code, but with portability in mind.  Axel Kohlmeyer
 (Temple U) provided the interface to LAMMPS.
 
-[Install or un-install:]
+[Install:] 
 
-Before building LAMMPS with this package, you must first build the
-COLVARS library in lib/colvars.  You can do this manually if you
-prefer; follow the instructions in lib/colvars/README.  You can also
-do it in one step from the lammps/src dir, using a command like these,
-which simply invoke the lib/colvars/Install.py script with the
-specified args:
-
-make lib-colvars                      # print help message
-make lib-colvars args="-m serial"     # build with GNU g++ compiler (settings as with "make serial")
-make lib-colvars args="-m mpi"        # build with default MPI compiler (settings as with "make mpi")
-make lib-colvars args="-m g++-debug"  # build with GNU g++ compiler and colvars debugging enabled :pre
-
-The build should produce two files: lib/colvars/libcolvars.a and
-lib/colvars/Makefile.lammps.  The latter is copied from an existing
-Makefile.lammps.* and has settings needed to build LAMMPS with the
-COLVARS library (though typically the settings are just blank).  If
-necessary, you can edit/create a new lib/colvars/Makefile.machine file
-for your system, which should define an EXTRAMAKE variable to specify
-a corresponding Makefile.lammps.machine file.
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
-
-make yes-user-colvars
-make machine :pre
-
-make no-user-colvars
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -1763,14 +1177,6 @@ intensities based on kinematic diffraction theory.
 
 [Author:] Shawn Coleman while at the U Arkansas.
 
-[Install or un-install:]
-
-make yes-user-diffraction
-make machine :pre
-
-make no-user-diffraction
-make machine :pre
-
 [Supporting info:]
 
 src/USER-DIFFRACTION: filenames -> commands
@@ -1798,14 +1204,6 @@ algorithm.
 [Authors:] Jim Larentzos (ARL), Tim Mattox (Engility Corp), and and John
 Brennan (ARL).
 
-[Install or un-install:]
-
-make yes-user-dpd
-make machine :pre
-
-make no-user-dpd
-make machine :pre
-
 [Supporting info:]
 
 src/USER-DPD: filenames -> commands
@@ -1840,14 +1238,6 @@ for using this package in tools/drude.
 [Authors:] Alain Dequidt (U Blaise Pascal Clermont-Ferrand), Julien
 Devemy (CNRS), and Agilio Padua (U Blaise Pascal).
 
-[Install or un-install:]
-
-make yes-user-drude
-make machine :pre
-
-make no-user-drude
-make machine :pre
-
 [Supporting info:]
 
 src/USER-DRUDE: filenames -> commands
@@ -1879,14 +1269,6 @@ tools/eff; see its README file.
 
 [Author:] Andres Jaramillo-Botero (CalTech).
 
-[Install or un-install:]
-
-make yes-user-eff
-make machine :pre
-
-make no-user-eff
-make machine :pre
-
 [Supporting info:]
 
 src/USER-EFF: filenames -> commands
@@ -1918,14 +1300,6 @@ for using this package in tools/fep; see its README file.
 
 [Author:] Agilio Padua (Universite Blaise Pascal Clermont-Ferrand)
 
-[Install or un-install:]
-
-make yes-user-fep
-make machine :pre
-
-make no-user-fep
-make machine :pre
-
 [Supporting info:]
 
 src/USER-FEP: filenames -> commands
@@ -1957,37 +1331,11 @@ system.
 [Author:] Pierre de Buyl (KU Leuven) created both the package and the
 H5MD format.
 
-[Install or un-install:]
-
-Note that to follow these steps to compile and link to the CH5MD
-library, you need the standard HDF5 software package installed on your
-system, which should include the h5cc compiler and the HDF5 library.
-
-Before building LAMMPS with this package, you must first build the
-CH5MD library in lib/h5md.  You can do this manually if you prefer;
-follow the instructions in lib/h5md/README.  You can also do it in one
-step from the lammps/src dir, using a command like these, which simply
-invoke the lib/h5md/Install.py script with the specified args:
-
-make lib-h5md                     # print help message
-make lib-hm5d args="-m h5cc"      # build with h5cc compiler :pre
-
-The build should produce two files: lib/h5md/libch5md.a and
-lib/h5md/Makefile.lammps.  The latter is copied from an existing
-Makefile.lammps.* and has settings needed to build LAMMPS with the
-system HDF5 library.  If necessary, you can edit/create a new
-lib/h5md/Makefile.machine file for your system, which should define an
-EXTRAMAKE variable to specify a corresponding Makefile.lammps.machine
-file.
+[Install:] 
 
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
-
-make yes-user-h5md
-make machine :pre
-
-make no-user-h5md
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -2008,9 +1356,9 @@ All of them have an "intel" in their style name.  The "Speed
 intel"_Speed_intel.html doc page gives details of what hardware and
 compilers are required on your system, and how to build and use this
 package.  Its styles can be invoked at run time via the "-sf intel" or
-"-suffix intel" "command-line switches"_Section_start.html#start_6.
-Also see the "KOKKOS"_#KOKKOS, "OPT"_#OPT, and "USER-OMP"_#USER-OMP
-packages, which have styles optimized for CPUs and KNLs.
+"-suffix intel" "command-line switches"_Run_options.html.  Also see
+the "KOKKOS"_#KOKKOS, "OPT"_#OPT, and "USER-OMP"_#USER-OMP packages,
+which have styles optimized for CPUs and KNLs.
 
 You need to have an Intel compiler, version 14 or higher to take full
 advantage of this package. While compilation with GNU compilers is
@@ -2019,49 +1367,13 @@ supported, performance will be suboptimal.
 NOTE: the USER-INTEL package contains styles that require using the
 -restrict flag, when compiling with Intel compilers.
 
-
 [Author:] Mike Brown (Intel).
 
-[Install or un-install:]
-
-For the USER-INTEL package, you have 2 choices when building.  You can
-build with either CPU or KNL support.  Each choice requires additional
-settings in your Makefile.machine for CCFLAGS and LINKFLAGS and
-optimized malloc libraries.  See the
-src/MAKE/OPTIONS/Makefile.intel_cpu and src/MAKE/OPTIONS/Makefile.knl
-files for examples.
+[Install:] 
 
-For CPUs:
-
-OPTFLAGS =      -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits
-CCFLAGS =	-g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload \
--fno-alias -ansi-alias -restrict $(OPTFLAGS)
-LINKFLAGS =	-g -qopenmp $(OPTFLAGS)
-LIB =           -ltbbmalloc -ltbbmalloc_proxy :pre
-
-For KNLs:
-
-OPTFLAGS =      -xMIC-AVX512 -O2 -fp-model fast=2 -no-prec-div -qoverride-limits
-CCFLAGS =	-g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload \
--fno-alias -ansi-alias -restrict $(OPTFLAGS)
-LINKFLAGS =	-g -qopenmp $(OPTFLAGS)
-LIB =           -ltbbmalloc :pre
-
-Once you have an appropriate Makefile.machine, you can
-install/un-install the package and build LAMMPS in the usual manner.
-Note that you cannot build one executable to run on multiple hardware
-targets (Intel CPUs or KNL).  You need to build LAMMPS once for each
-hardware target, to produce a separate executable.
-
-You should also typically install the USER-OMP package, as it can be
-used in tandem with the USER-INTEL package to good effect, as
-explained on the "Speed intel"_Speed_intel.html doc page.
-
-make yes-user-intel yes-user-omp
-make machine :pre
-
-make no-user-intel no-user-omp
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -2069,8 +1381,8 @@ src/USER-INTEL: filenames -> commands
 src/USER-INTEL/README
 "Speed packages"_Speed_packages.html
 "Speed intel"_Speed_intel.html
-"Section 2.6 -sf intel"_Section_start.html#start_6
-"Section 2.6 -pk intel"_Section_start.html#start_6
+"Section 2.6 -sf intel"_Run_options.html
+"Section 2.6 -pk intel"_Run_options.html
 "package intel"_package.html
 "Commands all"_Commands_all.html pages (fix,compute,pair,etc) for styles followed by (i)
 src/USER-INTEL/TEST
@@ -2088,14 +1400,6 @@ can be used to model MD particles influenced by hydrodynamic forces.
 [Authors:] Frances Mackay and Colin Denniston (University of Western
 Ontario).
 
-[Install or un-install:]
-
-make yes-user-lb
-make machine :pre
-
-make no-user-lb
-make machine :pre
-
 [Supporting info:]
 
 src/USER-LB: filenames -> commands
@@ -2122,14 +1426,6 @@ matrix-MGPT algorithm due to Tomas Oppelstrup at LLNL.
 
 [Authors:] Tomas Oppelstrup and John Moriarty (LLNL).
 
-[Install or un-install:]
-
-make yes-user-mgpt
-make machine :pre
-
-make no-user-mgpt
-make machine :pre
-
 [Supporting info:]
 
 src/USER-MGPT: filenames -> commands
@@ -2150,14 +1446,6 @@ dihedral, improper, or command style.
 [Authors:] The author for each style in the package is listed in the
 src/USER-MISC/README file.
 
-[Install or un-install:]
-
-make yes-user-misc
-make machine :pre
-
-make no-user-misc
-make machine :pre
-
 [Supporting info:]
 
 src/USER-MISC: filenames -> commands
@@ -2178,16 +1466,9 @@ algorithm to formulate single-particle constraint functions
 g(xi,yi,zi) = 0 and their derivative (i.e. the normal of the manifold)
 n = grad(g).
 
-[Author:] Stefan Paquay (until 2017: Eindhoven University of Technology (TU/e), The
-Netherlands; since 2017: Brandeis University, Waltham, MA, USA)
-
-[Install or un-install:]
-
-make yes-user-manifold
-make machine :pre
-
-make no-user-manifold
-make machine :pre
+[Author:] Stefan Paquay (until 2017: Eindhoven University of
+Technology (TU/e), The Netherlands; since 2017: Brandeis University,
+Waltham, MA, USA)
 
 [Supporting info:]
 
@@ -2216,14 +1497,6 @@ multiple times.
 based on the Fortran version of Greg Wagner (Northwestern U) while at
 Sandia.
 
-[Install or un-install:]
-  
-make yes-user-meamc
-make machine :pre
- 
-make no-user-meamc
-make machine :pre
- 
 [Supporting info:]
 
 src/USER-MEAMC: filenames -> commands
@@ -2247,14 +1520,6 @@ algorithm.
 
 [Author:] Zhen Li (Division of Applied Mathematics, Brown University)
 
-[Install or un-install:]
-  
-make yes-user-meso
-make machine :pre
- 
-make no-user-meso
-make machine :pre
- 
 [Supporting info:]
 
 src/USER-MESO: filenames -> commands
@@ -2287,14 +1552,6 @@ well as the "MOF+"_MOFplus website.
 [Author:] Hendrik Heenen (Technical U of Munich), 
 Rochus Schmid (Ruhr-University Bochum).
 
-[Install or un-install:]
-
-make yes-user-mofff
-make machine :pre
-
-make no-user-mofff
-make machine :pre
-
 [Supporting info:]
 
 src/USER-MOFFF: filenames -> commands
@@ -2335,20 +1592,11 @@ at
 
 [Author:] Axel Kohlmeyer (Temple U).
 
-[Install or un-install:]
-
-Note that the lib/molfile/Makefile.lammps file has a setting for a
-dynamic loading library libdl.a that should is typically present on
-all systems, which is required for LAMMPS to link with this package.
-If the setting is not valid for your system, you will need to edit the
-Makefile.lammps file.  See lib/molfile/README and
-lib/molfile/Makefile.lammps for details.
+[Install:] 
 
-make yes-user-molfile
-make machine :pre
-
-make no-user-molfile
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -2383,20 +1631,11 @@ tools:
 
 [Author:] Lars Pastewka (Karlsruhe Institute of Technology).
 
-[Install or un-install:]
-
-Note that to follow these steps, you need the standard NetCDF software
-package installed on your system.  The lib/netcdf/Makefile.lammps file
-has settings for NetCDF include and library files that LAMMPS needs to
-compile and linkk with this package.  If the settings are not valid
-for your system, you will need to edit the Makefile.lammps file.  See
-lib/netcdf/README for details.
+[Install:] 
 
-make yes-user-netcdf
-make machine :pre
-
-make no-user-netcdf
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -2417,10 +1656,9 @@ via OpenMP directives.  All of them have an "omp" in their style name.
 The "Speed omp"_Speed_omp.html doc page gives details of what hardware
 and compilers are required on your system, and how to build and use
 this package.  Its styles can be invoked at run time via the "-sf omp"
-or "-suffix omp" "command-line switches"_Section_start.html#start_6.
-Also see the "KOKKOS"_#KOKKOS, "OPT"_#OPT, and
-"USER-INTEL"_#USER-INTEL packages, which have styles optimized for
-CPUs.
+or "-suffix omp" "command-line switches"_Run_options.html.  Also see
+the "KOKKOS"_#KOKKOS, "OPT"_#OPT, and "USER-INTEL"_#USER-INTEL
+packages, which have styles optimized for CPUs.
 
 [Author:] Axel Kohlmeyer (Temple U).
 
@@ -2437,16 +1675,11 @@ See src/MAKE/OPTIONS/Makefile.omp for an example.
 Once you have an appropriate Makefile.machine, you can
 install/un-install the package and build LAMMPS in the usual manner:
 
-[Install or un-install:]
-
-make yes-user-omp
-make machine :pre
+[Install:] 
 
-make no-user-omp
-make machine :pre
-
-CCFLAGS: add -fopenmp (and -restrict when using Intel compilers)
-LINKFLAGS: add -fopenmp :ul
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -2454,8 +1687,8 @@ src/USER-OMP: filenames -> commands
 src/USER-OMP/README
 "Speed packages"_Speed_packages.html
 "Speed omp"_Speed_omp.html
-"Section 2.6 -sf omp"_Section_start.html#start_6
-"Section 2.6 -pk omp"_Section_start.html#start_6
+"Section 2.6 -sf omp"_Run_options.html
+"Section 2.6 -pk omp"_Run_options.html
 "package omp"_package.html
 "Commands all"_Commands_all.html pages (fix,compute,pair,etc) for styles followed by (o)
 "Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
@@ -2472,14 +1705,6 @@ relations, directly from molecular dynamics simulations.
 
 [Author:] Ling-Ti Kong (Shanghai Jiao Tong University).
 
-[Install or un-install:]
-
-make yes-user-phonon
-make machine :pre
-
-make no-user-phonon
-make machine :pre
-
 [Supporting info:]
 
 src/USER-PHONON: filenames -> commands
@@ -2510,42 +1735,11 @@ without changes to LAMMPS itself.
 
 [Author:] Axel Kohlmeyer (Temple U).
 
-[Install or un-install:]
-
-Before building LAMMPS with this package, you must first build the
-QMMM library in lib/qmmm.  You can do this manually if you prefer;
-follow the first two steps explained in lib/qmmm/README.  You can
-also do it in one step from the lammps/src dir, using a command like
-these, which simply invoke the lib/qmmm/Install.py script with the
-specified args:
-
-make lib-qmmm                      # print help message
-make lib-qmmm args="-m serial"     # build with GNU Fortran compiler (settings as in "make serial")
-make lib-qmmm args="-m mpi"        # build with default MPI compiler (settings as in "make mpi")
-make lib-qmmm args="-m gfortran"   # build with GNU Fortran compiler :pre
-
-The build should produce two files: lib/qmmm/libqmmm.a and
-lib/qmmm/Makefile.lammps.  The latter is copied from an existing
-Makefile.lammps.* and has settings needed to build LAMMPS with the
-QMMM library (though typically the settings are just blank).  If
-necessary, you can edit/create a new lib/qmmm/Makefile.machine file
-for your system, which should define an EXTRAMAKE variable to specify
-a corresponding Makefile.lammps.machine file.
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
+[Install:] 
 
-make yes-user-qmmm
-make machine :pre
-
-make no-user-qmmm
-make machine :pre
-
-NOTE: The LAMMPS executable these steps produce is not yet functional
-for a QM/MM simulation.  You must also build Quantum ESPRESSO and
-create a new executable which links LAMMPS and Quantum ESPRESSO
-together.  These are steps 3 and 4 described in the lib/qmmm/README
-file.
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -2573,14 +1767,6 @@ simulation.
 
 [Author:] Yuan Shen (Stanford U).
 
-[Install or un-install:]
-
-make yes-user-qtb
-make machine :pre
-
-make no-user-qtb
-make machine :pre
-
 [Supporting info:]
 
 src/USER-QTB: filenames -> commands
@@ -2607,26 +1793,11 @@ on your system.
 
 [Author:] Albert Bartok (Cambridge University)
 
-[Install or un-install:]
-
-Note that to follow these steps to compile and link to the QUIP
-library, you must first download and build QUIP on your systems.  It
-can be obtained from GitHub.  See step 1 and step 1.1 in the
-lib/quip/README file for details on how to do this.  Note that it
-requires setting two environment variables, QUIP_ROOT and QUIP_ARCH,
-which will be accessed by the lib/quip/Makefile.lammps file which is
-used when you compile and link LAMMPS with this package.  You should
-only need to edit this file if the LAMMPS build can not use its
-settings to successfully build on your system.
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
-
-make yes-user-quip
-make machine :pre
+[Install:] 
 
-make no-user-quip
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -2649,14 +1820,6 @@ for monitoring molecules as bonds are created and destroyed.
 
 [Author:] Hasan Metin Aktulga (MSU) while at Purdue University.
 
-[Install or un-install:]
-
-make yes-user-reaxc
-make machine :pre
-
-make no-user-reaxc
-make machine :pre
-
 [Supporting info:]
 
 src/USER-REAXC: filenames -> commands
@@ -2689,31 +1852,11 @@ specified as surface geometries from *.STL files.
 [Author:] Georg Ganzenmuller (Fraunhofer-Institute for High-Speed
 Dynamics, Ernst Mach Institute, Germany).
 
-[Install or un-install:]
-
-Before building LAMMPS with this package, you must first download the
-Eigen library.  Eigen is a template library, so you do not need to
-build it, just download it.  You can do this manually if you prefer;
-follow the instructions in lib/smd/README.  You can also do it in one
-step from the lammps/src dir, using a command like these, which simply
-invoke the lib/smd/Install.py script with the specified args:
-
-make lib-smd                         # print help message
-make lib-smd args="-b"               # download and build in default lib/smd/eigen-eigen-...
-make lib-smd args="-p /usr/include/eigen3"    # use existing Eigen installation in /usr/include/eigen3 :pre
-
-Note that a symbolic (soft) link named "includelink" is created in
-lib/smd to point to the Eigen dir.  When LAMMPS builds it will use
-this link.  You should not need to edit the lib/smd/Makefile.lammps file.
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
-
-make yes-user-smd
-make machine :pre
+[Install:] 
 
-make no-user-smd
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
@@ -2736,14 +1879,6 @@ ionocovalent bonds in oxides.
 [Authors:] Nicolas Salles, Emile Maras, Olivier Politano, and Robert
 Tetot (LAAS-CNRS, France).
 
-[Install or un-install:]
-
-make yes-user-smtbq
-make machine :pre
-
-make no-user-smtbq
-make machine :pre
-
 [Supporting info:]
 
 src/USER-SMTBQ: filenames -> commands
@@ -2775,14 +1910,6 @@ property/atom"_compute_property_atom.html command.
 [Author:] Georg Ganzenmuller (Fraunhofer-Institute for High-Speed
 Dynamics, Ernst Mach Institute, Germany).
 
-[Install or un-install:]
-
-make yes-user-sph
-make machine :pre
-
-make no-user-sph
-make machine :pre
-
 [Supporting info:]
 
 src/USER-SPH: filenames -> commands
@@ -2803,14 +1930,6 @@ stress, etc) about individual interactions.
 
 [Author:] Axel Kohlmeyer (Temple U).
 
-[Install or un-install:]
-
-make yes-user-tally
-make machine :pre
-
-make no-user-tally
-make machine :pre
-
 [Supporting info:]
 
 src/USER-TALLY: filenames -> commands
@@ -2830,14 +1949,6 @@ supporting compute styles and an output option.
 
 [Author:] David Nicholson (MIT).
 
-[Install or un-install:]
-
-make yes-user-uef
-make machine :pre
-
-make no-user-uef
-make machine :pre
-
 [Supporting info:]
 
 src/USER-UEF: filenames -> commands
@@ -2867,23 +1978,11 @@ system.
 
 [Authors:] Richard Berger (JKU) and Daniel Queteschiner (DCS Computing).
 
-[Install or un-install:]
-
-The lib/vtk/Makefile.lammps file has settings for accessing VTK files
-and its library, which are required for LAMMPS to build and link with
-this package.  If the settings are not valid for your system, check if
-one of the other lib/vtk/Makefile.lammps.* files is compatible and
-copy it to Makefile.lammps.  If none of the provided files work, you
-will need to edit the Makefile.lammps file.
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
-
-make yes-user-vtk
-make machine :pre
+[Install:] 
 
-make no-user-vtk
-make machine :pre
+This package has "specific installation
+instructions"_Build_extras.html#gpu on the "Build
+extras"_Build_extras.html doc page.
 
 [Supporting info:]
 
diff --git a/doc/src/Python_shlib.txt b/doc/src/Python_shlib.txt
index 1a921e4025..18775cd2fd 100644
--- a/doc/src/Python_shlib.txt
+++ b/doc/src/Python_shlib.txt
@@ -9,10 +9,11 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 Build LAMMPS as a shared library :h3
 
-Instructions on how to build LAMMPS as a shared library are given in
-"Section 2.4"_Section_start.html#start_4.  A shared library is one
-that is dynamically loadable, which is what Python requires to wrap
-LAMMPS.  On Linux this is a library file that ends in ".so", not ".a".
+Instructions on how to build LAMMPS as a shared library are given on
+the "Build_basics"_Build_basics.html doc page.  A shared library is
+one that is dynamically loadable, which is what Python requires to
+wrap LAMMPS.  On Linux this is a library file that ends in ".so", not
+".a".
 
 From the src directory, type
 
@@ -29,6 +30,6 @@ NOTE: If you are building LAMMPS with an MPI or FFT library or other
 auxiliary libraries (used by various packages), then all of these
 extra libraries must also be shared libraries.  If the LAMMPS
 shared-library build fails with an error complaining about this, see
-"Section 2.4"_Section_start.html#start_4 for more details.
+the "Build_basics"_Build_basics.html doc page.
 
-Also include CMake info on this
+TODO: Also include CMake info on this
diff --git a/doc/src/Python_test.txt b/doc/src/Python_test.txt
index 4a05d5c468..3d52485aa8 100644
--- a/doc/src/Python_test.txt
+++ b/doc/src/Python_test.txt
@@ -32,10 +32,10 @@ first importing from the lammps.py file:
 >>> from ctypes import CDLL
 >>> CDLL("liblammps.so") :pre
 
-If an error occurs, carefully go thru the steps in "Section
-2.4"_Section_start.html#start_4 and above about building a shared
-library and about insuring Python can find the necessary two files
-it needs.
+If an error occurs, carefully go thru the steps on the
+"Build_basics"_Build_basics.html doc page about building a shared
+library and the "Python_install"_Python_install.html doc page about
+insuring Python can find the necessary two files it needs.
 
 [Test LAMMPS and Python in serial:] :h4
 
diff --git a/doc/src/Speed_gpu.txt b/doc/src/Speed_gpu.txt
index ab8ec7e9d1..cd81c03ba0 100644
--- a/doc/src/Speed_gpu.txt
+++ b/doc/src/Speed_gpu.txt
@@ -52,9 +52,9 @@ specify the # of GPUs per node
 use GPU styles in your input script :ul
 
 The latter two steps can be done using the "-pk gpu" and "-sf gpu"
-"command-line switches"_Section_start.html#start_6 respectively.  Or
-the effect of the "-pk" or "-sf" switches can be duplicated by adding
-the "package gpu"_package.html or "suffix gpu"_suffix.html commands
+"command-line switches"_Run_options.html respectively.  Or the effect
+of the "-pk" or "-sf" switches can be duplicated by adding the
+"package gpu"_package.html or "suffix gpu"_suffix.html commands
 respectively to your input script.
 
 [Required hardware/software:]
@@ -143,10 +143,10 @@ automatically if you create more MPI tasks/node than there are
 GPUs/mode.  E.g. with 8 MPI tasks/node and 2 GPUs, each GPU will be
 shared by 4 MPI tasks.
 
-Use the "-sf gpu" "command-line switch"_Section_start.html#start_6,
-which will automatically append "gpu" to styles that support it.  Use
-the "-pk gpu Ng" "command-line switch"_Section_start.html#start_6 to
-set Ng = # of GPUs/node to use.
+Use the "-sf gpu" "command-line switch"_Run_options.html, which will
+automatically append "gpu" to styles that support it.  Use the "-pk
+gpu Ng" "command-line switch"_Run_options.html to set Ng = # of
+GPUs/node to use.
 
 lmp_machine -sf gpu -pk gpu 1 -in in.script                         # 1 MPI task uses 1 GPU
 mpirun -np 12 lmp_machine -sf gpu -pk gpu 2 -in in.script           # 12 MPI tasks share 2 GPUs on a single 16-core (or whatever) node
@@ -180,8 +180,8 @@ pair_style lj/cut/gpu 2.5 :pre
 
 You must also use the "package gpu"_package.html command to enable the
 GPU package, unless the "-sf gpu" or "-pk gpu" "command-line
-switches"_Section_start.html#start_6 were used.  It specifies the
-number of GPUs/node to use, as well as other options.
+switches"_Run_options.html were used.  It specifies the number of
+GPUs/node to use, as well as other options.
 
 [Speed-ups to expect:]
 
diff --git a/doc/src/Speed_intel.txt b/doc/src/Speed_intel.txt
index 20f49672e0..2b29ec3b0f 100644
--- a/doc/src/Speed_intel.txt
+++ b/doc/src/Speed_intel.txt
@@ -306,31 +306,31 @@ Hyper-Threading technology disabled.
 [Run with the USER-INTEL package from the command line:]
 
 To enable USER-INTEL optimizations for all available styles used in
-the input script, the "-sf intel"
-"command-line switch"_Section_start.html#start_6 can be used without
-any requirement for editing the input script. This switch will
-automatically append "intel" to styles that support it. It also
-invokes a default command: "package intel 1"_package.html. This
-package command is used to set options for the USER-INTEL package.
-The default package command will specify that USER-INTEL calculations
-are performed in mixed precision, that the number of OpenMP threads
-is specified by the OMP_NUM_THREADS environment variable, and that
-if coprocessors are present and the binary was built with offload
-support, that 1 coprocessor per node will be used with automatic
-balancing of work between the CPU and the coprocessor.
+the input script, the "-sf intel" "command-line
+switch"_Run_options.html can be used without any requirement for
+editing the input script. This switch will automatically append
+"intel" to styles that support it. It also invokes a default command:
+"package intel 1"_package.html. This package command is used to set
+options for the USER-INTEL package.  The default package command will
+specify that USER-INTEL calculations are performed in mixed precision,
+that the number of OpenMP threads is specified by the OMP_NUM_THREADS
+environment variable, and that if coprocessors are present and the
+binary was built with offload support, that 1 coprocessor per node
+will be used with automatic balancing of work between the CPU and the
+coprocessor.
 
 You can specify different options for the USER-INTEL package by using
-the "-pk intel Nphi" "command-line switch"_Section_start.html#start_6
-with keyword/value pairs as specified in the documentation. Here,
-Nphi = # of Xeon Phi coprocessors/node (ignored without offload
+the "-pk intel Nphi" "command-line switch"_Run_options.html with
+keyword/value pairs as specified in the documentation. Here, Nphi = #
+of Xeon Phi coprocessors/node (ignored without offload
 support). Common options to the USER-INTEL package include {omp} to
 override any OMP_NUM_THREADS setting and specify the number of OpenMP
-threads, {mode} to set the floating-point precision mode, and
-{lrt} to enable Long-Range Thread mode as described below. See the
-"package intel"_package.html command for details, including the
-default values used for all its options if not specified, and how to
-set the number of OpenMP threads via the OMP_NUM_THREADS environment
-variable if desired.
+threads, {mode} to set the floating-point precision mode, and {lrt} to
+enable Long-Range Thread mode as described below. See the "package
+intel"_package.html command for details, including the default values
+used for all its options if not specified, and how to set the number
+of OpenMP threads via the OMP_NUM_THREADS environment variable if
+desired.
 
 Examples (see documentation for your MPI/Machine for differences in
 launching MPI applications):
@@ -390,19 +390,18 @@ lj/cut or when using LRT mode on processors supporting AVX-512.
 
 Not all styles are supported in the USER-INTEL package. You can mix
 the USER-INTEL package with styles from the "OPT"_Speed_opt.html
-package or the "USER-OMP package"_Speed_omp.html. Of course,
-this requires that these packages were installed at build time. This
-can performed automatically by using "-sf hybrid intel opt" or
-"-sf hybrid intel omp" command-line options. Alternatively, the "opt"
-and "omp" suffixes can be appended manually in the input script. For
-the latter, the "package omp"_package.html command must be in the
-input script or the "-pk omp Nt" "command-line
-switch"_Section_start.html#start_6 must be used where Nt is the
-number of OpenMP threads. The number of OpenMP threads should not be
-set differently for the different packages. Note that the "suffix
-hybrid intel omp"_suffix.html command can also be used within the
-input script to automatically append the "omp" suffix to styles when
-USER-INTEL styles are not available.
+package or the "USER-OMP package"_Speed_omp.html. Of course, this
+requires that these packages were installed at build time. This can
+performed automatically by using "-sf hybrid intel opt" or "-sf hybrid
+intel omp" command-line options. Alternatively, the "opt" and "omp"
+suffixes can be appended manually in the input script. For the latter,
+the "package omp"_package.html command must be in the input script or
+the "-pk omp Nt" "command-line switch"_Run_options.html must be used
+where Nt is the number of OpenMP threads. The number of OpenMP threads
+should not be set differently for the different packages. Note that
+the "suffix hybrid intel omp"_suffix.html command can also be used
+within the input script to automatically append the "omp" suffix to
+styles when USER-INTEL styles are not available.
 
 NOTE: For simulations on higher node counts, add "processors * * * 
 grid numa"_processors.html" to the beginning of the input script for
@@ -496,8 +495,8 @@ sorting"_atom_modify.html is changed to 1 so that the per-atom data is
 effectively sorted at every rebuild of the neighbor lists. All the
 available coprocessor threads on each Phi will be divided among MPI
 tasks, unless the {tptask} option of the "-pk intel" "command-line
-switch"_Section_start.html#start_6 is used to limit the coprocessor
-threads per MPI task.
+switch"_Run_options.html is used to limit the coprocessor threads per
+MPI task.
 
 [Restrictions:]
 
diff --git a/doc/src/Speed_kokkos.txt b/doc/src/Speed_kokkos.txt
index 14f4103aed..f26b2df7e1 100644
--- a/doc/src/Speed_kokkos.txt
+++ b/doc/src/Speed_kokkos.txt
@@ -142,12 +142,11 @@ mpirun -np 2 lmp_kokkos_omp -k on t 8 -sf kk -in in.lj          # 1 node,  2 MPI
 mpirun -np 32 -ppn 4 lmp_kokkos_omp -k on t 4 -sf kk -in in.lj  # 8 nodes, 4 MPI tasks/node, 4 threads/task :pre
 
 To run using the KOKKOS package, use the "-k on", "-sf kk" and "-pk
-kokkos" "command-line switches"_Section_start.html#start_7 in your
-mpirun command.  You must use the "-k on" "command-line
-switch"_Section_start.html#start_7 to enable the KOKKOS package. It
-takes additional arguments for hardware settings appropriate to your
-system. Those arguments are "documented
-here"_Section_start.html#start_7. For OpenMP use:
+kokkos" "command-line switches"_Run_options.html in your mpirun
+command.  You must use the "-k on" "command-line
+switch"_Run_options.html to enable the KOKKOS package. It takes
+additional arguments for hardware settings appropriate to your system.
+For OpenMP use:
 
 -k on t Nt :pre
 
@@ -162,11 +161,11 @@ command (with no additional arguments) which sets various KOKKOS
 options to default values, as discussed on the "package"_package.html
 command doc page.
 
-The "-sf kk" "command-line switch"_Section_start.html#start_7 will
-automatically append the "/kk" suffix to styles that support it.  In
-this manner no modification to the input script is
-needed. Alternatively, one can run with the KOKKOS package by editing
-the input script as described below.
+The "-sf kk" "command-line switch"_Run_options.html will automatically
+append the "/kk" suffix to styles that support it.  In this manner no
+modification to the input script is needed. Alternatively, one can run
+with the KOKKOS package by editing the input script as described
+below.
 
 NOTE: The default for the "package kokkos"_package.html command is to
 use "full" neighbor lists and set the Newton flag to "off" for both
@@ -174,10 +173,10 @@ pairwise and bonded interactions. However, when running on CPUs, it
 will typically be faster to use "half" neighbor lists and set the
 Newton flag to "on", just as is the case for non-accelerated pair
 styles. It can also be faster to use non-threaded communication.  Use
-the "-pk kokkos" "command-line switch"_Section_start.html#start_7 to
-change the default "package kokkos"_package.html options. See its doc
-page for details and default settings. Experimenting with its options
-can provide a speed-up for specific calculations. For example:
+the "-pk kokkos" "command-line switch"_Run_options.html to change the
+default "package kokkos"_package.html options. See its doc page for
+details and default settings. Experimenting with its options can
+provide a speed-up for specific calculations. For example:
 
 mpirun -np 16 lmp_kokkos_mpi_only -k on -sf kk -pk kokkos newton on neigh half comm no -in in.lj       # Newton on, Half neighbor list, non-threaded comm :pre
 
@@ -237,10 +236,10 @@ pairwise and bonded interactions. When running on KNL, this will
 typically be best for pair-wise potentials. For manybody potentials,
 using "half" neighbor lists and setting the Newton flag to "on" may be
 faster. It can also be faster to use non-threaded communication.  Use
-the "-pk kokkos" "command-line switch"_Section_start.html#start_7 to
-change the default "package kokkos"_package.html options. See its doc
-page for details and default settings. Experimenting with its options
-can provide a speed-up for specific calculations. For example:
+the "-pk kokkos" "command-line switch"_Run_options.html to change the
+default "package kokkos"_package.html options. See its doc page for
+details and default settings. Experimenting with its options can
+provide a speed-up for specific calculations. For example:
 
 mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos comm no -in in.lj      #  Newton off, full neighbor list, non-threaded comm
 mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos newton on neigh half comm no -in in.reax      # Newton on, half neighbor list, non-threaded comm :pre
@@ -255,16 +254,15 @@ supports.
 
 [Running on GPUs:]
 
-Use the "-k" "command-line switch"_Section_start.html#start_7 to
-specify the number of GPUs per node. Typically the -np setting of the
-mpirun command should set the number of MPI tasks/node to be equal to
-the # of physical GPUs on the node.  You can assign multiple MPI tasks
-to the same GPU with the KOKKOS package, but this is usually only
-faster if significant portions of the input script have not been
-ported to use Kokkos. Using CUDA MPS is recommended in this
-scenario. As above for multi-core CPUs (and no GPU), if N is the
-number of physical cores/node, then the number of MPI tasks/node
-should not exceed N.
+Use the "-k" "command-line switch"_Run_options.html to specify the
+number of GPUs per node. Typically the -np setting of the mpirun
+command should set the number of MPI tasks/node to be equal to the #
+of physical GPUs on the node.  You can assign multiple MPI tasks to
+the same GPU with the KOKKOS package, but this is usually only faster
+if significant portions of the input script have not been ported to
+use Kokkos. Using CUDA MPS is recommended in this scenario. As above
+for multi-core CPUs (and no GPU), if N is the number of physical
+cores/node, then the number of MPI tasks/node should not exceed N.
 
 -k on g Ng :pre
 
@@ -281,10 +279,10 @@ When running on Maxwell or Kepler GPUs, this will typically be
 best. For Pascal GPUs, using "half" neighbor lists and setting the
 Newton flag to "on" may be faster. For many pair styles, setting the
 neighbor binsize equal to the ghost atom cutoff will give speedup.
-Use the "-pk kokkos" "command-line switch"_Section_start.html#start_7
-to change the default "package kokkos"_package.html options. See its
-doc page for details and default settings. Experimenting with its
-options can provide a speed-up for specific calculations. For example:
+Use the "-pk kokkos" "command-line switch"_Run_options.html to change
+the default "package kokkos"_package.html options. See its doc page
+for details and default settings. Experimenting with its options can
+provide a speed-up for specific calculations. For example:
 
 mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos binsize 2.8 -in in.lj      # Set binsize = neighbor ghost cutoff
 mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos newton on neigh half binsize 2.8 -in in.lj      # Newton on, half neighborlist, set binsize = neighbor ghost cutoff :pre
@@ -315,10 +313,9 @@ kk"_suffix.html commands to your input script.
 The discussion above for building LAMMPS with the KOKKOS package, the
 mpirun/mpiexec command, and setting appropriate thread are the same.
 
-You must still use the "-k on" "command-line
-switch"_Section_start.html#start_7 to enable the KOKKOS package, and
-specify its additional arguments for hardware options appropriate to
-your system, as documented above.
+You must still use the "-k on" "command-line switch"_Run_options.html
+to enable the KOKKOS package, and specify its additional arguments for
+hardware options appropriate to your system, as documented above.
 
 You can use the "suffix kk"_suffix.html command, or you can explicitly add a
 "kk" suffix to individual styles in your input script, e.g.
@@ -327,7 +324,7 @@ pair_style lj/cut/kk 2.5 :pre
 
 You only need to use the "package kokkos"_package.html command if you
 wish to change any of its option defaults, as set by the "-k on"
-"command-line switch"_Section_start.html#start_7.
+"command-line switch"_Run_options.html.
 
 [Using OpenMP threading and CUDA together (experimental):]
 
diff --git a/doc/src/Speed_measure.txt b/doc/src/Speed_measure.txt
index 78dc220088..647ff71e36 100644
--- a/doc/src/Speed_measure.txt
+++ b/doc/src/Speed_measure.txt
@@ -21,8 +21,8 @@ typically no need to run for 1000s of timesteps to get accurate
 timings; you can simply extrapolate from short runs.
 
 For the set of runs, look at the timing data printed to the screen and
-log file at the end of each LAMMPS run.  "This
-section"_Section_start.html#start_7 of the manual has an overview.
+log file at the end of each LAMMPS run.  The
+"Run_output"_Run_output.html doc page gives an overview.
 
 Running on one (or a few processors) should give a good estimate of
 the serial performance and what portions of the timestep are taking
diff --git a/doc/src/Speed_omp.txt b/doc/src/Speed_omp.txt
index bcfc406902..e788d3300c 100644
--- a/doc/src/Speed_omp.txt
+++ b/doc/src/Speed_omp.txt
@@ -57,19 +57,18 @@ threads/task should not exceed the physical number of cores (on a
 node), otherwise performance will suffer.
 
 As in the lines above, use the "-sf omp" "command-line
-switch"_Section_start.html#start_6, which will automatically append
-"omp" to styles that support it.  The "-sf omp" switch also issues a
-default "package omp 0"_package.html command, which will set the
-number of threads per MPI task via the OMP_NUM_THREADS environment
-variable.
+switch"_Run_options.html, which will automatically append "omp" to
+styles that support it.  The "-sf omp" switch also issues a default
+"package omp 0"_package.html command, which will set the number of
+threads per MPI task via the OMP_NUM_THREADS environment variable.
 
 You can also use the "-pk omp Nt" "command-line
-switch"_Section_start.html#start_6, to explicitly set Nt = # of OpenMP
-threads per MPI task to use, as well as additional options.  Its
-syntax is the same as the "package omp"_package.html command whose doc
-page gives details, including the default values used if it is not
-specified.  It also gives more details on how to set the number of
-threads via the OMP_NUM_THREADS environment variable.
+switch"_Run_options.html, to explicitly set Nt = # of OpenMP threads
+per MPI task to use, as well as additional options.  Its syntax is the
+same as the "package omp"_package.html command whose doc page gives
+details, including the default values used if it is not specified.  It
+also gives more details on how to set the number of threads via the
+OMP_NUM_THREADS environment variable.
 
 [Or run with the USER-OMP package by editing an input script:]
 
diff --git a/doc/src/Speed_opt.txt b/doc/src/Speed_opt.txt
index 676a5d8418..bb0bcd255c 100644
--- a/doc/src/Speed_opt.txt
+++ b/doc/src/Speed_opt.txt
@@ -41,8 +41,8 @@ the CCFLAGS setting in your Makefile.machine must include "-restrict".
 [Run with the OPT package from the command line:]
 
 As in the lines above, use the "-sf opt" "command-line
-switch"_Section_start.html#start_6, which will automatically append
-"opt" to styles that support it.
+switch"_Run_options.html, which will automatically append "opt" to
+styles that support it.
 
 [Or run with the OPT package by editing an input script:]
 
diff --git a/doc/src/Speed_packages.txt b/doc/src/Speed_packages.txt
index f463ed91b8..6c837885cd 100644
--- a/doc/src/Speed_packages.txt
+++ b/doc/src/Speed_packages.txt
@@ -93,11 +93,11 @@ re-build LAMMPS |
   make machine |
 prepare and test a regular LAMMPS simulation |
   lmp_machine -in in.script; mpirun -np 32 lmp_machine -in in.script |
-enable specific accelerator support via '-k on' "command-line switch"_Section_start.html#start_6, |
+enable specific accelerator support via '-k on' "command-line switch"_Run_options.html, |
   only needed for KOKKOS package |
-set any needed options for the package via "-pk" "command-line switch"_Section_start.html#start_6 or "package"_package.html command, |
+set any needed options for the package via "-pk" "command-line switch"_Run_options.html or "package"_package.html command, |
   only if defaults need to be changed |
-use accelerated styles in your input via "-sf" "command-line switch"_Section_start.html#start_6 or "suffix"_suffix.html command | lmp_machine -in in.script -sf gpu
+use accelerated styles in your input via "-sf" "command-line switch"_Run_options.html or "suffix"_suffix.html command | lmp_machine -in in.script -sf gpu
 :tb(c=2,s=|)
 
 Note that the first 4 steps can be done as a single command with
diff --git a/doc/src/angle_charmm.txt b/doc/src/angle_charmm.txt
index f72f086234..8b0e298a43 100644
--- a/doc/src/angle_charmm.txt
+++ b/doc/src/angle_charmm.txt
@@ -57,13 +57,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -73,8 +73,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 [Related commands:]
 
diff --git a/doc/src/angle_class2.txt b/doc/src/angle_class2.txt
index 3e5445d3a3..fa5e29582c 100644
--- a/doc/src/angle_class2.txt
+++ b/doc/src/angle_class2.txt
@@ -89,13 +89,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -123,8 +123,8 @@ The bond-bond and bond-angle terms remain unchanged.
 
 This angle style can only be used if LAMMPS was built with the CLASS2
 package.  For the {class2/p6} style LAMMPS needs to be built with the
-USER-MOFFF package.  See the "Making LAMMPS"_Section_start.html#start_3 
-section for more info on packages.
+USER-MOFFF package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/angle_cosine.txt b/doc/src/angle_cosine.txt
index 5a1fe91c83..80cf8ae8f1 100644
--- a/doc/src/angle_cosine.txt
+++ b/doc/src/angle_cosine.txt
@@ -44,13 +44,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -60,8 +60,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 [Related commands:]
 
diff --git a/doc/src/angle_cosine_buck6d.txt b/doc/src/angle_cosine_buck6d.txt
index 63a451b763..54709c1370 100644
--- a/doc/src/angle_cosine_buck6d.txt
+++ b/doc/src/angle_cosine_buck6d.txt
@@ -55,8 +55,8 @@ the "special_bonds"_special_bonds.html 1-3 interactions to be weighted
 "special_bonds"_special_bonds.html 0.0 weighting of 1-3 interactions.  
 
 This angle style can only be used if LAMMPS was built with the
-USER-MOFFF package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+USER-MOFFF package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/angle_cosine_delta.txt b/doc/src/angle_cosine_delta.txt
index b6ac0ed818..1532e39b31 100644
--- a/doc/src/angle_cosine_delta.txt
+++ b/doc/src/angle_cosine_delta.txt
@@ -49,13 +49,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -65,8 +65,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 [Related commands:]
 
diff --git a/doc/src/angle_cosine_periodic.txt b/doc/src/angle_cosine_periodic.txt
index c5b184e0b4..039144797f 100644
--- a/doc/src/angle_cosine_periodic.txt
+++ b/doc/src/angle_cosine_periodic.txt
@@ -57,13 +57,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -73,8 +73,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 [Related commands:]
 
diff --git a/doc/src/angle_cosine_shift.txt b/doc/src/angle_cosine_shift.txt
index 90ac61fe23..8e23e1b49f 100644
--- a/doc/src/angle_cosine_shift.txt
+++ b/doc/src/angle_cosine_shift.txt
@@ -40,20 +40,20 @@ theta (angle) :ul
 
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
-They have been optimized to run faster, depending on your available
-hardware, as discussed on the "Speed packages"_Speed_packages.html doc
-page.  The accelerated styles take the same arguments and should
-produce the same results, except for round-off and precision issues.
+They have been optimized to run faster, depending on
+your"_Build_package.html doc page kages"_Speed_packages.html doc page.
+The accelerated styles take the same arguments and should produce the
+same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -63,8 +63,7 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-USER-MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER-MISC package.  
 
 [Related commands:]
 
diff --git a/doc/src/angle_cosine_shift_exp.txt b/doc/src/angle_cosine_shift_exp.txt
index f1c4c93c42..3091e83885 100644
--- a/doc/src/angle_cosine_shift_exp.txt
+++ b/doc/src/angle_cosine_shift_exp.txt
@@ -59,13 +59,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -75,8 +75,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-USER-MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER-MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/angle_cosine_squared.txt b/doc/src/angle_cosine_squared.txt
index ba5fd9d413..07fcb1ceb4 100644
--- a/doc/src/angle_cosine_squared.txt
+++ b/doc/src/angle_cosine_squared.txt
@@ -49,13 +49,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -65,8 +65,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 [Related commands:]
 
diff --git a/doc/src/angle_dipole.txt b/doc/src/angle_dipole.txt
index c001d9d920..cdb11972ec 100644
--- a/doc/src/angle_dipole.txt
+++ b/doc/src/angle_dipole.txt
@@ -77,13 +77,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -91,8 +91,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-USER-MISC package.  See the "Making LAMMPS"_Section_start.html#start_2_3
-section for more info on packages.
+USER-MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 NOTE: In the "Angles" section of the data file, the atom ID 'j'
 defining the direction of the dipole vector to restrain must come
diff --git a/doc/src/angle_fourier.txt b/doc/src/angle_fourier.txt
index e0e32c1eed..7dc9975793 100644
--- a/doc/src/angle_fourier.txt
+++ b/doc/src/angle_fourier.txt
@@ -45,13 +45,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -61,8 +61,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-USER_MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER_MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/angle_fourier_simple.txt b/doc/src/angle_fourier_simple.txt
index 3c50536a2c..ae5d308353 100644
--- a/doc/src/angle_fourier_simple.txt
+++ b/doc/src/angle_fourier_simple.txt
@@ -44,13 +44,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -60,8 +60,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-USER_MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER_MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/angle_harmonic.txt b/doc/src/angle_harmonic.txt
index 76c7a491e8..b632f68478 100644
--- a/doc/src/angle_harmonic.txt
+++ b/doc/src/angle_harmonic.txt
@@ -51,13 +51,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -67,8 +67,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/angle_hybrid.txt b/doc/src/angle_hybrid.txt
index 2646903421..0046c161be 100644
--- a/doc/src/angle_hybrid.txt
+++ b/doc/src/angle_hybrid.txt
@@ -76,8 +76,8 @@ for specific angle types.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 Unlike other angle styles, the hybrid angle style does not store angle
 coefficient info for individual sub-styles in a "binary restart
diff --git a/doc/src/angle_quartic.txt b/doc/src/angle_quartic.txt
index 294be330b1..b20a06eb8d 100644
--- a/doc/src/angle_quartic.txt
+++ b/doc/src/angle_quartic.txt
@@ -51,13 +51,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -67,8 +67,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-USER_MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER_MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/angle_sdk.txt b/doc/src/angle_sdk.txt
index 9c5630ef3a..4de1a6755d 100644
--- a/doc/src/angle_sdk.txt
+++ b/doc/src/angle_sdk.txt
@@ -46,8 +46,8 @@ from the pair_style.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-USER-CGSDK package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+USER-CGSDK package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/angle_style.txt b/doc/src/angle_style.txt
index 63295faf26..756cfc0c60 100644
--- a/doc/src/angle_style.txt
+++ b/doc/src/angle_style.txt
@@ -83,10 +83,9 @@ Angle styles can only be set for atom_styles that allow angles to be
 defined.
 
 Most angle styles are part of the MOLECULE 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 on packages.
-The doc pages for individual bond potentials tell if it is part of a
-package.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.  The doc pages for
+individual bond potentials tell if it is part of a package.
 
 [Related commands:]
 
diff --git a/doc/src/angle_table.txt b/doc/src/angle_table.txt
index 31ab532be1..6b9187e512 100644
--- a/doc/src/angle_table.txt
+++ b/doc/src/angle_table.txt
@@ -130,13 +130,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -146,8 +146,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 [Related commands:]
 
diff --git a/doc/src/atom_modify.txt b/doc/src/atom_modify.txt
index c882d1b0ba..4b4ac3862d 100644
--- a/doc/src/atom_modify.txt
+++ b/doc/src/atom_modify.txt
@@ -58,9 +58,9 @@ simulation so large that IDs cannot be uniquely assigned.  For a
 default LAMMPS build this limit is 2^31 or about 2 billion atoms.
 However, even in this case, you can use 64-bit atom IDs, allowing 2^63
 or about 9e18 atoms, if you build LAMMPS with the - DLAMMPS_BIGBIG
-switch.  This is described in "Section 2.2"_Section_start.html#start_2
-of the manual.  If atom IDs are not used, they must be specified as 0
-for all atoms, e.g. in a data or restart file.
+switch.  This is described on the "Build_settings"_Build_settings.html
+doc page.  If atom IDs are not used, they must be specified as 0 for
+all atoms, e.g. in a data or restart file.
 
 The {map} keyword determines how atoms with specific IDs are found
 when required.  An example are the bond (angle, etc) methods which
diff --git a/doc/src/atom_style.txt b/doc/src/atom_style.txt
index abf05885a3..db2e285dc4 100644
--- a/doc/src/atom_style.txt
+++ b/doc/src/atom_style.txt
@@ -272,13 +272,13 @@ USER-INTEL, USER-OMP, and OPT packages do not use accelerated atom
 styles.
 
 The accelerated styles are part of the KOKKOS package.  They are only
-enabled if LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+enabled if LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_7 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -289,8 +289,8 @@ This command cannot be used after the simulation box is defined by a
 "read_data"_read_data.html or "create_box"_create_box.html command.
 
 Many of the styles listed above are only enabled if LAMMPS was built
-with a specific package, as listed below.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+with a specific package, as listed below.  See the "Build
+package"_Build_package.html doc page for more info.
 
 The {angle}, {bond}, {full}, {molecular}, and {template} styles are
 part of the MOLECULE package.
diff --git a/doc/src/balance.txt b/doc/src/balance.txt
index 06c4eca491..26e146d89b 100644
--- a/doc/src/balance.txt
+++ b/doc/src/balance.txt
@@ -394,11 +394,11 @@ weights.  It assigns the same weight to each particle owned by a
 processor based on the total computational time spent by that
 processor.  See details below on what time window is used.  It uses
 the same timing information as is used for the "MPI task timing
-breakdown"_Section_start.html#start_7, namely, for sections {Pair},
-{Bond}, {Kspace}, and {Neigh}.  The time spent in those portions of
-the timestep are measured for each MPI rank, summed, then divided by
-the number of particles owned by that processor.  I.e. the weight is
-an effective CPU time/particle averaged over the particles on that
+breakdown"_Run_output.html, namely, for sections {Pair}, {Bond},
+{Kspace}, and {Neigh}.  The time spent in those portions of the
+timestep are measured for each MPI rank, summed, then divided by the
+number of particles owned by that processor.  I.e. the weight is an
+effective CPU time/particle averaged over the particles on that
 processor.
 
 The {factor} setting is applied as an overall scale factor to the
diff --git a/doc/src/bond_class2.txt b/doc/src/bond_class2.txt
index 3d8d5007ba..4390e3613c 100644
--- a/doc/src/bond_class2.txt
+++ b/doc/src/bond_class2.txt
@@ -50,13 +50,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -66,8 +66,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This bond style can only be used if LAMMPS was built with the CLASS2
-package.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info on packages.
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 [Related commands:]
 
diff --git a/doc/src/bond_fene.txt b/doc/src/bond_fene.txt
index e16307a710..9ec4017d00 100644
--- a/doc/src/bond_fene.txt
+++ b/doc/src/bond_fene.txt
@@ -53,13 +53,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -68,9 +68,9 @@ instructions on how to use the accelerated styles effectively.
 
 [Restrictions:]
 
-This bond style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+This bond style can only be used if LAMMPS was built with the MOLECULE
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 You typically should specify "special_bonds fene"_special_bonds.html
 or "special_bonds lj/coul 0 1 1"_special_bonds.html to use this bond
diff --git a/doc/src/bond_fene_expand.txt b/doc/src/bond_fene_expand.txt
index 8edd325885..4d7d2d5438 100644
--- a/doc/src/bond_fene_expand.txt
+++ b/doc/src/bond_fene_expand.txt
@@ -56,13 +56,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -71,9 +71,9 @@ instructions on how to use the accelerated styles effectively.
 
 [Restrictions:]
 
-This bond style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+This bond style can only be used if LAMMPS was built with the MOLECULE
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 You typically should specify "special_bonds fene"_special_bonds.html
 or "special_bonds lj/coul 0 1 1"_special_bonds.html to use this bond
diff --git a/doc/src/bond_gromos.txt b/doc/src/bond_gromos.txt
index 275036a421..e039e6c411 100644
--- a/doc/src/bond_gromos.txt
+++ b/doc/src/bond_gromos.txt
@@ -46,13 +46,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -61,9 +61,9 @@ instructions on how to use the accelerated styles effectively.
 
 [Restrictions:]
 
-This bond style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+This bond style can only be used if LAMMPS was built with the MOLECULE
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 [Related commands:]
 
diff --git a/doc/src/bond_harmonic.txt b/doc/src/bond_harmonic.txt
index e4b2015fed..3afdf4ceba 100644
--- a/doc/src/bond_harmonic.txt
+++ b/doc/src/bond_harmonic.txt
@@ -48,13 +48,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -63,9 +63,9 @@ instructions on how to use the accelerated styles effectively.
 
 [Restrictions:]
 
-This bond style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+This bond style can only be used if LAMMPS was built with the MOLECULE
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 [Related commands:]
 
diff --git a/doc/src/bond_harmonic_shift.txt b/doc/src/bond_harmonic_shift.txt
index b6dc18a5fd..23d3dcb5d5 100644
--- a/doc/src/bond_harmonic_shift.txt
+++ b/doc/src/bond_harmonic_shift.txt
@@ -49,13 +49,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -65,8 +65,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This bond style can only be used if LAMMPS was built with the
-USER-MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER-MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/bond_harmonic_shift_cut.txt b/doc/src/bond_harmonic_shift_cut.txt
index b3054437d8..13ccb5843b 100644
--- a/doc/src/bond_harmonic_shift_cut.txt
+++ b/doc/src/bond_harmonic_shift_cut.txt
@@ -49,13 +49,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -65,8 +65,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This bond style can only be used if LAMMPS was built with the
-USER-MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER-MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/bond_hybrid.txt b/doc/src/bond_hybrid.txt
index 140fb72378..0996f72ce3 100644
--- a/doc/src/bond_hybrid.txt
+++ b/doc/src/bond_hybrid.txt
@@ -58,9 +58,9 @@ bond types.
 
 [Restrictions:]
 
-This bond style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+This bond style can only be used if LAMMPS was built with the MOLECULE
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 Unlike other bond styles, the hybrid bond style does not store bond
 coefficient info for individual sub-styles in a "binary restart
diff --git a/doc/src/bond_morse.txt b/doc/src/bond_morse.txt
index 9b64e8c5c1..60fd16e17a 100644
--- a/doc/src/bond_morse.txt
+++ b/doc/src/bond_morse.txt
@@ -47,13 +47,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -62,9 +62,9 @@ instructions on how to use the accelerated styles effectively.
 
 [Restrictions:]
 
-This bond style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+This bond style can only be used if LAMMPS was built with the MOLECULE
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 [Related commands:]
 
diff --git a/doc/src/bond_nonlinear.txt b/doc/src/bond_nonlinear.txt
index 08109bc699..af51383213 100644
--- a/doc/src/bond_nonlinear.txt
+++ b/doc/src/bond_nonlinear.txt
@@ -47,13 +47,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -62,9 +62,9 @@ instructions on how to use the accelerated styles effectively.
 
 [Restrictions:]
 
-This bond style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+This bond style can only be used if LAMMPS was built with the MOLECULE
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 [Related commands:]
 
diff --git a/doc/src/bond_oxdna.txt b/doc/src/bond_oxdna.txt
index a0e14a123a..1944f7027a 100644
--- a/doc/src/bond_oxdna.txt
+++ b/doc/src/bond_oxdna.txt
@@ -62,8 +62,8 @@ The preprint version of the article can be found "here"_PDF/USER-CGDNA.pdf.
 [Restrictions:]
 
 This bond style can only be used if LAMMPS was built with the
-USER-CGDNA package and the MOLECULE and ASPHERE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+USER-CGDNA package and the MOLECULE and ASPHERE package.  See the
+"Build package"_Build_package.html doc page for more info.
 
 
 [Related commands:]
diff --git a/doc/src/bond_quartic.txt b/doc/src/bond_quartic.txt
index 87a21eff02..b7b1ee4ce6 100644
--- a/doc/src/bond_quartic.txt
+++ b/doc/src/bond_quartic.txt
@@ -82,13 +82,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -97,9 +97,9 @@ instructions on how to use the accelerated styles effectively.
 
 [Restrictions:]
 
-This bond style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+This bond style can only be used if LAMMPS was built with the MOLECULE
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 The {quartic} style requires that "special_bonds"_special_bonds.html
 parameters be set to 1,1,1.  Three- and four-body interactions (angle,
diff --git a/doc/src/bond_style.txt b/doc/src/bond_style.txt
index 41fa1cabb2..22fae3e346 100644
--- a/doc/src/bond_style.txt
+++ b/doc/src/bond_style.txt
@@ -90,10 +90,9 @@ Bond styles can only be set for atom styles that allow bonds to be
 defined.
 
 Most bond styles are part of the MOLECULE 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 on packages.
-The doc pages for individual bond potentials tell if it is part of a
-package.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.  The doc pages for
+individual bond potentials tell if it is part of a package.
 
 [Related commands:]
 
diff --git a/doc/src/bond_table.txt b/doc/src/bond_table.txt
index e53cbdfa9f..fbf6eb5815 100644
--- a/doc/src/bond_table.txt
+++ b/doc/src/bond_table.txt
@@ -127,13 +127,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -142,9 +142,9 @@ instructions on how to use the accelerated styles effectively.
 
 [Restrictions:]
 
-This bond style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+This bond style can only be used if LAMMPS was built with the MOLECULE
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_ackland_atom.txt b/doc/src/compute_ackland_atom.txt
index 485c191313..cda4a36b34 100644
--- a/doc/src/compute_ackland_atom.txt
+++ b/doc/src/compute_ackland_atom.txt
@@ -66,8 +66,8 @@ LAMMPS output options.
 [Restrictions:]
 
 This compute is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 The per-atom vector values will be unitless since they are the
 integers defined above.
diff --git a/doc/src/compute_basal_atom.txt b/doc/src/compute_basal_atom.txt
index 067a020c35..5c28b8e378 100644
--- a/doc/src/compute_basal_atom.txt
+++ b/doc/src/compute_basal_atom.txt
@@ -55,8 +55,8 @@ components of a unit vector.
 [Restrictions:]
 
 This compute is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 The output of this compute will be meaningless unless the atoms are on
 (or near) hcp lattice sites, since the calculation assumes a
diff --git a/doc/src/compute_cnp_atom.txt b/doc/src/compute_cnp_atom.txt
index 44a77d23ca..95dd59089f 100644
--- a/doc/src/compute_cnp_atom.txt
+++ b/doc/src/compute_cnp_atom.txt
@@ -95,8 +95,8 @@ FCC dislocation core ~ 11 :pre
 [Restrictions:]
 
 This compute is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_damage_atom.txt b/doc/src/compute_damage_atom.txt
index 74939e2280..2594dfe356 100644
--- a/doc/src/compute_damage_atom.txt
+++ b/doc/src/compute_damage_atom.txt
@@ -52,8 +52,8 @@ The per-atom vector values are unitless numbers (damage) >= 0.0.
 [Restrictions:]
 
 This compute is part of the PERI 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_dilatation_atom.txt b/doc/src/compute_dilatation_atom.txt
index 498110cf99..292638bdf5 100644
--- a/doc/src/compute_dilatation_atom.txt
+++ b/doc/src/compute_dilatation_atom.txt
@@ -56,8 +56,8 @@ The per-atom vector values are unitless numbers (theta) >= 0.0.
 [Restrictions:]
 
 This compute is part of the PERI 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_dpd.txt b/doc/src/compute_dpd.txt
index 1721456e35..eccffee9b8 100644
--- a/doc/src/compute_dpd.txt
+++ b/doc/src/compute_dpd.txt
@@ -49,8 +49,8 @@ The vector values will be in energy and temperature "units"_units.html.
 [Restrictions:]
 
 This command is part of the USER-DPD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This command also requires use of the "atom_style dpd"_atom_style.html
 command.
diff --git a/doc/src/compute_dpd_atom.txt b/doc/src/compute_dpd_atom.txt
index 8e502d4a60..2f9b4098cf 100644
--- a/doc/src/compute_dpd_atom.txt
+++ b/doc/src/compute_dpd_atom.txt
@@ -45,8 +45,8 @@ and temperature (dpdTheta) "units"_units.html.
 [Restrictions:]
 
 This command is part of the USER-DPD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This command also requires use of the "atom_style dpd"_atom_style.html
 command.
diff --git a/doc/src/compute_edpd_temp_atom.txt b/doc/src/compute_edpd_temp_atom.txt
index f33398e03d..f3c1418d44 100644
--- a/doc/src/compute_edpd_temp_atom.txt
+++ b/doc/src/compute_edpd_temp_atom.txt
@@ -41,8 +41,8 @@ The per-atom vector values will be in temperature "units"_units.html.
 [Restrictions:]
 
 This compute is part of the USER-MESO 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_entropy_atom.txt b/doc/src/compute_entropy_atom.txt
index 9c45fd2870..b3891841b8 100644
--- a/doc/src/compute_entropy_atom.txt
+++ b/doc/src/compute_entropy_atom.txt
@@ -109,8 +109,8 @@ ordered environments.
 [Restrictions:]
 
 This compute is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_erotate_rigid.txt b/doc/src/compute_erotate_rigid.txt
index 5b9077870e..fa433c1c97 100644
--- a/doc/src/compute_erotate_rigid.txt
+++ b/doc/src/compute_erotate_rigid.txt
@@ -51,8 +51,8 @@ scalar value will be in energy "units"_units.html.
 [Restrictions:]
 
 This compute is part of the RIGID 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_event_displace.txt b/doc/src/compute_event_displace.txt
index 561ded35c0..a36cf2c9c4 100644
--- a/doc/src/compute_event_displace.txt
+++ b/doc/src/compute_event_displace.txt
@@ -52,8 +52,8 @@ scalar value will be a 0 or 1 as explained above.
 [Restrictions:]
 
 This command can only be used if LAMMPS was built with the REPLICA
-package.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info on packages.
+package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_fep.txt b/doc/src/compute_fep.txt
index 8b4a92e16e..5b3a6915dd 100644
--- a/doc/src/compute_fep.txt
+++ b/doc/src/compute_fep.txt
@@ -230,8 +230,8 @@ The values calculated by this compute are "extensive".
 [Restrictions:]
 
 This compute is distributed as the USER-FEP 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.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_ke_atom_eff.txt b/doc/src/compute_ke_atom_eff.txt
index f665f35055..29905f81d6 100644
--- a/doc/src/compute_ke_atom_eff.txt
+++ b/doc/src/compute_ke_atom_eff.txt
@@ -66,8 +66,8 @@ The per-atom vector values will be in energy "units"_units.html.
 [Restrictions:]
 
 This compute is part of the USER-EFF 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_ke_eff.txt b/doc/src/compute_ke_eff.txt
index d6d7fdb10f..fa2c51a032 100644
--- a/doc/src/compute_ke_eff.txt
+++ b/doc/src/compute_ke_eff.txt
@@ -70,8 +70,8 @@ scalar value will be in energy "units"_units.html.
 [Restrictions:]
 
 This compute is part of the USER-EFF 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:] none
 
diff --git a/doc/src/compute_ke_rigid.txt b/doc/src/compute_ke_rigid.txt
index 45ba2673b0..ad6baf567f 100644
--- a/doc/src/compute_ke_rigid.txt
+++ b/doc/src/compute_ke_rigid.txt
@@ -50,8 +50,8 @@ scalar value will be in energy "units"_units.html.
 [Restrictions:]
 
 This compute is part of the RIGID 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_meso_e_atom.txt b/doc/src/compute_meso_e_atom.txt
index 9a9c7fae11..0f0cfda2d1 100644
--- a/doc/src/compute_meso_e_atom.txt
+++ b/doc/src/compute_meso_e_atom.txt
@@ -46,8 +46,8 @@ The per-atom vector values will be in energy "units"_units.html.
 [Restrictions:]
 
 This compute is part of the USER-SPH 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_meso_rho_atom.txt b/doc/src/compute_meso_rho_atom.txt
index 30b1142b6c..5127ad2c48 100644
--- a/doc/src/compute_meso_rho_atom.txt
+++ b/doc/src/compute_meso_rho_atom.txt
@@ -46,8 +46,8 @@ The per-atom vector values will be in mass/volume "units"_units.html.
 [Restrictions:]
 
 This compute is part of the USER-SPH 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_meso_t_atom.txt b/doc/src/compute_meso_t_atom.txt
index ab92f05018..f4ab869ec2 100644
--- a/doc/src/compute_meso_t_atom.txt
+++ b/doc/src/compute_meso_t_atom.txt
@@ -48,8 +48,8 @@ The per-atom vector values will be in temperature "units"_units.html.
 [Restrictions:]
 
 This compute is part of the USER-SPH 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_msd_nongauss.txt b/doc/src/compute_msd_nongauss.txt
index 814159121d..c6e89a1061 100644
--- a/doc/src/compute_msd_nongauss.txt
+++ b/doc/src/compute_msd_nongauss.txt
@@ -66,9 +66,9 @@ the 3rd is dimensionless.
 
 [Restrictions:]
 
-This compute is part of the MISC 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.
+This compute is part of the MISC package.  It is only enabled if
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_plasticity_atom.txt b/doc/src/compute_plasticity_atom.txt
index 50a51d9937..b82179712a 100644
--- a/doc/src/compute_plasticity_atom.txt
+++ b/doc/src/compute_plasticity_atom.txt
@@ -50,8 +50,8 @@ The per-atom vector values are unitless numbers (lambda) >= 0.0.
 [Restrictions:]
 
 This compute is part of the PERI 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_pressure.txt b/doc/src/compute_pressure.txt
index dea0a7f05b..6acbaf7d3d 100644
--- a/doc/src/compute_pressure.txt
+++ b/doc/src/compute_pressure.txt
@@ -111,13 +111,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/compute_pressure_uef.txt b/doc/src/compute_pressure_uef.txt
index 61cc85ad80..c4c0fc405f 100644
--- a/doc/src/compute_pressure_uef.txt
+++ b/doc/src/compute_pressure_uef.txt
@@ -38,9 +38,9 @@ The keywords and output information are documented in
 
 [Restrictions:]
 
-This fix is part of the USER-UEF 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.
+This fix is part of the USER-UEF package. It is only enabled if LAMMPS
+was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 This command can only be used when "fix nvt/uef"_fix_nh_uef.html
 or "fix npt/uef"_fix_nh_uef.html is active.
diff --git a/doc/src/compute_rigid_local.txt b/doc/src/compute_rigid_local.txt
index b5e6954ab9..9b829a70fc 100644
--- a/doc/src/compute_rigid_local.txt
+++ b/doc/src/compute_rigid_local.txt
@@ -175,8 +175,8 @@ inertiax,inertiay,inertiaz = mass*distance^2 units :ul
 [Restrictions:]
 
 This compute is part of the RIGID 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_saed.txt b/doc/src/compute_saed.txt
index 8c17a30fca..b27c36e318 100644
--- a/doc/src/compute_saed.txt
+++ b/doc/src/compute_saed.txt
@@ -152,8 +152,8 @@ All array values calculated by this compute are "intensive".
 [Restrictions:]
 
 This compute is part of the USER-DIFFRACTION 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.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 The compute_saed command does not work for triclinic cells.
 
diff --git a/doc/src/compute_smd_contact_radius.txt b/doc/src/compute_smd_contact_radius.txt
index cd13816047..4ab03e3738 100644
--- a/doc/src/compute_smd_contact_radius.txt
+++ b/doc/src/compute_smd_contact_radius.txt
@@ -45,8 +45,8 @@ The per-particle vector values will be in distance "units"_units.html.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_smd_damage.txt b/doc/src/compute_smd_damage.txt
index afabe23d7c..139fb3ec7b 100644
--- a/doc/src/compute_smd_damage.txt
+++ b/doc/src/compute_smd_damage.txt
@@ -38,8 +38,8 @@ The per-particle values are dimensionless an in the range of zero to one.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+
 
 [Related commands:]
 
diff --git a/doc/src/compute_smd_hourglass_error.txt b/doc/src/compute_smd_hourglass_error.txt
index 13fd20a589..5bc3e3a2de 100644
--- a/doc/src/compute_smd_hourglass_error.txt
+++ b/doc/src/compute_smd_hourglass_error.txt
@@ -48,8 +48,8 @@ The per-particle vector values will are dimensionless. See
 [Restrictions:]
 
 This compute is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This quantity will be computed only for particles which interact with
 tlsph pair style.
diff --git a/doc/src/compute_smd_internal_energy.txt b/doc/src/compute_smd_internal_energy.txt
index 6585c3429f..b9d18ce933 100644
--- a/doc/src/compute_smd_internal_energy.txt
+++ b/doc/src/compute_smd_internal_energy.txt
@@ -39,10 +39,10 @@ The per-particle vector values will be given in "units"_units.html of energy.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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. This compute
-can only be used for particles which interact via the updated
-Lagrangian or total Lagrangian SPH pair styles.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info. This compute can
+only be used for particles which interact via the updated Lagrangian
+or total Lagrangian SPH pair styles.
 
 [Related Commands:]
 
diff --git a/doc/src/compute_smd_plastic_strain.txt b/doc/src/compute_smd_plastic_strain.txt
index fb3c5c9138..d12be7222a 100644
--- a/doc/src/compute_smd_plastic_strain.txt
+++ b/doc/src/compute_smd_plastic_strain.txt
@@ -40,10 +40,10 @@ The per-particle values will be given dimensionless. See "units"_units.html.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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. This compute
-can only be used for particles which interact via the updated
-Lagrangian or total Lagrangian SPH pair styles.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info. This compute can
+only be used for particles which interact via the updated Lagrangian
+or total Lagrangian SPH pair styles.
 
 [Related commands:]
 
diff --git a/doc/src/compute_smd_plastic_strain_rate.txt b/doc/src/compute_smd_plastic_strain_rate.txt
index b913ae9097..ffc009b2a7 100644
--- a/doc/src/compute_smd_plastic_strain_rate.txt
+++ b/doc/src/compute_smd_plastic_strain_rate.txt
@@ -40,10 +40,10 @@ The per-particle values will be given in "units"_units.html of one over time.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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. This compute
-can only be used for particles which interact via the updated
-Lagrangian or total Lagrangian SPH pair styles.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info. This compute can
+only be used for particles which interact via the updated Lagrangian
+or total Lagrangian SPH pair styles.
 
 [Related commands:]
 
diff --git a/doc/src/compute_smd_rho.txt b/doc/src/compute_smd_rho.txt
index a1ee1d9c5b..31d7351c92 100644
--- a/doc/src/compute_smd_rho.txt
+++ b/doc/src/compute_smd_rho.txt
@@ -41,8 +41,8 @@ The per-particle values will be in "units"_units.html of mass over volume.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_smd_tlsph_defgrad.txt b/doc/src/compute_smd_tlsph_defgrad.txt
index 1663c84f65..a733a3d6a7 100644
--- a/doc/src/compute_smd_tlsph_defgrad.txt
+++ b/doc/src/compute_smd_tlsph_defgrad.txt
@@ -44,10 +44,10 @@ entry is the determinant of the deformation gradient.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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. TThis
-compute can only be used for particles which interact via the total
-Lagrangian SPH pair style.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info. TThis compute can
+only be used for particles which interact via the total Lagrangian SPH
+pair style.
 
 [Related commands:]
 
diff --git a/doc/src/compute_smd_tlsph_dt.txt b/doc/src/compute_smd_tlsph_dt.txt
index c714f3266b..92f5923de0 100644
--- a/doc/src/compute_smd_tlsph_dt.txt
+++ b/doc/src/compute_smd_tlsph_dt.txt
@@ -45,8 +45,8 @@ The per-particle values will be given in "units"_units.html of time.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This compute can only be used for particles interacting with the
 Total-Lagrangian SPH pair style.
diff --git a/doc/src/compute_smd_tlsph_num_neighs.txt b/doc/src/compute_smd_tlsph_num_neighs.txt
index af5b0741db..db977fe676 100644
--- a/doc/src/compute_smd_tlsph_num_neighs.txt
+++ b/doc/src/compute_smd_tlsph_num_neighs.txt
@@ -40,8 +40,8 @@ The per-particle values are dimensionless. See "units"_units.html.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This quantity will be computed only for particles which interact with
 the Total-Lagrangian pair style.
diff --git a/doc/src/compute_smd_tlsph_shape.txt b/doc/src/compute_smd_tlsph_shape.txt
index 927cd7c7ae..9c17194ec1 100644
--- a/doc/src/compute_smd_tlsph_shape.txt
+++ b/doc/src/compute_smd_tlsph_shape.txt
@@ -47,8 +47,8 @@ particle relative to its initial state.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 This quantity will be computed only for particles which interact with
 the Total-Lagrangian SPH pair style.
diff --git a/doc/src/compute_smd_tlsph_strain.txt b/doc/src/compute_smd_tlsph_strain.txt
index 4536f26c8e..70f996e206 100644
--- a/doc/src/compute_smd_tlsph_strain.txt
+++ b/doc/src/compute_smd_tlsph_strain.txt
@@ -43,8 +43,8 @@ zz, xy, xz, yz components of the symmetric strain tensor.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This quantity will be computed only for particles which interact with
 the Total-Lagrangian SPH pair style.
diff --git a/doc/src/compute_smd_tlsph_strain_rate.txt b/doc/src/compute_smd_tlsph_strain_rate.txt
index ae2883e4bb..e6d968c523 100644
--- a/doc/src/compute_smd_tlsph_strain_rate.txt
+++ b/doc/src/compute_smd_tlsph_strain_rate.txt
@@ -42,8 +42,8 @@ zz, xy, xz, yz components of the symmetric strain rate tensor.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This quantity will be computed only for particles which interact with
 Total-Lagrangian SPH pair style.
diff --git a/doc/src/compute_smd_tlsph_stress.txt b/doc/src/compute_smd_tlsph_stress.txt
index 50d6b7f434..8340e88536 100644
--- a/doc/src/compute_smd_tlsph_stress.txt
+++ b/doc/src/compute_smd_tlsph_stress.txt
@@ -44,8 +44,8 @@ invariant of the stress tensor, i.e., the von Mises equivalent stress.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This quantity will be computed only for particles which interact with
 the Total-Lagrangian SPH pair style.
diff --git a/doc/src/compute_smd_triangle_mesh_vertices.txt b/doc/src/compute_smd_triangle_mesh_vertices.txt
index 9e167924d1..cd1f8fdd9b 100644
--- a/doc/src/compute_smd_triangle_mesh_vertices.txt
+++ b/doc/src/compute_smd_triangle_mesh_vertices.txt
@@ -51,8 +51,8 @@ The values will be given in "units"_units.html of distance.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_smd_ulsph_num_neighs.txt b/doc/src/compute_smd_ulsph_num_neighs.txt
index 202b8f15e1..5157f17e57 100644
--- a/doc/src/compute_smd_ulsph_num_neighs.txt
+++ b/doc/src/compute_smd_ulsph_num_neighs.txt
@@ -40,10 +40,10 @@ The per-particle values will be given dimensionless, see "units"_units.html.
 [Restrictions:]
 
 This compute is part of the USER-SMD package.  It is only enabled if
-LAMMPS was built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_2 section for more info. This compute
-can only be used for particles which interact with the updated
-Lagrangian SPH pair style.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.  This compute can
+only be used for particles which interact with the updated Lagrangian
+SPH pair style.
 
 [Related commands:]
 
diff --git a/doc/src/compute_smd_ulsph_strain.txt b/doc/src/compute_smd_ulsph_strain.txt
index 76c47162a5..3dc6bd5249 100644
--- a/doc/src/compute_smd_ulsph_strain.txt
+++ b/doc/src/compute_smd_ulsph_strain.txt
@@ -43,10 +43,10 @@ The per-particle tensor values will be given dimensionless, see
 [Restrictions:]
 
 This compute is part of the USER-SMD 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. This compute
-can only be used for particles which interact with the updated
-Lagrangian SPH pair style.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info. This compute can
+only be used for particles which interact with the updated Lagrangian
+SPH pair style.
 
 [Related commands:]
 
diff --git a/doc/src/compute_smd_ulsph_strain_rate.txt b/doc/src/compute_smd_ulsph_strain_rate.txt
index c851e767b3..1ade5ac2d5 100644
--- a/doc/src/compute_smd_ulsph_strain_rate.txt
+++ b/doc/src/compute_smd_ulsph_strain_rate.txt
@@ -43,10 +43,11 @@ zz, xy, xz, yz components of the symmetric strain rate tensor.
 [Restrictions:]
 
 This compute is part of the USER-SMD package.  It is only enabled if
-LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#start_2 section for more info. This compute
-can only be used for particles which interact with the updated
-Lagrangian SPH pair style.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
+
+This compute can only be used for particles which interact with the
+updated Lagrangian SPH pair style.
 
 [Related commands:]
 
diff --git a/doc/src/compute_smd_ulsph_stress.txt b/doc/src/compute_smd_ulsph_stress.txt
index a5692b2412..ff53e777c5 100644
--- a/doc/src/compute_smd_ulsph_stress.txt
+++ b/doc/src/compute_smd_ulsph_stress.txt
@@ -43,10 +43,10 @@ stress tensor, i.e., the von Mises equivalent stress.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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. This compute
-can only be used for particles which interact with the updated
-Lagrangian SPH pair style.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info. This compute can
+only be used for particles which interact with the updated Lagrangian
+SPH pair style.
 
 [Related commands:]
 
diff --git a/doc/src/compute_smd_vol.txt b/doc/src/compute_smd_vol.txt
index fc4871d6f3..0edd61f624 100644
--- a/doc/src/compute_smd_vol.txt
+++ b/doc/src/compute_smd_vol.txt
@@ -43,8 +43,8 @@ per-particle volumes of the group for which the fix is defined.
 [Restrictions:]
 
 This compute is part of the USER-SMD 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_sna_atom.txt b/doc/src/compute_sna_atom.txt
index 3b302a0a71..95d183937f 100644
--- a/doc/src/compute_sna_atom.txt
+++ b/doc/src/compute_sna_atom.txt
@@ -250,8 +250,8 @@ page for an overview of LAMMPS output options.
 [Restrictions:]
 
 These computes are part of the SNAP 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_spin.txt b/doc/src/compute_spin.txt
index 792706ecdf..787ff8cdcf 100644
--- a/doc/src/compute_spin.txt
+++ b/doc/src/compute_spin.txt
@@ -61,10 +61,10 @@ metal units ("units"_units.html).
 
 [Restrictions:] 
 
-The {spin} compute is part of the SPIN package.
-This compute is only enabled if LAMMPS was built with this package.
-See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
-The atom_style has to be "spin" for this compute to be valid.
+The {spin} compute is part of the SPIN package.  This compute is only
+enabled if LAMMPS was built with this package.  See the "Build
+package"_Build_package.html doc page for more info.  The atom_style
+has to be "spin" for this compute to be valid.
 
 [Related commands:] none
 
diff --git a/doc/src/compute_tally.txt b/doc/src/compute_tally.txt
index 23fac43093..a4a8441f9e 100644
--- a/doc/src/compute_tally.txt
+++ b/doc/src/compute_tally.txt
@@ -76,9 +76,9 @@ Both the scalar and vector values calculated by this compute are
 
 [Restrictions:]
 
-This compute is part of the USER-TALLY 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.
+This compute is part of the USER-TALLY package.  It is only enabled if
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Not all pair styles can be evaluated in a pairwise mode as required by
 this compute.  For example, 3-body and other many-body potentials,
diff --git a/doc/src/compute_tdpd_cc_atom.txt b/doc/src/compute_tdpd_cc_atom.txt
index 9ee4d3da34..a385bef10b 100644
--- a/doc/src/compute_tdpd_cc_atom.txt
+++ b/doc/src/compute_tdpd_cc_atom.txt
@@ -43,8 +43,8 @@ per unit mass.
 [Restrictions:]
 
 This compute is part of the USER-MESO 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_temp.txt b/doc/src/compute_temp.txt
index 9f3a1ca906..757e00c4d2 100644
--- a/doc/src/compute_temp.txt
+++ b/doc/src/compute_temp.txt
@@ -73,13 +73,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/compute_temp_asphere.txt b/doc/src/compute_temp_asphere.txt
index 6766729ae0..eb73891e82 100644
--- a/doc/src/compute_temp_asphere.txt
+++ b/doc/src/compute_temp_asphere.txt
@@ -135,8 +135,8 @@ vector values will be in energy "units"_units.html.
 [Restrictions:]
 
 This compute is part of the ASPHERE 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This compute requires that atoms store angular momentum and a
 quaternion as defined by the "atom_style ellipsoid"_atom_style.html
diff --git a/doc/src/compute_temp_body.txt b/doc/src/compute_temp_body.txt
index 4e3ce3e77f..341d6d7f79 100644
--- a/doc/src/compute_temp_body.txt
+++ b/doc/src/compute_temp_body.txt
@@ -117,8 +117,8 @@ vector values will be in energy "units"_units.html.
 [Restrictions:]
 
 This compute 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This compute requires that atoms store angular momentum and a
 quaternion as defined by the "atom_style body"_atom_style.html
diff --git a/doc/src/compute_temp_deform_eff.txt b/doc/src/compute_temp_deform_eff.txt
index 876d492f34..4af61dc918 100644
--- a/doc/src/compute_temp_deform_eff.txt
+++ b/doc/src/compute_temp_deform_eff.txt
@@ -61,8 +61,8 @@ vector values will be in energy "units"_units.html.
 [Restrictions:]
 
 This compute is part of the USER-EFF 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_temp_eff.txt b/doc/src/compute_temp_eff.txt
index 35ddb75b12..415cb77595 100644
--- a/doc/src/compute_temp_eff.txt
+++ b/doc/src/compute_temp_eff.txt
@@ -83,8 +83,8 @@ the simulation.
 [Restrictions:]
 
 This compute is part of the USER-EFF 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_temp_partial.txt b/doc/src/compute_temp_partial.txt
index 2769246532..14294842a1 100644
--- a/doc/src/compute_temp_partial.txt
+++ b/doc/src/compute_temp_partial.txt
@@ -80,13 +80,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/compute_temp_region_eff.txt b/doc/src/compute_temp_region_eff.txt
index 95892eb257..f15f3155b0 100644
--- a/doc/src/compute_temp_region_eff.txt
+++ b/doc/src/compute_temp_region_eff.txt
@@ -52,8 +52,8 @@ vector values will be in energy "units"_units.html.
 [Restrictions:]
 
 This compute is part of the USER-EFF 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_temp_rotate.txt b/doc/src/compute_temp_rotate.txt
index 189246d3e4..8dac0405b4 100644
--- a/doc/src/compute_temp_rotate.txt
+++ b/doc/src/compute_temp_rotate.txt
@@ -86,8 +86,8 @@ vector values will be in energy "units"_units.html.
 [Restrictions:]
 
 This compute is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_temp_uef.txt b/doc/src/compute_temp_uef.txt
index a94d5db8ed..9a509da450 100644
--- a/doc/src/compute_temp_uef.txt
+++ b/doc/src/compute_temp_uef.txt
@@ -35,9 +35,9 @@ documentation for "compute temp"_compute_temp.html.
 
 [Restrictions:]
 
-This fix is part of the USER-UEF 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.
+This fix is part of the USER-UEF package. It is only enabled if LAMMPS
+was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 This command can only be used when "fix nvt/uef"_fix_nh_uef.html 
 or "fix npt/uef"_fix_nh_uef.html is active.
diff --git a/doc/src/compute_ti.txt b/doc/src/compute_ti.txt
index e79b594e3f..9057cab476 100644
--- a/doc/src/compute_ti.txt
+++ b/doc/src/compute_ti.txt
@@ -121,8 +121,8 @@ The scalar value will be in energy "units"_units.html.
 [Restrictions:]
 
 This compute is part of the MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/compute_voronoi_atom.txt b/doc/src/compute_voronoi_atom.txt
index a8ce77882a..d01f4df712 100644
--- a/doc/src/compute_voronoi_atom.txt
+++ b/doc/src/compute_voronoi_atom.txt
@@ -212,8 +212,8 @@ The Voronoi face area will be in distance "units"_units.html squared.
 [Restrictions:]
 
 This compute is part of the VORONOI 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 It also requires you have a copy of the Voro++ library built and
 installed on your system.  See instructions on obtaining and
diff --git a/doc/src/compute_xrd.txt b/doc/src/compute_xrd.txt
index 609fde3582..41523f25af 100644
--- a/doc/src/compute_xrd.txt
+++ b/doc/src/compute_xrd.txt
@@ -170,8 +170,8 @@ All array values calculated by this compute are "intensive".
 [Restrictions:]
 
 This compute is part of the USER-DIFFRACTION 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.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 The compute_xrd command does not work for triclinic cells.
 
diff --git a/doc/src/dihedral_charmm.txt b/doc/src/dihedral_charmm.txt
index 8adef6cf4b..637a10102d 100644
--- a/doc/src/dihedral_charmm.txt
+++ b/doc/src/dihedral_charmm.txt
@@ -122,13 +122,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -146,8 +146,8 @@ Otherwise non-bonded contributions for these 1-4 pairs will be
 computed multiple times.
 
 These dihedral styles can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 [Related commands:]
 
diff --git a/doc/src/dihedral_class2.txt b/doc/src/dihedral_class2.txt
index 1a2f37abbb..9936f3768d 100644
--- a/doc/src/dihedral_class2.txt
+++ b/doc/src/dihedral_class2.txt
@@ -147,13 +147,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -163,8 +163,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-CLASS2 package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+CLASS2 package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/dihedral_cosine_shift_exp.txt b/doc/src/dihedral_cosine_shift_exp.txt
index 7ef27e6bc9..e2a46d28d8 100644
--- a/doc/src/dihedral_cosine_shift_exp.txt
+++ b/doc/src/dihedral_cosine_shift_exp.txt
@@ -58,13 +58,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -74,8 +74,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-USER-MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER-MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/dihedral_fourier.txt b/doc/src/dihedral_fourier.txt
index f51cbc9c8c..3045f6824b 100644
--- a/doc/src/dihedral_fourier.txt
+++ b/doc/src/dihedral_fourier.txt
@@ -50,13 +50,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -66,8 +66,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-USER_MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER_MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/dihedral_harmonic.txt b/doc/src/dihedral_harmonic.txt
index 1eda0c5d02..27bc04f9df 100644
--- a/doc/src/dihedral_harmonic.txt
+++ b/doc/src/dihedral_harmonic.txt
@@ -59,13 +59,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -75,8 +75,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 [Related commands:]
 
diff --git a/doc/src/dihedral_helix.txt b/doc/src/dihedral_helix.txt
index 3af4b410bc..3b3607337b 100644
--- a/doc/src/dihedral_helix.txt
+++ b/doc/src/dihedral_helix.txt
@@ -52,13 +52,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -68,8 +68,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 [Related commands:]
 
diff --git a/doc/src/dihedral_hybrid.txt b/doc/src/dihedral_hybrid.txt
index c9ca86680c..a4a2a2808e 100644
--- a/doc/src/dihedral_hybrid.txt
+++ b/doc/src/dihedral_hybrid.txt
@@ -77,8 +77,8 @@ for specific dihedral types.
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 Unlike other dihedral styles, the hybrid dihedral style does not store
 dihedral coefficient info for individual sub-styles in a "binary
diff --git a/doc/src/dihedral_multi_harmonic.txt b/doc/src/dihedral_multi_harmonic.txt
index 7c22391923..74f1f6abc6 100644
--- a/doc/src/dihedral_multi_harmonic.txt
+++ b/doc/src/dihedral_multi_harmonic.txt
@@ -46,13 +46,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -62,8 +62,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 [Related commands:]
 
diff --git a/doc/src/dihedral_nharmonic.txt b/doc/src/dihedral_nharmonic.txt
index aa8f1e0d7f..7a8bf6cdb7 100644
--- a/doc/src/dihedral_nharmonic.txt
+++ b/doc/src/dihedral_nharmonic.txt
@@ -46,13 +46,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -62,8 +62,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-USER_MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER_MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/dihedral_opls.txt b/doc/src/dihedral_opls.txt
index f0cf91f30a..7fa5d81a14 100644
--- a/doc/src/dihedral_opls.txt
+++ b/doc/src/dihedral_opls.txt
@@ -54,13 +54,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -70,8 +70,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 [Related commands:]
 
diff --git a/doc/src/dihedral_quadratic.txt b/doc/src/dihedral_quadratic.txt
index e65cf2dee8..dc951e4269 100644
--- a/doc/src/dihedral_quadratic.txt
+++ b/doc/src/dihedral_quadratic.txt
@@ -47,13 +47,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -63,8 +63,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-USER_MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER_MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/dihedral_spherical.txt b/doc/src/dihedral_spherical.txt
index 10a757e898..61949174df 100644
--- a/doc/src/dihedral_spherical.txt
+++ b/doc/src/dihedral_spherical.txt
@@ -78,8 +78,8 @@ wn (typically 0.0 or 1.0) :ul
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-USER_MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER_MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/dihedral_style.txt b/doc/src/dihedral_style.txt
index 6aff3f0994..749f74e399 100644
--- a/doc/src/dihedral_style.txt
+++ b/doc/src/dihedral_style.txt
@@ -104,10 +104,9 @@ Dihedral styles can only be set for atom styles that allow dihedrals
 to be defined.
 
 Most dihedral styles are part of the MOLECULE 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 on packages.
-The doc pages for individual dihedral potentials tell if it is part of
-a package.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.  The doc pages for
+individual dihedral potentials tell if it is part of a package.
 
 [Related commands:]
 
diff --git a/doc/src/dihedral_table.txt b/doc/src/dihedral_table.txt
index d722ef7c82..3f679f5709 100644
--- a/doc/src/dihedral_table.txt
+++ b/doc/src/dihedral_table.txt
@@ -180,13 +180,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -194,8 +194,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-USER-MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER-MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/dihedral_table_cut.txt b/doc/src/dihedral_table_cut.txt
index cc7df8cdf9..b8e0ec64c8 100644
--- a/doc/src/dihedral_table_cut.txt
+++ b/doc/src/dihedral_table_cut.txt
@@ -192,8 +192,8 @@ that matches the specified keyword.
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-USER-MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER-MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/dump.txt b/doc/src/dump.txt
index 5b478b7301..8b630cc706 100644
--- a/doc/src/dump.txt
+++ b/doc/src/dump.txt
@@ -634,23 +634,22 @@ which could then be output into dump files.
 [Restrictions:]
 
 To write gzipped dump files, you must either compile LAMMPS with the
--DLAMMPS_GZIP option or use the styles from the COMPRESS package
-- see the "Making LAMMPS"_Section_start.html#start_2 section of
-the documentation.
+-DLAMMPS_GZIP option or use the styles from the COMPRESS package.
+See the "Build settings"_Build_settings.html doc page for details.
 
-The {atom/gz}, {cfg/gz}, {custom/gz}, and {xyz/gz} styles are part
-of the COMPRESS 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.
+The {atom/gz}, {cfg/gz}, {custom/gz}, and {xyz/gz} styles are part of
+the COMPRESS package.  They are only enabled if LAMMPS was built with
+that package.  See the "Build package"_Build_package.html doc page for
+more info.
 
 The {atom/mpiio}, {cfg/mpiio}, {custom/mpiio}, and {xyz/mpiio} styles
 are part of the MPIIO 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.
+built with that package.  See the "Build package"_Build_package.html
+doc page for more info.
 
 The {xtc} style is part of the MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/dump_cfg_uef.txt b/doc/src/dump_cfg_uef.txt
index 665be14be1..16e4aba4c0 100644
--- a/doc/src/dump_cfg_uef.txt
+++ b/doc/src/dump_cfg_uef.txt
@@ -38,9 +38,9 @@ reference frame as the atomic positions.
 
 [Restrictions:]
 
-This fix is part of the USER-UEF 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.
+This fix is part of the USER-UEF package. It is only enabled if LAMMPS
+was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 This command can only be used when "fix nvt/uef"_fix_nh_uef.html
 or "fix npt/uef"_fix_nh_uef.html is active.
diff --git a/doc/src/dump_h5md.txt b/doc/src/dump_h5md.txt
index fbd682dad9..9065e8a648 100644
--- a/doc/src/dump_h5md.txt
+++ b/doc/src/dump_h5md.txt
@@ -98,13 +98,13 @@ note above).  Only orthogonal domains are currently supported. This is
 a limitation of the present dump h5md command and not of H5MD itself.
 
 The {h5md} dump style is part of the USER-H5MD 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. It also
-requires (i) building the ch5md library provided with LAMMPS (See the
-"Making LAMMPS"_Section_start.html#start_3 section for more info.) and
-(ii) having the "HDF5"_HDF5_ws library installed (C bindings are
-sufficient) on your system.  The library ch5md is compiled with the
-h5cc wrapper provided by the HDF5 library.
+enabled if LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info. It also requires
+(i) building the ch5md library provided with LAMMPS (See the "Build
+package"_Build_package.html doc page for more info.) and (ii) having
+the "HDF5"_HDF5_ws library installed (C bindings are sufficient) on
+your system.  The library ch5md is compiled with the h5cc wrapper
+provided by the HDF5 library.
 
 :link(HDF5_ws,http://www.hdfgroup.org/HDF5/)
 
diff --git a/doc/src/dump_image.txt b/doc/src/dump_image.txt
index 06332b5dcf..9b56dd95a6 100644
--- a/doc/src/dump_image.txt
+++ b/doc/src/dump_image.txt
@@ -142,8 +142,8 @@ framerate can be set using the "dump_modify"_dump_modify.html command.
 To write out JPEG and PNG format files, you must build LAMMPS with
 support for the corresponding JPEG or PNG library. To convert images
 into movies, LAMMPS has to be compiled with the -DLAMMPS_FFMPEG
-flag. See "this section"_Section_start.html#start_2_4 of the manual
-for instructions on how to do this.
+flag. See the "Build settings"_Build_settings.html doc page for
+details.
 
 NOTE: Because periodic boundary conditions are enforced only on
 timesteps when neighbor lists are rebuilt, the coordinates of an atom
@@ -624,8 +624,7 @@ building LAMMPS and have the FFmpeg executable available on the
 machine where LAMMPS is being run.  Typically it's name is lowercase,
 i.e. ffmpeg.
 
-See the "Making LAMMPS"_Section_start.html#start_2_4 section of the
-documentation for details on how to compile with optional switches.
+See the "Build settings"_Build_settings.html doc page for details.
 
 Note that since FFmpeg is run as an external program via a pipe,
 LAMMPS has limited control over its execution and no knowledge about
diff --git a/doc/src/dump_molfile.txt b/doc/src/dump_molfile.txt
index 9fa04bd1ae..dd2b212f0b 100644
--- a/doc/src/dump_molfile.txt
+++ b/doc/src/dump_molfile.txt
@@ -90,8 +90,8 @@ determine the sequence of timesteps on which dump files are written.
 [Restrictions:]
 
 The {molfile} dump style is part of the USER-MOLFILE 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.
+only enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Molfile plugins provide a consistent programming interface to read and
 write file formats commonly used in molecular simulations. The
diff --git a/doc/src/dump_netcdf.txt b/doc/src/dump_netcdf.txt
index b1c6373651..52d757eac5 100644
--- a/doc/src/dump_netcdf.txt
+++ b/doc/src/dump_netcdf.txt
@@ -66,8 +66,8 @@ by "thermo_style"_thermo_style.html.
 
 The {netcdf} and {netcdf/mpiio} dump styles are part of the
 USER-NETCDF 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.
+that package. See the "Build package"_Build_package.html doc page for
+more info.
 
 :line
 
diff --git a/doc/src/dump_vtk.txt b/doc/src/dump_vtk.txt
index afc6099534..7eaa59a795 100644
--- a/doc/src/dump_vtk.txt
+++ b/doc/src/dump_vtk.txt
@@ -156,9 +156,9 @@ write out much faster.
 
 The {vtk} style does not support writing of gzipped dump files.
 
-The {vtk} dump style is part of the USER-VTK 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.
+The {vtk} dump style is part of the USER-VTK package. It is only
+enabled if LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 To use this dump style, you also must link to the VTK library.  See
 the info in lib/vtk/README and insure the Makefile.lammps file in that
diff --git a/doc/src/echo.txt b/doc/src/echo.txt
index dc6918dc89..3436737faa 100644
--- a/doc/src/echo.txt
+++ b/doc/src/echo.txt
@@ -26,8 +26,8 @@ command to the screen and/or log file as it is read and processed.  If
 an input script has errors, it can be useful to look at echoed output
 to see the last command processed.
 
-The "command-line switch"_Section_start.html#start_6 -echo can be used
-in place of this command.
+The "command-line switch"_Run_options.html -echo can be used in place
+of this command.
 
 [Restrictions:] none
 
diff --git a/doc/src/fix.txt b/doc/src/fix.txt
index fd966b5bd9..9c3a1d0349 100644
--- a/doc/src/fix.txt
+++ b/doc/src/fix.txt
@@ -309,9 +309,9 @@ accerlerated styles exist.
 [Restrictions:]
 
 Some fix styles are part of specific packages.  They are only enabled
-if LAMMPS was built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
-The doc pages for individual fixes tell if it is part of a package.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.  The doc pages for
+individual fixes tell if it is part of a package.
 
 [Related commands:]
 
diff --git a/doc/src/fix_addforce.txt b/doc/src/fix_addforce.txt
index 51be39fdb2..4fdf9a41dd 100644
--- a/doc/src/fix_addforce.txt
+++ b/doc/src/fix_addforce.txt
@@ -112,13 +112,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_addtorque.txt b/doc/src/fix_addtorque.txt
index c80fad26da..0963915e7a 100644
--- a/doc/src/fix_addtorque.txt
+++ b/doc/src/fix_addtorque.txt
@@ -88,8 +88,8 @@ the iteration count during the minimization.
 [Restrictions:]
 
 This fix is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_append_atoms.txt b/doc/src/fix_append_atoms.txt
index c6af361afc..d83f265982 100644
--- a/doc/src/fix_append_atoms.txt
+++ b/doc/src/fix_append_atoms.txt
@@ -95,8 +95,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix style is part of the SHOCK 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 The boundary on which atoms are added with append/atoms must be
 shrink/minimum.  The opposite boundary may be any boundary type other
diff --git a/doc/src/fix_atom_swap.txt b/doc/src/fix_atom_swap.txt
index c1d84dade1..22091eca00 100644
--- a/doc/src/fix_atom_swap.txt
+++ b/doc/src/fix_atom_swap.txt
@@ -165,8 +165,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the MC 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.
+built with that package.  See the "Build package"_Build_package.html
+doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_ave_correlate_long.txt b/doc/src/fix_ave_correlate_long.txt
index ac0ef873aa..d94bf8af7b 100644
--- a/doc/src/fix_ave_correlate_long.txt
+++ b/doc/src/fix_ave_correlate_long.txt
@@ -120,8 +120,8 @@ the run command. This fix is not invoked during energy minimization.
 [Restrictions:]
 
 This compute is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_aveforce.txt b/doc/src/fix_aveforce.txt
index 1fc7e4a18d..8c759864c6 100644
--- a/doc/src/fix_aveforce.txt
+++ b/doc/src/fix_aveforce.txt
@@ -72,13 +72,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_bocs.txt b/doc/src/fix_bocs.txt
index f5bbc8a251..7acc22d702 100644
--- a/doc/src/fix_bocs.txt
+++ b/doc/src/fix_bocs.txt
@@ -85,8 +85,8 @@ XXXX_press, where XXXX is the ID given to the fix bocs command (in the
 example, the ID of the fix bocs command is 1 ).
 
 This fix is part of the USER-BOCS 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related:]
 
diff --git a/doc/src/fix_bond_break.txt b/doc/src/fix_bond_break.txt
index bdb2f2a862..59fea8f45b 100644
--- a/doc/src/fix_bond_break.txt
+++ b/doc/src/fix_bond_break.txt
@@ -131,8 +131,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the MC 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.
+built with that package.  See the "Build package"_Build_package.html
+doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_bond_create.txt b/doc/src/fix_bond_create.txt
index ab34433cec..02655577fd 100644
--- a/doc/src/fix_bond_create.txt
+++ b/doc/src/fix_bond_create.txt
@@ -226,8 +226,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the MC 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.
+built with that package.  See the "Build package"_Build_package.html
+doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_bond_react.txt b/doc/src/fix_bond_react.txt
index 883968e012..7317dd26bb 100644
--- a/doc/src/fix_bond_react.txt
+++ b/doc/src/fix_bond_react.txt
@@ -312,8 +312,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_bond_swap.txt b/doc/src/fix_bond_swap.txt
index a829171f33..3c90bb53f6 100644
--- a/doc/src/fix_bond_swap.txt
+++ b/doc/src/fix_bond_swap.txt
@@ -165,8 +165,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the MC 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.
+built with that package.  See the "Build package"_Build_package.html
+doc page for more info.
 
 The settings of the "special_bond" command must be 0,1,1 in order to
 use this fix, which is typical of bead-spring chains with FENE or
diff --git a/doc/src/fix_cmap.txt b/doc/src/fix_cmap.txt
index 6f3769fafe..ef48e8b51c 100644
--- a/doc/src/fix_cmap.txt
+++ b/doc/src/fix_cmap.txt
@@ -125,8 +125,8 @@ To function as expected this fix command must be issued {before} a
 "read_restart"_read_restart.html command.
 
 This fix can only be used if LAMMPS was built with the MOLECULE
-package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_colvars.txt b/doc/src/fix_colvars.txt
index 4a1d84de64..3a64840bdc 100644
--- a/doc/src/fix_colvars.txt
+++ b/doc/src/fix_colvars.txt
@@ -106,8 +106,8 @@ fix is "extensive".
 [Restrictions:]
 
 This fix is part of the USER-COLVARS 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 There can only be one colvars fix active at a time. Since the interface
 communicates only the minimum amount of information and colvars module
diff --git a/doc/src/fix_deform.txt b/doc/src/fix_deform.txt
index e92d1e6b19..6ba713e662 100644
--- a/doc/src/fix_deform.txt
+++ b/doc/src/fix_deform.txt
@@ -556,13 +556,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_deposit.txt b/doc/src/fix_deposit.txt
index 277ca8777a..265f43bd4b 100644
--- a/doc/src/fix_deposit.txt
+++ b/doc/src/fix_deposit.txt
@@ -271,8 +271,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the MISC 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 The specified insertion region cannot be a "dynamic" region, as
 defined by the "region"_region.html command.
diff --git a/doc/src/fix_dpd_energy.txt b/doc/src/fix_dpd_energy.txt
index f539bc534e..5e8e295de9 100644
--- a/doc/src/fix_dpd_energy.txt
+++ b/doc/src/fix_dpd_energy.txt
@@ -56,13 +56,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -72,8 +72,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This command is part of the USER-DPD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix must be used with an additional fix that specifies time
 integration, e.g. "fix nve"_fix_nve.html.
diff --git a/doc/src/fix_dpd_source.txt b/doc/src/fix_dpd_source.txt
index 04af9a28a1..691cfe86f1 100644
--- a/doc/src/fix_dpd_source.txt
+++ b/doc/src/fix_dpd_source.txt
@@ -71,8 +71,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the USER-MESO 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 Fix {edpd/source} must be used with the "pair_style
 edpd"_pair_meso.html command.  Fix {tdpd/source} must be used with the
diff --git a/doc/src/fix_efield.txt b/doc/src/fix_efield.txt
index b5a43f68aa..cecfb6e6a3 100644
--- a/doc/src/fix_efield.txt
+++ b/doc/src/fix_efield.txt
@@ -156,8 +156,8 @@ system (the quantity being minimized), you MUST enable the
 [Restrictions:]
 
 This fix is part of the MISC 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_ehex.txt b/doc/src/fix_ehex.txt
index cfcc917d01..75651e21a4 100644
--- a/doc/src/fix_ehex.txt
+++ b/doc/src/fix_ehex.txt
@@ -156,8 +156,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the RIGID 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_enforce2d.txt b/doc/src/fix_enforce2d.txt
index 2925e44bda..17ac8146fd 100644
--- a/doc/src/fix_enforce2d.txt
+++ b/doc/src/fix_enforce2d.txt
@@ -37,13 +37,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_eos_cv.txt b/doc/src/fix_eos_cv.txt
index b94e2c64a9..b2ac0eb6b9 100644
--- a/doc/src/fix_eos_cv.txt
+++ b/doc/src/fix_eos_cv.txt
@@ -39,8 +39,8 @@ possible.
 [Restrictions:]
 
 This command is part of the USER-DPD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This command also requires use of the "atom_style dpd"_atom_style.html
 command.
diff --git a/doc/src/fix_eos_table.txt b/doc/src/fix_eos_table.txt
index 743c51f415..53b3204372 100644
--- a/doc/src/fix_eos_table.txt
+++ b/doc/src/fix_eos_table.txt
@@ -99,8 +99,8 @@ one that matches the specified keyword.
 [Restrictions:]
 
 This command is part of the USER-DPD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This command also requires use of the "atom_style dpd"_atom_style.html
 command.
diff --git a/doc/src/fix_eos_table_rx.txt b/doc/src/fix_eos_table_rx.txt
index f9deab61c8..1a2daa0bc6 100644
--- a/doc/src/fix_eos_table_rx.txt
+++ b/doc/src/fix_eos_table_rx.txt
@@ -162,13 +162,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -178,8 +178,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This command is part of the USER-DPD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This command also requires use of the "atom_style dpd"_atom_style.html
 command.
diff --git a/doc/src/fix_evaporate.txt b/doc/src/fix_evaporate.txt
index 6237a137fd..59dab43d9a 100644
--- a/doc/src/fix_evaporate.txt
+++ b/doc/src/fix_evaporate.txt
@@ -84,8 +84,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the MISC 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_filter_corotate.txt b/doc/src/fix_filter_corotate.txt
index d1e5e12f3e..b30966c2f9 100644
--- a/doc/src/fix_filter_corotate.txt
+++ b/doc/src/fix_filter_corotate.txt
@@ -70,8 +70,8 @@ fixes are not invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the USER-MISC 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 Currently, it does not support "molecule templates"_molecule.html.
 
diff --git a/doc/src/fix_flow_gauss.txt b/doc/src/fix_flow_gauss.txt
index 843c2a66a5..46a9477aa2 100644
--- a/doc/src/fix_flow_gauss.txt
+++ b/doc/src/fix_flow_gauss.txt
@@ -111,8 +111,8 @@ flow/gauss fixes, one that specifies {fix_modify respa 3} and one with
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
 This fix is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 No information about this fix is written to "binary restart
 files"_restart.html.
diff --git a/doc/src/fix_freeze.txt b/doc/src/fix_freeze.txt
index 76a9fd3b1a..89f2dd8179 100644
--- a/doc/src/fix_freeze.txt
+++ b/doc/src/fix_freeze.txt
@@ -40,13 +40,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -72,8 +72,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the GRANULAR 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 There can only be a single freeze fix defined.  This is because other
 the "granular pair styles"_pair_gran.html treat frozen particles
diff --git a/doc/src/fix_gcmc.txt b/doc/src/fix_gcmc.txt
index 394690ea5d..6b9a02eeca 100644
--- a/doc/src/fix_gcmc.txt
+++ b/doc/src/fix_gcmc.txt
@@ -403,8 +403,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the MC 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.
+built with that package.  See the "Build package"_Build_package.html
+doc page for more info.
 
 Do not set "neigh_modify once yes" or else this fix will never be
 called.  Reneighboring is required.
diff --git a/doc/src/fix_gld.txt b/doc/src/fix_gld.txt
index 1c5db6157d..97c3d0e408 100644
--- a/doc/src/fix_gld.txt
+++ b/doc/src/fix_gld.txt
@@ -137,8 +137,8 @@ This fix is not invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the MISC 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_gle.txt b/doc/src/fix_gle.txt
index 9fdc72bf9f..70a8e7f342 100644
--- a/doc/src/fix_gle.txt
+++ b/doc/src/fix_gle.txt
@@ -132,9 +132,9 @@ In order to perform constant-pressure simulations please use
 "fix npt"_fix_nh.html, to avoid duplicate integration of the
 equations of motion.
 
-This fix is part of the USER-MISC 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.
+This fix is part of the USER-MISC package.  It is only enabled if
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_gravity.txt b/doc/src/fix_gravity.txt
index 832c677f81..ea596c8668 100644
--- a/doc/src/fix_gravity.txt
+++ b/doc/src/fix_gravity.txt
@@ -96,13 +96,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_grem.txt b/doc/src/fix_grem.txt
index 506e266505..e096d4bd3c 100644
--- a/doc/src/fix_grem.txt
+++ b/doc/src/fix_grem.txt
@@ -91,8 +91,8 @@ by this fix to add the rescaled kinetic pressure as part of
 [Restrictions:]
 
 This fix is part of the USER-MISC 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_imd.txt b/doc/src/fix_imd.txt
index 8e21a1619b..a58cfdb3d3 100644
--- a/doc/src/fix_imd.txt
+++ b/doc/src/fix_imd.txt
@@ -143,8 +143,8 @@ fix is not invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 When used in combination with VMD, a topology or coordinate file has
 to be loaded, which matches (in number and ordering of atoms) the
diff --git a/doc/src/fix_ipi.txt b/doc/src/fix_ipi.txt
index eba30ef088..b115aba7df 100644
--- a/doc/src/fix_ipi.txt
+++ b/doc/src/fix_ipi.txt
@@ -81,9 +81,9 @@ define an external potential acting on the atoms that are moved by
 i-PI.
 
 This fix is part of the USER-MISC 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.  Because of
-the use of UNIX domain sockets, this fix will only work in a UNIX
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.  Because of the
+use of UNIX domain sockets, this fix will only work in a UNIX
 environment.
 
 [Related commands:]
diff --git a/doc/src/fix_langevin.txt b/doc/src/fix_langevin.txt
index 4d7728cdba..e97c7c3c37 100644
--- a/doc/src/fix_langevin.txt
+++ b/doc/src/fix_langevin.txt
@@ -270,13 +270,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_langevin_eff.txt b/doc/src/fix_langevin_eff.txt
index cf42f9c036..e55e40c6c8 100644
--- a/doc/src/fix_langevin_eff.txt
+++ b/doc/src/fix_langevin_eff.txt
@@ -93,8 +93,8 @@ This fix is not invoked during "energy minimization"_minimize.html.
 [Restrictions:] none
 
 This fix is part of the USER-EFF 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_langevin_spin.txt b/doc/src/fix_langevin_spin.txt
index 1b1936376d..7bb25e0a68 100644
--- a/doc/src/fix_langevin_spin.txt
+++ b/doc/src/fix_langevin_spin.txt
@@ -76,9 +76,9 @@ This fix is not invoked during "energy minimization"_minimize.html.
 
 [Restrictions:]
 
-The {langevin/spin} fix is part of the SPIN package.
-This style is only enabled if LAMMPS was built with this package.
-See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
+The {langevin/spin} fix is part of the SPIN package.  This style is
+only enabled if LAMMPS was built with this package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 The numerical integration has to be performed with {fix nve/spin}
 when {fix langevin/spin} is enabled. 
diff --git a/doc/src/fix_latte.txt b/doc/src/fix_latte.txt
index 9bc589520b..17beb67206 100644
--- a/doc/src/fix_latte.txt
+++ b/doc/src/fix_latte.txt
@@ -136,8 +136,8 @@ quantity being minimized), you MUST enable the
 [Restrictions:]
 
 This fix is part of the LATTE 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You must use metal units, as set by the "units"_units command to use
 this fix.
@@ -154,8 +154,8 @@ doing 99% or more of the work to compute quantum-accurate forces.
 NOTE: NEB calculations can be done using this fix using multiple
 replicas and running LAMMPS in parallel.  However, each replica must
 be run on a single MPI task.  For details, see the "neb"_neb.html
-command and -partition command-line explained in "Section
-2.6"_Section_start.html#start_6 of the manual.
+command doc page and the "-partition command-line
+switch"_Run_options.html
 
 [Related commands:] none
 
diff --git a/doc/src/fix_lb_fluid.txt b/doc/src/fix_lb_fluid.txt
index 5347f0147f..1a52397822 100644
--- a/doc/src/fix_lb_fluid.txt
+++ b/doc/src/fix_lb_fluid.txt
@@ -307,8 +307,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the USER-LB 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix can only be used with an orthogonal simulation domain.
 
diff --git a/doc/src/fix_lb_momentum.txt b/doc/src/fix_lb_momentum.txt
index a58c5d257e..408978f64c 100644
--- a/doc/src/fix_lb_momentum.txt
+++ b/doc/src/fix_lb_momentum.txt
@@ -61,8 +61,8 @@ Can only be used if a lattice-Boltzmann fluid has been created via the
 command.
 
 This fix is part of the USER-LB 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_lb_pc.txt b/doc/src/fix_lb_pc.txt
index bd121b7813..05b5eb20a2 100644
--- a/doc/src/fix_lb_pc.txt
+++ b/doc/src/fix_lb_pc.txt
@@ -42,8 +42,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the USER-LB 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Can only be used if a lattice-Boltzmann fluid has been created via the
 "fix lb/fluid"_fix_lb_fluid.html command, and must come after this
diff --git a/doc/src/fix_lb_rigid_pc_sphere.txt b/doc/src/fix_lb_rigid_pc_sphere.txt
index bc8fa2ea25..ddaa552ecc 100644
--- a/doc/src/fix_lb_rigid_pc_sphere.txt
+++ b/doc/src/fix_lb_rigid_pc_sphere.txt
@@ -122,8 +122,8 @@ of the "run"_run.html command.  These fixes are not invoked during
 [Restrictions:]
 
 This fix is part of the USER-LB 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Can only be used if a lattice-Boltzmann fluid has been created via the
 "fix lb/fluid"_fix_lb_fluid.html command, and must come after this
diff --git a/doc/src/fix_lb_viscous.txt b/doc/src/fix_lb_viscous.txt
index 7bbdd204e3..ba91a2cd54 100644
--- a/doc/src/fix_lb_viscous.txt
+++ b/doc/src/fix_lb_viscous.txt
@@ -70,8 +70,8 @@ for details."
 [Restrictions:]
 
 This fix is part of the USER-LB 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Can only be used if a lattice-Boltzmann fluid has been created via the
 "fix lb/fluid"_fix_lb_fluid.html command, and must come after this
diff --git a/doc/src/fix_manifoldforce.txt b/doc/src/fix_manifoldforce.txt
index aa32a875bf..8dd992170b 100644
--- a/doc/src/fix_manifoldforce.txt
+++ b/doc/src/fix_manifoldforce.txt
@@ -24,10 +24,14 @@ fix constrain all manifoldforce sphere 5.0
 
 [Description:]
 
-This fix subtracts each time step from the force the component along the normal of the specified "manifold"_manifolds.html.
-This can be used in combination with "minimize"_minimize.html to remove overlap between particles while
-keeping them (roughly) constrained to the given manifold, e.g. to set up a run with "fix nve/manifold/rattle"_fix_nve_manifold_rattle.html.
-I have found that only {hftn} and {quickmin} with a very small time step perform adequately though.
+This fix subtracts each time step from the force the component along
+the normal of the specified "manifold"_manifolds.html.  This can be
+used in combination with "minimize"_minimize.html to remove overlap
+between particles while keeping them (roughly) constrained to the
+given manifold, e.g. to set up a run with "fix
+nve/manifold/rattle"_fix_nve_manifold_rattle.html.  I have found that
+only {hftn} and {quickmin} with a very small time step perform
+adequately though.
 
 :line
 
@@ -45,17 +49,18 @@ minimization"_minimize.html.
 
 [Restrictions:]
 
-This fix is part of the USER-MANIFOLD 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.
+This fix is part of the USER-MANIFOLD package. It is only enabled if
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
-Only use this with {min_style hftn} or {min_style quickmin}. If not, the constraints
-will not be satisfied very well at all. A warning is generated if the {min_style} is
-incompatible but no error.
+Only use this with {min_style hftn} or {min_style quickmin}. If not,
+the constraints will not be satisfied very well at all. A warning is
+generated if the {min_style} is incompatible but no error.
 
 :line
 
 [Related commands:]
 
-"fix nve/manifold/rattle"_fix_nve_manifold_rattle.html, "fix nvt/manifold/rattle"_fix_nvt_manifold_rattle.html
+"fix nve/manifold/rattle"_fix_nve_manifold_rattle.html, "fix
+nvt/manifold/rattle"_fix_nvt_manifold_rattle.html
 
diff --git a/doc/src/fix_meso.txt b/doc/src/fix_meso.txt
index 8f5ad29929..8c0ce5a9b7 100644
--- a/doc/src/fix_meso.txt
+++ b/doc/src/fix_meso.txt
@@ -42,8 +42,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the USER-SPH 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_meso_stationary.txt b/doc/src/fix_meso_stationary.txt
index 38d26b34d6..1a546efec0 100644
--- a/doc/src/fix_meso_stationary.txt
+++ b/doc/src/fix_meso_stationary.txt
@@ -43,8 +43,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the USER-SPH 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_momentum.txt b/doc/src/fix_momentum.txt
index f7fe35be2a..aeedad0719 100644
--- a/doc/src/fix_momentum.txt
+++ b/doc/src/fix_momentum.txt
@@ -67,13 +67,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_mscg.txt b/doc/src/fix_mscg.txt
index aadc3caf5a..1ad7804127 100644
--- a/doc/src/fix_mscg.txt
+++ b/doc/src/fix_mscg.txt
@@ -103,8 +103,8 @@ dihedrals a bead can have in the coarse-grained model.
 [Restrictions:]
 
 This fix is part of the MSCG 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.
+built with that package.  See the "Build package"_Build_package.html
+doc page for more info.
 
 The MS-CG library uses C++11, which may not be supported by older
 compilers. The MS-CG library also has some additional numeric library
diff --git a/doc/src/fix_msst.txt b/doc/src/fix_msst.txt
index 91ffbbb0fa..e31f61e5f7 100644
--- a/doc/src/fix_msst.txt
+++ b/doc/src/fix_msst.txt
@@ -162,8 +162,8 @@ are "extensive"; the vector values are "intensive".
 [Restrictions:]
 
 This fix style is part of the SHOCK 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 All cell dimensions must be periodic. This fix can not be used with a
 triclinic cell.  The MSST fix has been tested only for the group-ID
diff --git a/doc/src/fix_mvv_dpd.txt b/doc/src/fix_mvv_dpd.txt
index 1e9bf631fd..507f271469 100644
--- a/doc/src/fix_mvv_dpd.txt
+++ b/doc/src/fix_mvv_dpd.txt
@@ -77,8 +77,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the USER-MESO 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_neb.txt b/doc/src/fix_neb.txt
index 5341d6999c..d331d9ad75 100644
--- a/doc/src/fix_neb.txt
+++ b/doc/src/fix_neb.txt
@@ -203,8 +203,8 @@ as invoked by the "minimize"_minimize.html command via the
 [Restrictions:]
 
 This command can only be used if LAMMPS was built with the REPLICA
-package.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info on packages.
+package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_nh.txt b/doc/src/fix_nh.txt
index f6b155e2db..644ced4bdc 100644
--- a/doc/src/fix_nh.txt
+++ b/doc/src/fix_nh.txt
@@ -491,13 +491,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_nh_eff.txt b/doc/src/fix_nh_eff.txt
index afb319bfa5..d7c0457708 100644
--- a/doc/src/fix_nh_eff.txt
+++ b/doc/src/fix_nh_eff.txt
@@ -101,8 +101,8 @@ for details.
 [Restrictions:]
 
 This fix is part of the USER-EFF 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Other restriction discussed on the doc page for the "fix nvt, npt, and
 nph"_fix_nh.html commands also apply.
diff --git a/doc/src/fix_nh_uef.txt b/doc/src/fix_nh_uef.txt
index 0e73c57e08..ae403cafd1 100644
--- a/doc/src/fix_nh_uef.txt
+++ b/doc/src/fix_nh_uef.txt
@@ -182,8 +182,8 @@ The fix is not invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the USER-UEF 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.
+was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 Due to requirements of the boundary conditions, when the {strain}
 keyword is set to zero (or unset), the initial simulation box must be
diff --git a/doc/src/fix_nph_asphere.txt b/doc/src/fix_nph_asphere.txt
index 6bfd9d3fe2..5cabf930e7 100644
--- a/doc/src/fix_nph_asphere.txt
+++ b/doc/src/fix_nph_asphere.txt
@@ -87,13 +87,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -132,8 +132,8 @@ This fix is not invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the ASPHERE 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix requires that atoms store torque and angular momentum and a
 quaternion as defined by the "atom_style ellipsoid"_atom_style.html
diff --git a/doc/src/fix_nph_body.txt b/doc/src/fix_nph_body.txt
index 377e1980eb..e04c240de9 100644
--- a/doc/src/fix_nph_body.txt
+++ b/doc/src/fix_nph_body.txt
@@ -86,13 +86,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -131,8 +131,8 @@ This fix is not invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the BODY package.  It is only enabled if LAMMPS
-was built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix requires that atoms store torque and angular momentum and a
 quaternion as defined by the "atom_style body"_atom_style.html
diff --git a/doc/src/fix_nph_sphere.txt b/doc/src/fix_nph_sphere.txt
index 8b7639c4c6..f94c057c93 100644
--- a/doc/src/fix_nph_sphere.txt
+++ b/doc/src/fix_nph_sphere.txt
@@ -96,13 +96,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_nphug.txt b/doc/src/fix_nphug.txt
index 0bd5153152..855a4c9ae4 100644
--- a/doc/src/fix_nphug.txt
+++ b/doc/src/fix_nphug.txt
@@ -146,13 +146,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -208,8 +208,8 @@ shock calculated from the RH conditions. They have units of distance/time.
 [Restrictions:]
 
 This fix style is part of the SHOCK 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 All the usual restrictions for "fix npt"_fix_nh.html apply,
 plus the additional ones mentioned above.
diff --git a/doc/src/fix_npt_asphere.txt b/doc/src/fix_npt_asphere.txt
index 9c95a80d33..194f4ff499 100644
--- a/doc/src/fix_npt_asphere.txt
+++ b/doc/src/fix_npt_asphere.txt
@@ -111,13 +111,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -157,8 +157,8 @@ This fix is not invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the ASPHERE 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix requires that atoms store torque and angular momentum and a
 quaternion as defined by the "atom_style ellipsoid"_atom_style.html
diff --git a/doc/src/fix_npt_body.txt b/doc/src/fix_npt_body.txt
index 0d2b797299..1d608137b6 100644
--- a/doc/src/fix_npt_body.txt
+++ b/doc/src/fix_npt_body.txt
@@ -110,13 +110,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -156,8 +156,8 @@ This fix is not invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the BODY package.  It is only enabled if LAMMPS
-was built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix requires that atoms store torque and angular momentum and a
 quaternion as defined by the "atom_style body"_atom_style.html
diff --git a/doc/src/fix_npt_sphere.txt b/doc/src/fix_npt_sphere.txt
index dcb25d1c73..6ebb68e176 100644
--- a/doc/src/fix_npt_sphere.txt
+++ b/doc/src/fix_npt_sphere.txt
@@ -121,13 +121,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_nve.txt b/doc/src/fix_nve.txt
index e446b27397..2347f957ae 100644
--- a/doc/src/fix_nve.txt
+++ b/doc/src/fix_nve.txt
@@ -40,13 +40,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_nve_asphere.txt b/doc/src/fix_nve_asphere.txt
index b7fb3e922c..bd9e4ae873 100644
--- a/doc/src/fix_nve_asphere.txt
+++ b/doc/src/fix_nve_asphere.txt
@@ -51,13 +51,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -67,8 +67,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This fix is part of the ASPHERE 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix requires that atoms store torque and angular momentum and a
 quaternion as defined by the "atom_style ellipsoid"_atom_style.html
diff --git a/doc/src/fix_nve_asphere_noforce.txt b/doc/src/fix_nve_asphere_noforce.txt
index e57417bda5..94b627bf1b 100644
--- a/doc/src/fix_nve_asphere_noforce.txt
+++ b/doc/src/fix_nve_asphere_noforce.txt
@@ -46,8 +46,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the ASPHERE 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix requires that atoms store torque and angular momentum and a
 quaternion as defined by the "atom_style ellipsoid"_atom_style.html
diff --git a/doc/src/fix_nve_body.txt b/doc/src/fix_nve_body.txt
index d072bfa161..1a9efb5e13 100644
--- a/doc/src/fix_nve_body.txt
+++ b/doc/src/fix_nve_body.txt
@@ -44,8 +44,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the BODY package.  It is only enabled if LAMMPS
-was built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix requires that atoms store torque and angular momentum and a
 quaternion as defined by the "atom_style body"_atom_style.html
diff --git a/doc/src/fix_nve_dot.txt b/doc/src/fix_nve_dot.txt
index 1041a248d8..54b199c1df 100644
--- a/doc/src/fix_nve_dot.txt
+++ b/doc/src/fix_nve_dot.txt
@@ -44,8 +44,8 @@ A technical report with more information on this integrator can be found
 [Restrictions:]
 
 These pair styles can only be used if LAMMPS was built with the
-"USER-CGDNA"_#USER-CGDNA package and the MOLECULE and ASPHERE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+"USER-CGDNA"_#USER-CGDNA package and the MOLECULE and ASPHERE package.
+See the "Build package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_nve_dotc_langevin.txt b/doc/src/fix_nve_dotc_langevin.txt
index 68c1b42328..c6148a7165 100644
--- a/doc/src/fix_nve_dotc_langevin.txt
+++ b/doc/src/fix_nve_dotc_langevin.txt
@@ -122,8 +122,8 @@ A technical report with more information on this integrator can be found
 [Restrictions:]
 
 These pair styles can only be used if LAMMPS was built with the
-"USER-CGDNA"_#USER-CGDNA package and the MOLECULE and ASPHERE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+"USER-CGDNA"_#USER-CGDNA package and the MOLECULE and ASPHERE package.
+See the "Build package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_nve_eff.txt b/doc/src/fix_nve_eff.txt
index 7343ddc429..556b95deba 100644
--- a/doc/src/fix_nve_eff.txt
+++ b/doc/src/fix_nve_eff.txt
@@ -43,8 +43,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the USER-EFF 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_nve_line.txt b/doc/src/fix_nve_line.txt
index dd5101489b..896e3b810d 100644
--- a/doc/src/fix_nve_line.txt
+++ b/doc/src/fix_nve_line.txt
@@ -44,8 +44,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the ASPHERE 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix requires that particles be line segments as defined by the
 "atom_style line"_atom_style.html command.
diff --git a/doc/src/fix_nve_manifold_rattle.txt b/doc/src/fix_nve_manifold_rattle.txt
index b333d093fb..5301ea603c 100644
--- a/doc/src/fix_nve_manifold_rattle.txt
+++ b/doc/src/fix_nve_manifold_rattle.txt
@@ -78,8 +78,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the USER-MANIFOLD 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 :line
 
diff --git a/doc/src/fix_nve_sphere.txt b/doc/src/fix_nve_sphere.txt
index 6e259bdb8e..818940a9bd 100644
--- a/doc/src/fix_nve_sphere.txt
+++ b/doc/src/fix_nve_sphere.txt
@@ -71,13 +71,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_nve_spin.txt b/doc/src/fix_nve_spin.txt
index e31185bc88..08f0eab61d 100644
--- a/doc/src/fix_nve_spin.txt
+++ b/doc/src/fix_nve_spin.txt
@@ -47,9 +47,9 @@ in "(Tranchida)"_#Tranchida1.
 
 [Restrictions:]
 
-This fix style can only be used if LAMMPS was built with the
-SPIN package. See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+This fix style can only be used if LAMMPS was built with the SPIN
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 To use the spin algorithm, it is necessary to define a map with 
 the atom_modify command. Typically, by adding the command:
diff --git a/doc/src/fix_nve_tri.txt b/doc/src/fix_nve_tri.txt
index ebdda19e36..c14907ca02 100644
--- a/doc/src/fix_nve_tri.txt
+++ b/doc/src/fix_nve_tri.txt
@@ -44,8 +44,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the ASPHERE 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix requires that particles be triangles as defined by the
 "atom_style tri"_atom_style.html command.
diff --git a/doc/src/fix_nvk.txt b/doc/src/fix_nvk.txt
index e3189f8e8a..98f63487b7 100644
--- a/doc/src/fix_nvk.txt
+++ b/doc/src/fix_nvk.txt
@@ -54,9 +54,9 @@ the simulation box. Therefore, the group must be set to all.
 
 This fix has not yet been implemented to work with the RESPA integrator.
 
-This fix is part of the USER-MISC 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.
+This fix is part of the USER-MISC package.  It is only enabled if
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:] none
 
diff --git a/doc/src/fix_nvt_asphere.txt b/doc/src/fix_nvt_asphere.txt
index 7b97637175..a2187f8495 100644
--- a/doc/src/fix_nvt_asphere.txt
+++ b/doc/src/fix_nvt_asphere.txt
@@ -92,13 +92,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -133,8 +133,8 @@ This fix is not invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the ASPHERE 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix requires that atoms store torque and angular momentum and a
 quaternion as defined by the "atom_style ellipsoid"_atom_style.html
diff --git a/doc/src/fix_nvt_body.txt b/doc/src/fix_nvt_body.txt
index 4493a89277..62c7cfecf8 100644
--- a/doc/src/fix_nvt_body.txt
+++ b/doc/src/fix_nvt_body.txt
@@ -91,13 +91,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -132,8 +132,8 @@ This fix is not invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the BODY package.  It is only enabled if LAMMPS
-was built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix requires that atoms store torque and angular momentum and a
 quaternion as defined by the "atom_style body"_atom_style.html
diff --git a/doc/src/fix_nvt_manifold_rattle.txt b/doc/src/fix_nvt_manifold_rattle.txt
index 1b4ad79166..0c4b81aa32 100644
--- a/doc/src/fix_nvt_manifold_rattle.txt
+++ b/doc/src/fix_nvt_manifold_rattle.txt
@@ -27,8 +27,6 @@ keyword = {temp} or {tchain} or {every}
     N = length of thermostat chain (1 = single thermostat)
   {every} value = N
     N = print info about iteration every N steps. N = 0 means no output :pre
-
-
 :ule
 
 [Examples:]
@@ -59,20 +57,18 @@ minimization"_minimize.html.
 
 :line
 
-
 [Restrictions:]
 
-This fix is part of the USER-MANIFOLD 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.
+This fix is part of the USER-MANIFOLD package. It is only enabled if
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 :line
 
-
 [Related commands:]
 
-"fix nve/manifold/rattle"_fix_nvt_manifold_rattle.html, "fix manifoldforce"_fix_manifoldforce.html
-[Default:] every = 0
+"fix nve/manifold/rattle"_fix_nvt_manifold_rattle.html, "fix
+manifoldforce"_fix_manifoldforce.html [Default:] every = 0
 
 :line
 
diff --git a/doc/src/fix_nvt_sllod.txt b/doc/src/fix_nvt_sllod.txt
index 9eb5065369..97a864a231 100644
--- a/doc/src/fix_nvt_sllod.txt
+++ b/doc/src/fix_nvt_sllod.txt
@@ -115,13 +115,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_nvt_sllod_eff.txt b/doc/src/fix_nvt_sllod_eff.txt
index 0200d5cb00..5cba15c8cf 100644
--- a/doc/src/fix_nvt_sllod_eff.txt
+++ b/doc/src/fix_nvt_sllod_eff.txt
@@ -69,8 +69,8 @@ This fix is not invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the USER-EFF 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix works best without Nose-Hoover chain thermostats, i.e. using
 tchain = 1.  Setting tchain to larger values can result in poor
diff --git a/doc/src/fix_nvt_sphere.txt b/doc/src/fix_nvt_sphere.txt
index a87e4abe67..75222e0de8 100644
--- a/doc/src/fix_nvt_sphere.txt
+++ b/doc/src/fix_nvt_sphere.txt
@@ -102,13 +102,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_orient.txt b/doc/src/fix_orient.txt
index 7552bea8c5..9d8e4e8628 100644
--- a/doc/src/fix_orient.txt
+++ b/doc/src/fix_orient.txt
@@ -151,8 +151,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the MISC 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix should only be used with fcc or bcc lattices.
 
diff --git a/doc/src/fix_phonon.txt b/doc/src/fix_phonon.txt
index 30e5864e3d..0c449899df 100644
--- a/doc/src/fix_phonon.txt
+++ b/doc/src/fix_phonon.txt
@@ -171,11 +171,11 @@ temperature of the system should not exceed the melting temperature to
 keep the system in its solid state.
 
 This fix is part of the USER-PHONON 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
-This fix requires LAMMPS be built with an FFT library.  See the
-"Making LAMMPS"_Section_start.html#start_2 section for more info.
+This fix requires LAMMPS be built with an FFT library.  See the "Build
+settings"_Build_settings.html doc page for details.
 
 [Related commands:]
 
diff --git a/doc/src/fix_pimd.txt b/doc/src/fix_pimd.txt
index b61b3f3065..a826244973 100644
--- a/doc/src/fix_pimd.txt
+++ b/doc/src/fix_pimd.txt
@@ -136,8 +136,8 @@ read_restart system_$\{ibead\}.restart2 :pre
 [Restrictions:]
 
 This fix is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 A PIMD simulation can be initialized with a single data file read via
 the "read_data"_read_data.html command.  However, this means all
diff --git a/doc/src/fix_poems.txt b/doc/src/fix_poems.txt
index 1a79c2a048..52ab0ca44d 100644
--- a/doc/src/fix_poems.txt
+++ b/doc/src/fix_poems.txt
@@ -123,8 +123,8 @@ minimization"_minimize.html.
 
 This fix is part of the POEMS package.  It is only enabled if LAMMPS
 was built with that package, which also requires the POEMS library be
-built and linked with LAMMPS.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+built and linked with LAMMPS.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_pour.txt b/doc/src/fix_pour.txt
index e58d8ebc3a..65f01c00fb 100644
--- a/doc/src/fix_pour.txt
+++ b/doc/src/fix_pour.txt
@@ -245,8 +245,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the GRANULAR 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 For 3d simulations, a gravity fix in the -z direction must be defined
 for use in conjunction with this fix.  For 2d simulations, gravity
diff --git a/doc/src/fix_precession_spin.txt b/doc/src/fix_precession_spin.txt
index fafe78448b..d58cd622b0 100644
--- a/doc/src/fix_precession_spin.txt
+++ b/doc/src/fix_precession_spin.txt
@@ -75,10 +75,10 @@ files"_restart.html.
 
 [Restrictions:]
 
-The {precession/spin} style is part of the SPIN package. 
-This style is only enabled if LAMMPS was built with this package, and
-if the atom_style "spin" was declared. 
-See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
+The {precession/spin} style is part of the SPIN package.  This style
+is only enabled if LAMMPS was built with this package, and if the
+atom_style "spin" was declared.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_python_invoke.txt b/doc/src/fix_python_invoke.txt
index 5e0c0369a5..2a0124e6bf 100644
--- a/doc/src/fix_python_invoke.txt
+++ b/doc/src/fix_python_invoke.txt
@@ -62,9 +62,9 @@ case not work or in the worst case result in undefined behavior.
 
 [Restrictions:]
 
-This fix is part of the PYTHON 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.
+This fix is part of the PYTHON package.  It is only enabled if LAMMPS
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Building LAMMPS with the PYTHON package will link LAMMPS with the
 Python library on your system.  Settings to enable this are in the
diff --git a/doc/src/fix_python_move.txt b/doc/src/fix_python_move.txt
index a4e0eb3937..c64ee788af 100644
--- a/doc/src/fix_python_move.txt
+++ b/doc/src/fix_python_move.txt
@@ -91,8 +91,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This pair style is part of the PYTHON 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_qbmsst.txt b/doc/src/fix_qbmsst.txt
index e96bd97f45..546d8c0813 100644
--- a/doc/src/fix_qbmsst.txt
+++ b/doc/src/fix_qbmsst.txt
@@ -189,8 +189,8 @@ in the command "fix qtb"_fix_qtb.html.
 [Restrictions:]
 
 This fix style is part of the USER-QTB 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 All cell dimensions must be periodic. This fix can not be used with a
 triclinic cell.  The QBMSST fix has been tested only for the group-ID
diff --git a/doc/src/fix_qeq.txt b/doc/src/fix_qeq.txt
index 27fb613ef9..46d2dd918c 100644
--- a/doc/src/fix_qeq.txt
+++ b/doc/src/fix_qeq.txt
@@ -187,8 +187,8 @@ Thexe fixes are invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 These fixes are part of the QEQ 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_qeq_comb.txt b/doc/src/fix_qeq_comb.txt
index 99e86df030..714d03f602 100644
--- a/doc/src/fix_qeq_comb.txt
+++ b/doc/src/fix_qeq_comb.txt
@@ -68,13 +68,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_qeq_reax.txt b/doc/src/fix_qeq_reax.txt
index cf16daf847..b62d46d9de 100644
--- a/doc/src/fix_qeq_reax.txt
+++ b/doc/src/fix_qeq_reax.txt
@@ -86,13 +86,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -102,8 +102,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This fix is part of the USER-REAXC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix does not correctly handle interactions
 involving multiple periodic images of the same atom. Hence, it should not
diff --git a/doc/src/fix_qmmm.txt b/doc/src/fix_qmmm.txt
index 657ee84181..2dbf935f93 100644
--- a/doc/src/fix_qmmm.txt
+++ b/doc/src/fix_qmmm.txt
@@ -54,8 +54,8 @@ fix is not invoked during "energy minimization"_minimize.html.
 
 This fix is part of the USER-QMMM package.  It is only enabled if
 LAMMPS was built with that package. It also requires building a
-library provided with LAMMPS.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+library provided with LAMMPS.  See the "Build
+package"_Build_package.html doc page for more info.
 
 The fix is only functional when LAMMPS is built as a library and
 linked with a compatible QM program and a QM/MM frontend into a QM/MM
diff --git a/doc/src/fix_qtb.txt b/doc/src/fix_qtb.txt
index 5b212934a9..c412146604 100644
--- a/doc/src/fix_qtb.txt
+++ b/doc/src/fix_qtb.txt
@@ -155,8 +155,8 @@ This fix is not invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 This fix style is part of the USER-QTB 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 :line
 
diff --git a/doc/src/fix_reax_bonds.txt b/doc/src/fix_reax_bonds.txt
index 49d61f4db8..06d30d871a 100644
--- a/doc/src/fix_reax_bonds.txt
+++ b/doc/src/fix_reax_bonds.txt
@@ -79,13 +79,13 @@ issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See "Speed"_Speed.html of the manual for
 more instructions on how to use the accelerated styles effectively.
@@ -101,8 +101,8 @@ which also requires the REAX library be built and linked with LAMMPS.
 The fix reax/c/bonds command requires that the "pair_style
 reax/c"_pair_reaxc.html be invoked.  This fix is part of the
 USER-REAXC 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.
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 To write gzipped bond files, you must compile LAMMPS with the
 -DLAMMPS_GZIP option.
diff --git a/doc/src/fix_reaxc_species.txt b/doc/src/fix_reaxc_species.txt
index 5be1c46230..980384ff34 100644
--- a/doc/src/fix_reaxc_species.txt
+++ b/doc/src/fix_reaxc_species.txt
@@ -146,13 +146,13 @@ issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See "Speed"_Speed.html of the manual for
 more instructions on how to use the accelerated styles effectively.
@@ -161,12 +161,12 @@ more instructions on how to use the accelerated styles effectively.
 
 [Restrictions:]
 
-The fix species currently only works with
-"pair_style reax/c"_pair_reaxc.html and it requires that the "pair_style
+The fix species currently only works with "pair_style
+reax/c"_pair_reaxc.html and it requires that the "pair_style
 reax/c"_pair_reaxc.html be invoked.  This fix is part of the
 USER-REAXC 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.
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 To write gzipped species files, you must compile LAMMPS with the
 -DLAMMPS_GZIP option.
diff --git a/doc/src/fix_rhok.txt b/doc/src/fix_rhok.txt
index 68cce694e9..a3d1ab702e 100644
--- a/doc/src/fix_rhok.txt
+++ b/doc/src/fix_rhok.txt
@@ -40,8 +40,8 @@ An example of using the interface pinning method is located in the
 [Restrictions:]
 
 This fix is part of the MISC 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_rigid.txt b/doc/src/fix_rigid.txt
index d5e3b01668..af4b51948e 100644
--- a/doc/src/fix_rigid.txt
+++ b/doc/src/fix_rigid.txt
@@ -696,13 +696,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -806,8 +806,8 @@ of the "run"_run.html command.  These fixes are not invoked during
 [Restrictions:]
 
 These fixes are all part of the RIGID 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Assigning a temperature via the "velocity create"_velocity.html
 command to a system with "rigid bodies"_fix_rigid.html may not have
diff --git a/doc/src/fix_rx.txt b/doc/src/fix_rx.txt
index d39e41e922..ad42c577aa 100644
--- a/doc/src/fix_rx.txt
+++ b/doc/src/fix_rx.txt
@@ -192,13 +192,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -208,8 +208,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This command is part of the USER-DPD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This command also requires use of the "atom_style dpd"_atom_style.html
 command.
diff --git a/doc/src/fix_setforce.txt b/doc/src/fix_setforce.txt
index 14fceb7b49..4b9abba52f 100644
--- a/doc/src/fix_setforce.txt
+++ b/doc/src/fix_setforce.txt
@@ -77,13 +77,13 @@ region must be used. See the region "region"_region.html command for
 more information.
 
 These accelerated styles are part of the r Kokkos 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.
+only enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_shake.txt b/doc/src/fix_shake.txt
index ea38de41cd..77bb5794f6 100644
--- a/doc/src/fix_shake.txt
+++ b/doc/src/fix_shake.txt
@@ -154,13 +154,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -202,8 +202,8 @@ fixes are not invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 These fixes are part of the RIGID 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 For computational efficiency, there can only be one shake or rattle
 fix defined in a simulation.
diff --git a/doc/src/fix_shardlow.txt b/doc/src/fix_shardlow.txt
index 33db2bf7cc..c1be146fa6 100644
--- a/doc/src/fix_shardlow.txt
+++ b/doc/src/fix_shardlow.txt
@@ -62,13 +62,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -78,8 +78,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This command is part of the USER-DPD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix is currently limited to orthogonal simulation cell
 geometries.
diff --git a/doc/src/fix_smd.txt b/doc/src/fix_smd.txt
index 2f083dafc3..644c04eadb 100644
--- a/doc/src/fix_smd.txt
+++ b/doc/src/fix_smd.txt
@@ -130,8 +130,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_smd_adjust_dt.txt b/doc/src/fix_smd_adjust_dt.txt
index 740b10559d..3535ddfcc2 100644
--- a/doc/src/fix_smd_adjust_dt.txt
+++ b/doc/src/fix_smd_adjust_dt.txt
@@ -25,18 +25,23 @@ fix 1 all smd/adjust_dt 0.1 :pre
 
 [Description:]
 
-The fix calculates a new stable time increment for use with the SMD time integrators.
+The fix calculates a new stable time increment for use with the SMD
+time integrators.
 
-The stable time increment is based on multiple conditions. For the SPH pair styles, a
-CFL criterion (Courant, Friedrichs & Lewy, 1928) is evaluated, which determines the speed of
-sound cannot propagate further than a typical spacing between particles within a single time step to ensure
-no information is lost. For the contact pair styles, a linear analysis of the pair potential determines a
-stable maximum time step.
+The stable time increment is based on multiple conditions. For the SPH
+pair styles, a CFL criterion (Courant, Friedrichs & Lewy, 1928) is
+evaluated, which determines the speed of sound cannot propagate
+further than a typical spacing between particles within a single time
+step to ensure no information is lost. For the contact pair styles, a
+linear analysis of the pair potential determines a stable maximum time
+step.
 
-This fix inquires the minimum stable time increment across all particles contained in the group for which this
-fix is defined. An additional safety factor {s_fact} is applied to the time increment.
+This fix inquires the minimum stable time increment across all
+particles contained in the group for which this fix is defined. An
+additional safety factor {s_fact} is applied to the time increment.
 
-See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to use Smooth Mach Dynamics in LAMMPS.
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to use Smooth Mach
+Dynamics in LAMMPS.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
@@ -45,8 +50,8 @@ Currently, no part of USER-SMD supports restarting nor minimization.
 [Restrictions:]
 
 This fix is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_smd_integrate_tlsph.txt b/doc/src/fix_smd_integrate_tlsph.txt
index cd676a51ce..029605ff7f 100644
--- a/doc/src/fix_smd_integrate_tlsph.txt
+++ b/doc/src/fix_smd_integrate_tlsph.txt
@@ -27,22 +27,26 @@ fix 1 all smd/integrate_tlsph limit_velocity 1000 :pre
 
 [Description:]
 
-The fix performs explicit time integration for particles which interact according with the Total-Lagrangian SPH pair style.
+The fix performs explicit time integration for particles which
+interact according with the Total-Lagrangian SPH pair style.
 
-See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth Mach Dynamics in LAMMPS.
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth Mach
+Dynamics in LAMMPS.
 
-The {limit_velocity} keyword will control the velocity, scaling the norm of
-the velocity vector to max_vel in case it exceeds this velocity limit.
+The {limit_velocity} keyword will control the velocity, scaling the
+norm of the velocity vector to max_vel in case it exceeds this
+velocity limit.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
-Currently, no part of USER-SMD supports restarting nor minimization. This fix has no outputs.
+Currently, no part of USER-SMD supports restarting nor
+minimization. This fix has no outputs.
 
 [Restrictions:]
 
 This fix is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_smd_integrate_ulsph.txt b/doc/src/fix_smd_integrate_ulsph.txt
index 7f16b4b7ce..a99574cc85 100644
--- a/doc/src/fix_smd_integrate_ulsph.txt
+++ b/doc/src/fix_smd_integrate_ulsph.txt
@@ -24,7 +24,6 @@ adjust_radius values = adjust_radius_factor min_nn max_nn
 limit_velocity values = max_velocity
       max_velocity = maximum allowed velocity.
 
-
 [Examples:]
 
 fix 1 all smd/integrate_ulsph adjust_radius 1.02 25 50
@@ -32,28 +31,33 @@ fix 1 all smd/integrate_ulsph limit_velocity 1000 :pre
 
 [Description:]
 
-The fix performs explicit time integration for particles which interact with the updated Lagrangian SPH pair style.
-See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth Mach Dynamics in LAMMPS.
+The fix performs explicit time integration for particles which
+interact with the updated Lagrangian SPH pair style.
+
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth Mach
+Dynamics in LAMMPS.
 
-The {adjust_radius} keyword activates dynamic adjustment of the per-particle SPH smoothing kernel radius such that the number of neighbors per particles remains
-within the interval {min_nn} to {max_nn}. The parameter {adjust_radius_factor} determines the amount of adjustment per timestep. Typical values are
-{adjust_radius_factor} =1.02, {min_nn} =15, and {max_nn} =20.
+The {adjust_radius} keyword activates dynamic adjustment of the
+per-particle SPH smoothing kernel radius such that the number of
+neighbors per particles remains within the interval {min_nn} to
+{max_nn}. The parameter {adjust_radius_factor} determines the amount
+of adjustment per timestep. Typical values are {adjust_radius_factor}
+=1.02, {min_nn} =15, and {max_nn} =20.
 
 The {limit_velocity} keyword will control the velocity, scaling the norm of
 the velocity vector to max_vel in case it exceeds this velocity limit.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
-Currently, no part of USER-SMD supports restarting nor minimization. This fix has no outputs.
+Currently, no part of USER-SMD supports restarting nor
+minimization. This fix has no outputs.
 
 [Restrictions:]
 
 This fix is part of the USER-SMD 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.
-
-[Related commands:]
-
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
+[Related commands:] none
 
 [Default:] none
diff --git a/doc/src/fix_smd_move_triangulated_surface.txt b/doc/src/fix_smd_move_triangulated_surface.txt
index aeabf18768..2a998ba8c6 100644
--- a/doc/src/fix_smd_move_triangulated_surface.txt
+++ b/doc/src/fix_smd_move_triangulated_surface.txt
@@ -25,7 +25,6 @@ keyword = {*LINEAR} or {*WIGGLE} or {*ROTATE} :l
       Px,Py,Pz = origin point of axis of rotation (distance units)
       Rx,Ry,Rz = axis of rotation vector
       period = period of rotation (time units) :pre
-
 :ule
 
 [Examples:]
@@ -36,9 +35,11 @@ fix 2 tool smd/move_tri_surf *ROTATE 0 0 0 5 2 1 :pre
 
 [Description:]
 
-This fix applies only to rigid surfaces read from .STL files via fix "smd/wall_surface"_fix_smd_wall_surface.html .
-It updates position and velocity for the particles in the group each timestep without regard to forces on the particles.
-The rigid surfaces can thus be moved along simple trajectories during the simulation.
+This fix applies only to rigid surfaces read from .STL files via fix
+"smd/wall_surface"_fix_smd_wall_surface.html .  It updates position
+and velocity for the particles in the group each timestep without
+regard to forces on the particles.  The rigid surfaces can thus be
+moved along simple trajectories during the simulation.
 
 The {*LINEAR} style moves particles with the specified constant velocity
 vector V = (Vx,Vy,Vz). This style also sets the velocity of each particle
@@ -49,27 +50,30 @@ Particles are moved along (vx, vy, vz) with constant velocity until a
 displacement of max_travel is reached. Then, the velocity vector is
 reversed. This process is repeated.
 
-The {*ROTATE} style rotates particles around a rotation axis R = (Rx,Ry,Rz) that
-goes through a point P = (Px,Py,Pz). The period of the rotation is also
-specified. This style also sets the velocity of each particle to (omega cross
-Rperp) where omega is its angular velocity around the rotation axis and
-Rperp is a perpendicular vector from the rotation axis to the particle.
+The {*ROTATE} style rotates particles around a rotation axis R =
+(Rx,Ry,Rz) that goes through a point P = (Px,Py,Pz). The period of the
+rotation is also specified. This style also sets the velocity of each
+particle to (omega cross Rperp) where omega is its angular velocity
+around the rotation axis and Rperp is a perpendicular vector from the
+rotation axis to the particle.
 
-See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth Mach Dynamics in LAMMPS.
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth Mach
+Dynamics in LAMMPS.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
-Currently, no part of USER-SMD supports restarting nor minimization. This fix has no outputs.
+Currently, no part of USER-SMD supports restarting nor
+minimization. This fix has no outputs.
 
 [Restrictions:]
 
 This fix is part of the USER-SMD 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.
-
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
-"smd/triangle_mesh_vertices"_compute_smd_triangle_mesh_vertices.html, "smd/wall_surface"_fix_smd_wall_surface.html
+"smd/triangle_mesh_vertices"_compute_smd_triangle_mesh_vertices.html,
+"smd/wall_surface"_fix_smd_wall_surface.html
 
 [Default:] none
diff --git a/doc/src/fix_smd_setvel.txt b/doc/src/fix_smd_setvel.txt
index 6634751d6a..b170eff860 100644
--- a/doc/src/fix_smd_setvel.txt
+++ b/doc/src/fix_smd_setvel.txt
@@ -76,8 +76,8 @@ the "run"_run.html command.
 [Restrictions:]
 
 This fix is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:] none
 
diff --git a/doc/src/fix_smd_wall_surface.txt b/doc/src/fix_smd_wall_surface.txt
index a19b2c4cfb..dc3625e95e 100644
--- a/doc/src/fix_smd_wall_surface.txt
+++ b/doc/src/fix_smd_wall_surface.txt
@@ -17,9 +17,7 @@ smd/wall_surface = style name of this fix command :l
 arg = {file} :l
    {file} = file name of a triangular mesh in stl format :pre
 type = particle type to be given to the new particles created by this fix :l
-mol-ID = molecule-ID to be given to the new particles created by this fix (must be >= 65535) :l
-
-:ule
+mol-ID = molecule-ID to be given to the new particles created by this fix (must be >= 65535) :l,ule
 
 [Examples:]
 
@@ -27,32 +25,47 @@ fix stl_surf all smd/wall_surface tool.stl 2 65535 :pre
 
 [Description:]
 
-This fix creates reads a triangulated surface from a file in .STL format.
-For each triangle, a new particle is created which stores the barycenter of the triangle and the vertex positions.
-The radius of the new particle is that of the minimum circle which encompasses the triangle vertices.
+This fix creates reads a triangulated surface from a file in .STL
+format.  For each triangle, a new particle is created which stores the
+barycenter of the triangle and the vertex positions.  The radius of
+the new particle is that of the minimum circle which encompasses the
+triangle vertices.
 
-The triangulated surface can be used as a complex rigid wall via the "smd/tri_surface"_pair_smd_triangulated_surface.html pair style.
-It is possible to move the triangulated surface via the "smd/move_tri_surf"_fix_smd_move_triangulated_surface.html fix style.
+The triangulated surface can be used as a complex rigid wall via the
+"smd/tri_surface"_pair_smd_triangulated_surface.html pair style.  It
+is possible to move the triangulated surface via the
+"smd/move_tri_surf"_fix_smd_move_triangulated_surface.html fix style.
 
-Immediately after a .STL file has been read, the simulation needs to be run for 0 timesteps in order to properly register the new particles
-in the system. See the "funnel_flow" example in the USER-SMD examples directory.
+Immediately after a .STL file has been read, the simulation needs to
+be run for 0 timesteps in order to properly register the new particles
+in the system. See the "funnel_flow" example in the USER-SMD examples
+directory.
 
-See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to use Smooth Mach Dynamics in LAMMPS.
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to use Smooth Mach
+Dynamics in LAMMPS.
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
-Currently, no part of USER-SMD supports restarting nor minimization. This fix has no outputs.
+Currently, no part of USER-SMD supports restarting nor
+minimization. This fix has no outputs.
 
 [Restrictions:]
 
 This fix is part of the USER-SMD 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. The molecule ID given to the particles created by this fix have to be equal to or larger than 65535.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
+
+The molecule ID given to the particles created by this fix have to be
+equal to or larger than 65535.
 
-Within each .STL file, only a single triangulated object must be present, even though the STL format allows for the possibility of multiple objects in one file.
+Within each .STL file, only a single triangulated object must be
+present, even though the STL format allows for the possibility of
+multiple objects in one file.
 
 [Related commands:]
 
-"smd/triangle_mesh_vertices"_compute_smd_triangle_mesh_vertices.html, "smd/move_tri_surf"_fix_smd_move_triangulated_surface.html, "smd/tri_surface"_pair_smd_triangulated_surface.html
+"smd/triangle_mesh_vertices"_compute_smd_triangle_mesh_vertices.html,
+"smd/move_tri_surf"_fix_smd_move_triangulated_surface.html,
+"smd/tri_surface"_pair_smd_triangulated_surface.html
 
 [Default:] none
diff --git a/doc/src/fix_srd.txt b/doc/src/fix_srd.txt
index 893557b9ac..557eee1cfc 100644
--- a/doc/src/fix_srd.txt
+++ b/doc/src/fix_srd.txt
@@ -371,8 +371,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This command can only be used if LAMMPS was built with the SRD
-package.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info on packages.
+package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_temp_rescale_eff.txt b/doc/src/fix_temp_rescale_eff.txt
index 0e08e4f1e8..83b360df85 100644
--- a/doc/src/fix_temp_rescale_eff.txt
+++ b/doc/src/fix_temp_rescale_eff.txt
@@ -64,8 +64,8 @@ This fix is not invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the USER-EFF 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_tfmc.txt b/doc/src/fix_tfmc.txt
index ddfa462619..2d4f003607 100644
--- a/doc/src/fix_tfmc.txt
+++ b/doc/src/fix_tfmc.txt
@@ -125,8 +125,8 @@ This fix is not invoked during "energy minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the MC 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.
+built with that package.  See the "Build package"_Build_package.html
+doc page for more info.
 
 This fix is not compatible with "fix shake"_fix_shake.html.
 
diff --git a/doc/src/fix_thermal_conductivity.txt b/doc/src/fix_thermal_conductivity.txt
index 86fc6f2c72..2ab32b25f0 100644
--- a/doc/src/fix_thermal_conductivity.txt
+++ b/doc/src/fix_thermal_conductivity.txt
@@ -123,8 +123,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the MISC 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Swaps conserve both momentum and kinetic energy, even if the masses of
 the swapped atoms are not equal.  Thus you should not need to
diff --git a/doc/src/fix_ti_spring.txt b/doc/src/fix_ti_spring.txt
index afe5373220..290ee95b9a 100644
--- a/doc/src/fix_ti_spring.txt
+++ b/doc/src/fix_ti_spring.txt
@@ -146,8 +146,8 @@ this fix.
 [Restrictions:]
 
 This fix is part of the USER-MISC 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 [Default:]
 
diff --git a/doc/src/fix_tmd.txt b/doc/src/fix_tmd.txt
index c2541692f5..73e95ba9fe 100644
--- a/doc/src/fix_tmd.txt
+++ b/doc/src/fix_tmd.txt
@@ -110,8 +110,8 @@ are not multiple competing holonomic constraints applied to the same
 atoms.
 
 To read gzipped target files, you must compile LAMMPS with the
--DLAMMPS_GZIP option - see the "Making
-LAMMPS"_Section_start.html#start_2 section of the documentation.
+-DLAMMPS_GZIP option.  See the "Build settings"_Build_settings.html
+doc page for details.
 
 [Related commands:] none
 
diff --git a/doc/src/fix_ttm.txt b/doc/src/fix_ttm.txt
index 6001def581..85407f2466 100644
--- a/doc/src/fix_ttm.txt
+++ b/doc/src/fix_ttm.txt
@@ -295,8 +295,7 @@ of the "run"_run.html command.  The fixes are not invoked during
 Fix {ttm} is part of the MISC package. It is only enabled if LAMMPS
 was built with that package.  Fix {ttm/mod} is part of the USER-MISC
 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.
+See the "Build package"_Build_package.html doc page for more info.
 
 These fixes can only be used for 3d simulations and orthogonal
 simulation boxes.  You must also use periodic
diff --git a/doc/src/fix_tune_kspace.txt b/doc/src/fix_tune_kspace.txt
index b4e8472591..147bb1eb3d 100644
--- a/doc/src/fix_tune_kspace.txt
+++ b/doc/src/fix_tune_kspace.txt
@@ -79,9 +79,9 @@ minimization"_minimize.html.
 
 [Restrictions:]
 
-This fix is part of the KSPACE 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.
+This fix is part of the KSPACE package.  It is only enabled if LAMMPS
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Do not set "neigh_modify once yes" or else this fix will never be
 called.  Reneighboring is required.
diff --git a/doc/src/fix_viscosity.txt b/doc/src/fix_viscosity.txt
index 934da3efdd..d86b13d055 100644
--- a/doc/src/fix_viscosity.txt
+++ b/doc/src/fix_viscosity.txt
@@ -129,8 +129,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the MISC 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Swaps conserve both momentum and kinetic energy, even if the masses of
 the swapped atoms are not equal.  Thus you should not need to
diff --git a/doc/src/fix_wall.txt b/doc/src/fix_wall.txt
index 2ac59d9588..162e32c68c 100644
--- a/doc/src/fix_wall.txt
+++ b/doc/src/fix_wall.txt
@@ -294,13 +294,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/fix_wall_body_polygon.txt b/doc/src/fix_wall_body_polygon.txt
index 0946a85131..45cbb2841d 100644
--- a/doc/src/fix_wall_body_polygon.txt
+++ b/doc/src/fix_wall_body_polygon.txt
@@ -91,8 +91,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the BODY package.  It is only enabled if LAMMPS
-was built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Any dimension (xy) that has a wall must be non-periodic.
 
diff --git a/doc/src/fix_wall_body_polyhedron.txt b/doc/src/fix_wall_body_polyhedron.txt
index 407cf9fb33..231ab1f0fe 100644
--- a/doc/src/fix_wall_body_polyhedron.txt
+++ b/doc/src/fix_wall_body_polyhedron.txt
@@ -89,9 +89,9 @@ minimization"_minimize.html.
 
 [Restrictions:]
 
-This fix is part of the BODY package.  It is only enabled if
-LAMMPS was built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+This fix is part of the BODY package.  It is only enabled if LAMMPS
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Any dimension (xyz) that has a wall must be non-periodic.
 
diff --git a/doc/src/fix_wall_ees.txt b/doc/src/fix_wall_ees.txt
index ae16ca40d2..4cc91f5222 100644
--- a/doc/src/fix_wall_ees.txt
+++ b/doc/src/fix_wall_ees.txt
@@ -97,8 +97,8 @@ of using this fix in the examples/USER/misc/ees/ directory.
 [Restrictions:]
 
 This fix is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This fix requires that atoms be ellipsoids as defined by the
 "atom_style ellipsoid"_atom_style.html command.
diff --git a/doc/src/fix_wall_gran.txt b/doc/src/fix_wall_gran.txt
index 6c2769fc12..0ea5b194eb 100644
--- a/doc/src/fix_wall_gran.txt
+++ b/doc/src/fix_wall_gran.txt
@@ -156,8 +156,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the GRANULAR 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Any dimension (xyz) that has a granular wall must be non-periodic.
 
diff --git a/doc/src/fix_wall_gran_region.txt b/doc/src/fix_wall_gran_region.txt
index 187214c1a3..50d744b305 100644
--- a/doc/src/fix_wall_gran_region.txt
+++ b/doc/src/fix_wall_gran_region.txt
@@ -188,8 +188,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix is part of the GRANULAR 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/fix_wall_piston.txt b/doc/src/fix_wall_piston.txt
index eecf69ebf2..b1968e0d49 100644
--- a/doc/src/fix_wall_piston.txt
+++ b/doc/src/fix_wall_piston.txt
@@ -99,8 +99,8 @@ minimization"_minimize.html.
 [Restrictions:]
 
 This fix style is part of the SHOCK 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 The face that has the wall/piston must be boundary type 's'
 (shrink-wrapped). The opposing face can be
diff --git a/doc/src/fix_wall_reflect.txt b/doc/src/fix_wall_reflect.txt
index 78be84eb63..e4dd7e2fb9 100644
--- a/doc/src/fix_wall_reflect.txt
+++ b/doc/src/fix_wall_reflect.txt
@@ -136,13 +136,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/group2ndx.txt b/doc/src/group2ndx.txt
index 242d6a69a4..ed9bcb003a 100644
--- a/doc/src/group2ndx.txt
+++ b/doc/src/group2ndx.txt
@@ -54,8 +54,8 @@ This command requires that atoms have atom IDs, since this is the
 information that is written to the index file.
 
 These commands are part of the USER-COLVARS 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.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/improper_class2.txt b/doc/src/improper_class2.txt
index c38f73c64d..704944920e 100644
--- a/doc/src/improper_class2.txt
+++ b/doc/src/improper_class2.txt
@@ -93,13 +93,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -109,8 +109,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This improper style can only be used if LAMMPS was built with the
-CLASS2 package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+CLASS2 package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/improper_cossq.txt b/doc/src/improper_cossq.txt
index 04aa45255c..8bd02afb84 100644
--- a/doc/src/improper_cossq.txt
+++ b/doc/src/improper_cossq.txt
@@ -59,13 +59,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -75,8 +75,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This improper style can only be used if LAMMPS was built with the
-USER-MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER-MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/improper_cvff.txt b/doc/src/improper_cvff.txt
index d01faf2885..d57fddc512 100644
--- a/doc/src/improper_cvff.txt
+++ b/doc/src/improper_cvff.txt
@@ -60,13 +60,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -76,8 +76,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This improper style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 [Related commands:]
 
diff --git a/doc/src/improper_distance.txt b/doc/src/improper_distance.txt
index 93235fe601..bfd92f57ec 100644
--- a/doc/src/improper_distance.txt
+++ b/doc/src/improper_distance.txt
@@ -48,8 +48,8 @@ K_4 (energy/distance^4) :ul
 [Restrictions:]
 
 This improper style can only be used if LAMMPS was built with the
-USER-MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER-MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/improper_fourier.txt b/doc/src/improper_fourier.txt
index 78cc1b3f76..8b2021dccd 100644
--- a/doc/src/improper_fourier.txt
+++ b/doc/src/improper_fourier.txt
@@ -54,13 +54,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -70,8 +70,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-USER_MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER_MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/improper_harmonic.txt b/doc/src/improper_harmonic.txt
index f398dc425f..1e9e7172f9 100644
--- a/doc/src/improper_harmonic.txt
+++ b/doc/src/improper_harmonic.txt
@@ -64,13 +64,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -80,8 +80,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This improper style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 [Related commands:]
 
diff --git a/doc/src/improper_hybrid.txt b/doc/src/improper_hybrid.txt
index 42afbe8577..929eec43e1 100644
--- a/doc/src/improper_hybrid.txt
+++ b/doc/src/improper_hybrid.txt
@@ -55,8 +55,8 @@ types.
 [Restrictions:]
 
 This improper style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 Unlike other improper styles, the hybrid improper style does not store
 improper coefficient info for individual sub-styles in a "binary
diff --git a/doc/src/improper_inversion_harmonic.txt b/doc/src/improper_inversion_harmonic.txt
index 2c0f2f0af8..43ffdeb8e9 100644
--- a/doc/src/improper_inversion_harmonic.txt
+++ b/doc/src/improper_inversion_harmonic.txt
@@ -52,8 +52,8 @@ in between.
 [Restrictions:]
 
 This improper style can only be used if LAMMPS was built with the
-USER-MOFFF package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+USER-MOFFF package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/improper_ring.txt b/doc/src/improper_ring.txt
index 60bbca170a..8a2ee29e17 100644
--- a/doc/src/improper_ring.txt
+++ b/doc/src/improper_ring.txt
@@ -63,13 +63,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -79,8 +79,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This improper style can only be used if LAMMPS was built with the
-USER-MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER-MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/improper_style.txt b/doc/src/improper_style.txt
index 3d29b28ec4..ef0c524d14 100644
--- a/doc/src/improper_style.txt
+++ b/doc/src/improper_style.txt
@@ -81,10 +81,9 @@ Improper styles can only be set for atom_style choices that allow
 impropers to be defined.
 
 Most improper styles are part of the MOLECULE 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 on packages.
-The doc pages for individual improper potentials tell if it is part of
-a package.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.  The doc pages for
+individual improper potentials tell if it is part of a package.
 
 [Related commands:]
 
diff --git a/doc/src/improper_umbrella.txt b/doc/src/improper_umbrella.txt
index b05cf4b181..6c29ec7ac5 100644
--- a/doc/src/improper_umbrella.txt
+++ b/doc/src/improper_umbrella.txt
@@ -57,13 +57,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -73,8 +73,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This improper style can only be used if LAMMPS was built with the
-MOLECULE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Build package"_Build_package.html doc page
+for more info.
 
 [Related commands:]
 
diff --git a/doc/src/jump.txt b/doc/src/jump.txt
index b5afeb6559..2e26d32c40 100644
--- a/doc/src/jump.txt
+++ b/doc/src/jump.txt
@@ -40,15 +40,14 @@ lmp_g++ < in.script :pre
 since the SELF option invokes the C-library rewind() call, which may
 not be supported for stdin on some systems or by some MPI
 implementations.  This can be worked around by using the "-in
-command-line argument"_Section_start.html#start_6, e.g.
+command-line switch"_Run_options.html, e.g.
 
 lmp_g++ -in in.script :pre
 
-or by using the "-var command-line
-argument"_Section_start.html#start_6 to pass the script name as a
-variable to the input script.  In the latter case, a
-"variable"_variable.html called "fname" could be used in place of
-SELF, e.g.
+or by using the "-var command-line switch"_Run_options.html to pass
+the script name as a variable to the input script.  In the latter
+case, a "variable"_variable.html called "fname" could be used in place
+of SELF, e.g.
 
 lmp_g++ -var fname in.script < in.script :pre
 
diff --git a/doc/src/kspace_style.txt b/doc/src/kspace_style.txt
index 55ad4ab610..7e479c76a6 100644
--- a/doc/src/kspace_style.txt
+++ b/doc/src/kspace_style.txt
@@ -180,9 +180,9 @@ lo-level Makefile.  This setting also changes some of the PPPM
 operations (e.g. mapping charge to mesh and interpolating electric
 fields to particles) to be performed in single precision.  This option
 can speed-up long-range calculations, particularly in parallel or on
-GPUs.  The use of the -DFFT_SINGLE flag is discussed in "this
-section"_Section_start.html#start_2_4 of the manual. MSM does not
-currently support the -DFFT_SINGLE compiler switch.
+GPUs.  The use of the -DFFT_SINGLE flag is discussed on the "Build
+settings"_Build_settings.html doc page. MSM does not currently support
+the -DFFT_SINGLE compiler switch.
 
 :line
 
@@ -286,10 +286,10 @@ The {pppm/kk} style also performs charge assignment and force
 interpolation calculations on the GPU while the FFTs themselves are
 calculated on the CPU in non-threaded mode.
 
-These accelerated styles are part of the GPU, USER-INTEL,
-KOKKOS, USER-OMP, and OPT packages respectively.  They are only
-enabled if LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
+USER-OMP, and OPT packages respectively.  They are only enabled if
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -308,9 +308,9 @@ triclinic simulation cells may not yet be supported by suffix versions
 of these styles.
 
 All of the kspace styles are part of the KSPACE 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 that
-the KSPACE package is installed by default.
+only enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.  Note that the
+KSPACE package is installed by default.
 
 For MSM, a simulation must be 3d and one can use any combination of
 periodic, non-periodic, or shrink-wrapped boundaries (specified using
diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index c0ca357f21..88ef6d77cb 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -8,7 +8,27 @@ Intro_nonfeatures.html
 Intro_opensource.html
 Intro_authors.html
 Intro_website.html
-Section_start.html
+Install.html
+Install_linux.html
+Install_mac.html
+Install_windows.html
+Install_tarball.html
+Install_git.html
+Install_svn.html
+Install_patch.html
+Build.html
+Build_cmake.html
+Build_make.html
+Build_link.html
+Build_basics.html
+Build_settings.html
+Build_package.html
+Build_extras.html
+Run.html
+Run_basics.html
+Run_options.html
+Run_output.html
+Run_windows.html
 Commands.html
 Commands_input.html
 Commands_parse.html
diff --git a/doc/src/log.txt b/doc/src/log.txt
index 7603768519..d526158a3c 100644
--- a/doc/src/log.txt
+++ b/doc/src/log.txt
@@ -33,9 +33,8 @@ be a variable, so that different processors do not attempt to write to
 the same log file.
 
 The file "log.lammps" is the default log file for a LAMMPS run.  The
-name of the initial log file can also be set by the command-line
-switch -log.  See "Section 2.6"_Section_start.html#start_6 for
-details.
+name of the initial log file can also be set by the "-log command-line
+switch"_Run_options.html.
 
 [Restrictions:] none
 
diff --git a/doc/src/neb.txt b/doc/src/neb.txt
index fbd77ee329..57e122fdcd 100644
--- a/doc/src/neb.txt
+++ b/doc/src/neb.txt
@@ -50,14 +50,14 @@ follows the discussion in these 4 papers: "(HenkelmanA)"_#HenkelmanA,
 "(HenkelmanB)"_#HenkelmanB, "(Nakano)"_#Nakano3 and "(Maras)"_#Maras2.
 
 Each replica runs on a partition of one or more processors.  Processor
-partitions are defined at run-time using the -partition command-line
-switch; see "Section 2.6"_Section_start.html#start_6 of the manual.
-Note that if you have MPI installed, you can run a multi-replica
-simulation with more replicas (partitions) than you have physical
-processors, e.g you can run a 10-replica simulation on just one or two
-processors.  You will simply not get the performance speed-up you
-would see with one or more physical processors per replica.  See the
-"Howto replica"_Howto_replica.html doc page for further discussion.
+partitions are defined at run-time using the "-partition command-line
+switch"_Run_options.html.  Note that if you have MPI installed, you
+can run a multi-replica simulation with more replicas (partitions)
+than you have physical processors, e.g you can run a 10-replica
+simulation on just one or two processors.  You will simply not get the
+performance speed-up you would see with one or more physical
+processors per replica.  See the "Howto replica"_Howto_replica.html
+doc page for further discussion.
 
 NOTE: As explained below, a NEB calculation perfoms a damped dynamics
 minimization across all the replicas.  The minimizer uses whatever
@@ -395,8 +395,8 @@ image.
 [Restrictions:]
 
 This command can only be used if LAMMPS was built with the REPLICA
-package.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info on packages.
+package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 :line
 
diff --git a/doc/src/neighbor.txt b/doc/src/neighbor.txt
index 7c7e7b05e5..3e590eaff1 100644
--- a/doc/src/neighbor.txt
+++ b/doc/src/neighbor.txt
@@ -65,8 +65,8 @@ stored in the list.
 
 When a run is finished, counts of the number of neighbors stored in
 the pairwise list and the number of times neighbor lists were built
-are printed to the screen and log file.  See "this
-section"_Section_start.html#start_7 for details.
+are printed to the screen and log file.  See the "Run
+output"_Run_output.html doc page for details.
 
 [Restrictions:] none
 
diff --git a/doc/src/next.txt b/doc/src/next.txt
index 5a0b30b2a7..aefb2ca594 100644
--- a/doc/src/next.txt
+++ b/doc/src/next.txt
@@ -70,11 +70,11 @@ incrementing is done, using a single lock file for all variables.  The
 next value (for each variable) is assigned to whichever processor
 partition executes the command first.  All processors in the partition
 are assigned the same value(s).  Running LAMMPS on multiple partitions
-of processors via the "-partition" command-line switch is described in
-"this section"_Section_start.html#start_6 of the manual.  {Universe}-
-and {uloop}-style variables are incremented using the files
-"tmp.lammps.variable" and "tmp.lammps.variable.lock" which you will
-see in your directory during and after such a LAMMPS run.
+of processors via the "-partition command-line
+switch"_Run_options.html.  {Universe}- and {uloop}-style variables are
+incremented using the files "tmp.lammps.variable" and
+"tmp.lammps.variable.lock" which you will see in your directory during
+and after such a LAMMPS run.
 
 Here is an example of running a series of simulations using the next
 command with an {index}-style variable.  If this input script is named
diff --git a/doc/src/package.txt b/doc/src/package.txt
index c2e7345bb7..76246c22f6 100644
--- a/doc/src/package.txt
+++ b/doc/src/package.txt
@@ -121,8 +121,8 @@ their initialization, before a simulation is defined.
 
 This command can also be specified from the command-line when
 launching LAMMPS, using the "-pk" "command-line
-switch"_Section_start.html#start_6.  The syntax is exactly the same as
-when used in an input script.
+switch"_Run_options.html.  The syntax is exactly the same as when used
+in an input script.
 
 Note that all of the accelerator packages require the package command
 to be specified (except the OPT package), if the package is to be used
@@ -132,22 +132,21 @@ a default version of the command is typically invoked by other
 accelerator settings.
 
 The KOKKOS package requires a "-k on" "command-line
-switch"_Section_start.html#start_6 respectively, which invokes a
-"package kokkos" command with default settings.
+switch"_Run_options.html respectively, which invokes a "package
+kokkos" command with default settings.
 
 For the GPU, USER-INTEL, and USER-OMP packages, if a "-sf gpu" or "-sf
-intel" or "-sf omp" "command-line switch"_Section_start.html#start_6
-is used to auto-append accelerator suffixes to various styles in the
-input script, then those switches also invoke a "package gpu",
-"package intel", or "package omp" command with default settings.
+intel" or "-sf omp" "command-line switch"_Run_options.html is used to
+auto-append accelerator suffixes to various styles in the input
+script, then those switches also invoke a "package gpu", "package
+intel", or "package omp" command with default settings.
 
 NOTE: A package command for a particular style can be invoked multiple
-times when a simulation is setup, e.g. by the "-c on", "-k on", "-sf",
-and "-pk" "command-line switches"_Section_start.html#start_6, and by
-using this command in an input script.  Each time it is used all of
-the style options are set, either to default values or to specified
-settings.  I.e. settings from previous invocations do not persist
-across multiple invocations.
+times when a simulation is setup, e.g. by the "-c on, -k on, -sf, and
+-pk command-line switches"_Run_options.html, and by using this command
+in an input script.  Each time it is used all of the style options are
+set, either to default values or to specified settings.  I.e. settings
+from previous invocations do not persist across multiple invocations.
 
 See the "Speed packages"_Speed_packages.html doc page for more details
 about using the various accelerator packages for speeding up LAMMPS
@@ -338,10 +337,10 @@ value via their package commands, but there is only a single global
 {Nthreads} value used by OpenMP.  Thus if both package commands are
 invoked, you should insure the two values are consistent.  If they are
 not, the last one invoked will take precedence, for both packages.
-Also note that if the "-sf hybrid intel omp" "command-line
-switch"_"_Section_start.html#start_6 is used, it invokes a "package
-intel" command, followed by a "package omp" command, both with a
-setting of {Nthreads} = 0.
+Also note that if the "-sf hybrid intel omp command-line
+switch"_Run_options.html is used, it invokes a "package intel"
+command, followed by a "package omp" command, both with a setting of
+{Nthreads} = 0.
 
 The {mode} keyword determines the precision mode to use for
 computing pair style forces, either on the CPU or on the coprocessor,
@@ -568,58 +567,56 @@ This command cannot be used after the simulation box is defined by a
 "read_data"_read_data.html or "create_box"_create_box.html command.
 
 The gpu style of this command can only be invoked if LAMMPS was built
-with the GPU package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+with the GPU package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 The intel style of this command can only be invoked if LAMMPS was
-built with the USER-INTEL package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+built with the USER-INTEL package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 The kk style of this command can only be invoked if LAMMPS was built
-with the KOKKOS package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+with the KOKKOS package.  See the "Build package"_Build_package.html
+doc page for more info.
 
 The omp style of this command can only be invoked if LAMMPS was built
-with the USER-OMP package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+with the USER-OMP package.  See the "Build package"_Build_package.html
+doc page for more info.
 
 [Related commands:]
 
-"suffix"_suffix.html, "-pk" "command-line
-setting"_Section_start.html#start_6
+"suffix"_suffix.html, "-pk command-line switch"_Run_options.html
 
 [Default:]
 
 For the GPU package, the default is Ngpu = 1 and the option defaults
 are neigh = yes, newton = off, binsize = 0.0, split = 1.0, gpuID = 0
 to Ngpu-1, tpa = 1, and device = not used.  These settings are made
-automatically if the "-sf gpu" "command-line
-switch"_Section_start.html#start_6 is used.  If it is not used, you
-must invoke the package gpu command in your input script or via the
-"-pk gpu" "command-line switch"_Section_start.html#start_6.
+automatically if the "-sf gpu" "command-line switch"_Run_options.html
+is used.  If it is not used, you must invoke the package gpu command
+in your input script or via the "-pk gpu" "command-line
+switch"_Run_options.html.
 
 For the USER-INTEL package, the default is Nphi = 1 and the option
 defaults are omp = 0, mode = mixed, lrt = no, balance = -1, tpc = 4,
 tptask = 240.  The default ghost option is determined by the pair
 style being used.  This value is output to the screen in the offload
 report at the end of each run.  Note that all of these settings,
-except "omp" and "mode", are ignored if LAMMPS was not built with
-Xeon Phi coprocessor support.  These settings are made automatically
-if the "-sf intel" "command-line switch"_Section_start.html#start_6
-is used.  If it is not used, you must invoke the package intel
-command in your input script or or via the "-pk intel" "command-line
-switch"_Section_start.html#start_6.
-
-For the KOKKOS package, the option defaults neigh = full,
-neigh/qeq = full, newton = off, binsize = 0.0, and comm = device.
-These settings are made automatically by the required "-k on" "command-line
-switch"_Section_start.html#start_6.  You can change them bu using the
-package kokkos command in your input script or via the "-pk kokkos"
-"command-line switch"_Section_start.html#start_6.
+except "omp" and "mode", are ignored if LAMMPS was not built with Xeon
+Phi coprocessor support.  These settings are made automatically if the
+"-sf intel" "command-line switch"_Run_options.html is used.  If it is
+not used, you must invoke the package intel command in your input
+script or or via the "-pk intel" "command-line
+switch"_Run_options.html.
+
+For the KOKKOS package, the option defaults neigh = full, neigh/qeq =
+full, newton = off, binsize = 0.0, and comm = device.  These settings
+are made automatically by the required "-k on" "command-line
+switch"_Run_options.html.  You can change them bu using the package
+kokkos command in your input script or via the "-pk kokkos"
+"command-line switch"_Run_options.html.
 
 For the OMP package, the default is Nthreads = 0 and the option
 defaults are neigh = yes.  These settings are made automatically if
-the "-sf omp" "command-line switch"_Section_start.html#start_6 is
-used.  If it is not used, you must invoke the package omp command in
-your input script or via the "-pk omp" "command-line
-switch"_Section_start.html#start_6.
+the "-sf omp" "command-line switch"_Run_options.html is used.  If it
+is not used, you must invoke the package omp command in your input
+script or via the "-pk omp" "command-line switch"_Run_options.html.
diff --git a/doc/src/pair_adp.txt b/doc/src/pair_adp.txt
index 382a97ecea..fc888ffbff 100644
--- a/doc/src/pair_adp.txt
+++ b/doc/src/pair_adp.txt
@@ -131,13 +131,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_agni.txt b/doc/src/pair_agni.txt
index 34f9900139..74aef41255 100644
--- a/doc/src/pair_agni.txt
+++ b/doc/src/pair_agni.txt
@@ -64,14 +64,14 @@ packages"_Speed_packages.html doc page.  The accelerated style takes
 the same arguments and should produce the same results, except for
 round-off and precision issues.
 
-The accelerated style is part of the USER-OMP.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+The accelerated style is part of the USER-OMP.  They are only enabled
+if LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated style explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -96,13 +96,14 @@ This pair style can only be used via the {pair} keyword of the
 
 [Restrictions:]
 
-Currently, only elemental systems are implemented. Also, the method only
-provides access to the forces and not energies or stresses. However, one
-can access the energy via thermodynamic integration of the forces as
-discussed in "(Botu3)"_#Botu2016construct.  This pair style is part
-of the USER-MISC 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.
+Currently, only elemental systems are implemented. Also, the method
+only provides access to the forces and not energies or
+stresses. However, one can access the energy via thermodynamic
+integration of the forces as discussed in
+"(Botu3)"_#Botu2016construct.  This pair style is part of the
+USER-MISC package. It is only enabled if LAMMPS was built with that
+package. See the "Build package"_Build_package.html doc page for more
+info.
 
 The AGNI force field files provided with LAMMPS (see the
 potentials directory) are parameterized for metal "units"_units.html.
diff --git a/doc/src/pair_airebo.txt b/doc/src/pair_airebo.txt
index 94a692226d..c090a39af7 100644
--- a/doc/src/pair_airebo.txt
+++ b/doc/src/pair_airebo.txt
@@ -182,13 +182,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -212,8 +212,8 @@ These pair styles can only be used via the {pair} keyword of the
 [Restrictions:]
 
 These pair styles are part of the MANYBODY 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.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 These pair potentials require the "newton"_newton.html setting to be
 "on" for pair interactions.
diff --git a/doc/src/pair_beck.txt b/doc/src/pair_beck.txt
index ca4186e27b..af60041ff9 100644
--- a/doc/src/pair_beck.txt
+++ b/doc/src/pair_beck.txt
@@ -57,13 +57,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_body_nparticle.txt b/doc/src/pair_body_nparticle.txt
index 9fb88102eb..158eb68ca8 100644
--- a/doc/src/pair_body_nparticle.txt
+++ b/doc/src/pair_body_nparticle.txt
@@ -103,8 +103,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This style 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_2_3 section for more info.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Defining particles to be bodies so they participate in body/body or
 body/particle interactions requires the use of the "atom_style
diff --git a/doc/src/pair_body_rounded_polygon.txt b/doc/src/pair_body_rounded_polygon.txt
index e724874032..fc07d8fadd 100644
--- a/doc/src/pair_body_rounded_polygon.txt
+++ b/doc/src/pair_body_rounded_polygon.txt
@@ -116,8 +116,8 @@ This pair style can only be used via the {pair} keyword of the
 [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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This pair style requires the "newton"_newton.html setting to be "on"
 for pair interactions.
diff --git a/doc/src/pair_body_rounded_polyhedron.txt b/doc/src/pair_body_rounded_polyhedron.txt
index 0f8548d98e..e650e5138a 100644
--- a/doc/src/pair_body_rounded_polyhedron.txt
+++ b/doc/src/pair_body_rounded_polyhedron.txt
@@ -111,8 +111,8 @@ This pair style can only be used via the {pair} keyword of the
 [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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This pair style requires the "newton"_newton.html setting to be "on"
 for pair interactions.
diff --git a/doc/src/pair_bop.txt b/doc/src/pair_bop.txt
index 654a7eb0b3..f9b4262f0c 100644
--- a/doc/src/pair_bop.txt
+++ b/doc/src/pair_bop.txt
@@ -382,9 +382,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 These pair styles are part of the MANYBODY 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.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 These pair potentials require the "newtion"_newton.html setting to be
 "on" for pair interactions.
diff --git a/doc/src/pair_born.txt b/doc/src/pair_born.txt
index c408de6db6..195d3e6669 100644
--- a/doc/src/pair_born.txt
+++ b/doc/src/pair_born.txt
@@ -151,13 +151,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -193,8 +193,8 @@ respa"_run_style.html command.  They do not support the {inner},
 [Restrictions:]
 
 The {born/coul/long} style is part of the KSPACE 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.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_brownian.txt b/doc/src/pair_brownian.txt
index eaff85cbbc..52720daa23 100644
--- a/doc/src/pair_brownian.txt
+++ b/doc/src/pair_brownian.txt
@@ -80,13 +80,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See "this section"_Speed.html of the manual for more
 instructions on how to use the accelerated styles effectively.
@@ -122,8 +122,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 These styles are part of the COLLOID 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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Only spherical monodisperse particles are allowed for pair_style
 brownian.
diff --git a/doc/src/pair_buck.txt b/doc/src/pair_buck.txt
index cc782c11cf..5b1688e868 100644
--- a/doc/src/pair_buck.txt
+++ b/doc/src/pair_buck.txt
@@ -145,13 +145,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -186,8 +186,8 @@ respa"_run_style.html command.  They do not support the {inner},
 
 The {buck/coul/long} style is part of the KSPACE package.  The
 {buck/coul/long/cs} style is part of the CORESHELL 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.
+only enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_buck6d_coul_gauss.txt b/doc/src/pair_buck6d_coul_gauss.txt
index 485c35c6b2..4c43978fe5 100644
--- a/doc/src/pair_buck6d_coul_gauss.txt
+++ b/doc/src/pair_buck6d_coul_gauss.txt
@@ -122,9 +122,9 @@ to be specified in an input script that reads a restart file.
 
 [Restrictions:]
 
-These styles are part of the USER-MOFFF 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.
+These styles are part of the USER-MOFFF package.  They are only
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_buck_long.txt b/doc/src/pair_buck_long.txt
index 551204f1a7..7f3a959ad6 100644
--- a/doc/src/pair_buck_long.txt
+++ b/doc/src/pair_buck_long.txt
@@ -108,13 +108,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -153,9 +153,9 @@ details.
 [Restrictions:]
 
 This style is part of the KSPACE 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.  Note that
-the KSPACE package is installed by default.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.  Note that the
+KSPACE package is installed by default.
 
 [Related commands:]
 
diff --git a/doc/src/pair_charmm.txt b/doc/src/pair_charmm.txt
index 39c6f29b04..dfc87e1bce 100644
--- a/doc/src/pair_charmm.txt
+++ b/doc/src/pair_charmm.txt
@@ -190,13 +190,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -245,9 +245,9 @@ details.
 All the styles with {coul/charmm} or {coul/charmmfsh} styles are part
 of the MOLECULE package.  All the styles with {coul/long} style are
 part of the KSPACE package.  They are only enabled if LAMMPS was built
-with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.  Note that
-the MOLECULE and KSPACE packages are installed by default.
+with those packages.  See the "Build package"_Build_package.html doc
+page for more info.  Note that the MOLECULE and KSPACE packages are
+installed by default.
 
 [Related commands:]
 
diff --git a/doc/src/pair_class2.txt b/doc/src/pair_class2.txt
index 104c51474c..5fc42e78f9 100644
--- a/doc/src/pair_class2.txt
+++ b/doc/src/pair_class2.txt
@@ -108,13 +108,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -154,8 +154,8 @@ support the {inner}, {middle}, {outer} keywords.
 [Restrictions:]
 
 These styles are part of the CLASS2 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_colloid.txt b/doc/src/pair_colloid.txt
index 08540cfee0..e8a44e1cba 100644
--- a/doc/src/pair_colloid.txt
+++ b/doc/src/pair_colloid.txt
@@ -133,13 +133,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -177,8 +177,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This style is part of the COLLOID 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Normally, this pair style should be used with finite-size particles
 which have a diameter, e.g. see the "atom_style
diff --git a/doc/src/pair_comb.txt b/doc/src/pair_comb.txt
index fc4cddbbae..45ce3a3b76 100644
--- a/doc/src/pair_comb.txt
+++ b/doc/src/pair_comb.txt
@@ -118,13 +118,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -154,9 +154,9 @@ These pair styles can only be used via the {pair} keyword of the
 
 [Restrictions:]
 
-These pair styles are part of the MANYBODY 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.
+These pair styles are part of the MANYBODY package.  It is only
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 These pair styles requires the "newton"_newton.html setting to be "on"
 for pair interactions.
diff --git a/doc/src/pair_coul.txt b/doc/src/pair_coul.txt
index 2fd9445785..bc0d76a071 100644
--- a/doc/src/pair_coul.txt
+++ b/doc/src/pair_coul.txt
@@ -274,13 +274,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -319,7 +319,7 @@ This pair style can only be used via the {pair} keyword of the
 The {coul/long}, {coul/msm} and {tip4p/long} styles are part of the
 KSPACE package.  The {coul/long/cs} style is part of the CORESHELL
 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.
+See the "Build package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_coul_diel.txt b/doc/src/pair_coul_diel.txt
index 14932c4835..7708287db9 100644
--- a/doc/src/pair_coul_diel.txt
+++ b/doc/src/pair_coul_diel.txt
@@ -67,7 +67,8 @@ The global cutoff (r_c) specified in the pair_style command is used.
 
 [Mixing, shift, table, tail correction, restart, rRESPA info]:
 
-This pair style does not support parameter mixing. Coefficients must be given explicitly for each type of particle pairs.
+This pair style does not support parameter mixing. Coefficients must
+be given explicitly for each type of particle pairs.
 
 This pair style supports the "pair_modify"_pair_modify.html shift
 option for the energy of the Gauss-potential portion of the pair
@@ -86,9 +87,9 @@ This pair style can only be used via the {pair} keyword of the
 
 [Restrictions:]
 
-This style is part of the "user-misc" package.  It is only enabled
-if LAMMPS was built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_2_3 section for more info.
+This style is part of the "USER-MISC" package.  It is only enabled if
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_coul_shield.txt b/doc/src/pair_coul_shield.txt
index 029e6e5b3b..62ac157e76 100644
--- a/doc/src/pair_coul_shield.txt
+++ b/doc/src/pair_coul_shield.txt
@@ -69,9 +69,9 @@ This pair style can only be used via the {pair} keyword of the
 
 [Restrictions:]
 
-This style is part of the USER-MISC package.  It is only enabled
-if LAMMPS was built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_2_3 section for more info.
+This style is part of the USER-MISC package.  It is only enabled if
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_cs.txt b/doc/src/pair_cs.txt
index 6540c4b8f0..8bd4abed68 100644
--- a/doc/src/pair_cs.txt
+++ b/doc/src/pair_cs.txt
@@ -100,8 +100,8 @@ core/shell pair.
 [Restrictions:]
 
 These pair styles are part of the CORESHELL 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.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_dipole.txt b/doc/src/pair_dipole.txt
index 1d8abc4521..dcb2448949 100644
--- a/doc/src/pair_dipole.txt
+++ b/doc/src/pair_dipole.txt
@@ -192,13 +192,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -240,12 +240,12 @@ This pair style can only be used via the {pair} keyword of the
 
 The {lj/cut/dipole/cut}, {lj/cut/dipole/long}, and
 {lj/long/dipole/long} styles are part of the DIPOLE 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.
+only enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 The {lj/sf/dipole/sf} style is part of the USER-MISC 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.
+only enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Using dipole pair styles with {electron} "units"_units.html is not
 currently supported.
diff --git a/doc/src/pair_dpd.txt b/doc/src/pair_dpd.txt
index 1b636795d9..55ae298682 100644
--- a/doc/src/pair_dpd.txt
+++ b/doc/src/pair_dpd.txt
@@ -116,13 +116,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_dpd_fdt.txt b/doc/src/pair_dpd_fdt.txt
index 0d180ba068..4f2459588a 100644
--- a/doc/src/pair_dpd_fdt.txt
+++ b/doc/src/pair_dpd_fdt.txt
@@ -135,13 +135,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -151,8 +151,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 These commands are part of the USER-DPD 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.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Pair styles {dpd/fdt} and {dpd/fdt/energy} require use of the
 "comm_modify vel yes"_comm_modify.html option so that velocites are
diff --git a/doc/src/pair_dsmc.txt b/doc/src/pair_dsmc.txt
index 2478a96d5f..adaeeb8390 100644
--- a/doc/src/pair_dsmc.txt
+++ b/doc/src/pair_dsmc.txt
@@ -130,8 +130,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This style is part of the MC 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.
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_eam.txt b/doc/src/pair_eam.txt
index 361dacb703..6c3793cb61 100644
--- a/doc/src/pair_eam.txt
+++ b/doc/src/pair_eam.txt
@@ -377,13 +377,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -414,8 +414,8 @@ The eam pair styles can only be used via the {pair} keyword of the
 [Restrictions:]
 
 All of these styles are part of the MANYBODY 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.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_edip.txt b/doc/src/pair_edip.txt
index cce564856e..053d43b2ba 100644
--- a/doc/src/pair_edip.txt
+++ b/doc/src/pair_edip.txt
@@ -115,13 +115,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -147,8 +147,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair style can only be used if LAMMPS was built with the
-USER-MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER-MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 This pair style requires the "newton"_newton.html setting to be "on"
 for pair interactions.
diff --git a/doc/src/pair_eff.txt b/doc/src/pair_eff.txt
index a55860297e..a665654af0 100644
--- a/doc/src/pair_eff.txt
+++ b/doc/src/pair_eff.txt
@@ -280,8 +280,8 @@ These pair styles can only be used via the {pair} keyword of the
 
 These pair styles will only be enabled if LAMMPS is built with the
 USER-EFF package.  It will only be enabled if LAMMPS was built with
-that package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info.
+that package.  See the "Build package"_Build_package.html doc page for
+more info.
 
 These pair styles require that particles store electron attributes
 such as radius, radial velocity, and radial force, as defined by the
diff --git a/doc/src/pair_eim.txt b/doc/src/pair_eim.txt
index 6490a859c1..5f9dcd4c5c 100644
--- a/doc/src/pair_eim.txt
+++ b/doc/src/pair_eim.txt
@@ -142,13 +142,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_exp6_rx.txt b/doc/src/pair_exp6_rx.txt
index 08ab1cf3c9..790674644d 100644
--- a/doc/src/pair_exp6_rx.txt
+++ b/doc/src/pair_exp6_rx.txt
@@ -159,13 +159,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -175,8 +175,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This command is part of the USER-DPD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_gauss.txt b/doc/src/pair_gauss.txt
index 9662a4f29c..ef924b1ef0 100644
--- a/doc/src/pair_gauss.txt
+++ b/doc/src/pair_gauss.txt
@@ -90,13 +90,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch7_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -167,8 +167,8 @@ thermo_style custom step temp epair v_occ :pre
 [Restrictions:]
 
 The {gauss/cut} style is part of the "user-misc" package. It is only
-enabled if LAMMPS is build with that package. See the "Making of
-LAMMPS"_Section_start.html#start_3 section for more info.
+enabled if LAMMPS is build with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_gayberne.txt b/doc/src/pair_gayberne.txt
index af41f6879e..426352dc4c 100644
--- a/doc/src/pair_gayberne.txt
+++ b/doc/src/pair_gayberne.txt
@@ -139,13 +139,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -184,8 +184,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 The {gayberne} style is part of the ASPHERE 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.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 These pair style require that atoms store torque and a quaternion to
 represent their orientation, as defined by the
diff --git a/doc/src/pair_gran.txt b/doc/src/pair_gran.txt
index 55b00a172f..e06d410084 100644
--- a/doc/src/pair_gran.txt
+++ b/doc/src/pair_gran.txt
@@ -185,13 +185,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -232,8 +232,8 @@ pair/local"_compute_pair_local.html command, as {p1}, {p2}, ...,
 [Restrictions:]
 
 All the granular pair styles are part of the GRANULAR 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.
+only enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 These pair styles require that atoms store torque and angular velocity
 (omega) as defined by the "atom_style"_atom_style.html.  They also
diff --git a/doc/src/pair_gromacs.txt b/doc/src/pair_gromacs.txt
index 9f34ac8c43..6a36a036c9 100644
--- a/doc/src/pair_gromacs.txt
+++ b/doc/src/pair_gromacs.txt
@@ -97,13 +97,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_gw.txt b/doc/src/pair_gw.txt
index 809ff008bc..ff85955dc0 100644
--- a/doc/src/pair_gw.txt
+++ b/doc/src/pair_gw.txt
@@ -96,8 +96,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair style is part of the MANYBODY 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This pair style requires the "newton"_newton.html setting to be "on"
 for pair interactions.
diff --git a/doc/src/pair_hbond_dreiding.txt b/doc/src/pair_hbond_dreiding.txt
index 60b0b02174..d4bdcd9258 100644
--- a/doc/src/pair_hbond_dreiding.txt
+++ b/doc/src/pair_hbond_dreiding.txt
@@ -172,13 +172,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_hybrid.txt b/doc/src/pair_hybrid.txt
index 9b36109c27..6e68e820a8 100644
--- a/doc/src/pair_hybrid.txt
+++ b/doc/src/pair_hybrid.txt
@@ -324,15 +324,15 @@ the individual sub-styles, the suffix versions of the {hybrid} and
 to all sub-styles, if those versions exist. Otherwise the
 non-accelerated version will be used.
 
-The individual accelerated sub-styles are part of the GPU,
-USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the
-"Making LAMMPS"_Section_start.html#start_3 section for more info.
+The individual accelerated sub-styles are part of the GPU, USER-OMP
+and OPT packages, respectively.  They are only enabled if LAMMPS was
+built with those packages.  See the "Build package"_Build_package.html
+doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_ilp_graphene_hbn.txt b/doc/src/pair_ilp_graphene_hbn.txt
index 9c9304c4a7..02d0db7af2 100644
--- a/doc/src/pair_ilp_graphene_hbn.txt
+++ b/doc/src/pair_ilp_graphene_hbn.txt
@@ -87,8 +87,8 @@ that reads a restart file.
 [Restrictions:]
 
 This fix is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This pair potential requires the newton setting to be {on} for pair
 interactions.
diff --git a/doc/src/pair_kim.txt b/doc/src/pair_kim.txt
index 889c1e892f..e1bde4f10e 100644
--- a/doc/src/pair_kim.txt
+++ b/doc/src/pair_kim.txt
@@ -126,8 +126,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair style is part of the KIM 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This current version of pair_style kim is compatible with the
 kim-api package version 1.6.0 and higher.
diff --git a/doc/src/pair_kolmogorov_crespi_full.txt b/doc/src/pair_kolmogorov_crespi_full.txt
index 8fc6bbff49..358d2168df 100644
--- a/doc/src/pair_kolmogorov_crespi_full.txt
+++ b/doc/src/pair_kolmogorov_crespi_full.txt
@@ -78,8 +78,8 @@ that reads a restart file.
 [Restrictions:]
 
 This fix is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This pair potential requires the newton setting to be {on} for pair
 interactions.
diff --git a/doc/src/pair_kolmogorov_crespi_z.txt b/doc/src/pair_kolmogorov_crespi_z.txt
index 7dad2e3701..f557e6c731 100644
--- a/doc/src/pair_kolmogorov_crespi_z.txt
+++ b/doc/src/pair_kolmogorov_crespi_z.txt
@@ -51,8 +51,8 @@ Other interactions can be set to zero using pair_style {none}.
 [Restrictions:]
 
 This fix is part of the USER-MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_lcbop.txt b/doc/src/pair_lcbop.txt
index ddf8551d56..21c809bf6a 100644
--- a/doc/src/pair_lcbop.txt
+++ b/doc/src/pair_lcbop.txt
@@ -72,8 +72,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair styles is part of the MANYBODY 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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This pair potential requires the "newton"_newton.html setting to be
 "on" for pair interactions.
diff --git a/doc/src/pair_line_lj.txt b/doc/src/pair_line_lj.txt
index c2c6beb97f..ca5ececa56 100644
--- a/doc/src/pair_line_lj.txt
+++ b/doc/src/pair_line_lj.txt
@@ -130,8 +130,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This style is part of the ASPHERE 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Defining particles to be line segments so they participate in
 line/line or line/particle interactions requires the use the
diff --git a/doc/src/pair_list.txt b/doc/src/pair_list.txt
index 023cc0be4f..9500a4c508 100644
--- a/doc/src/pair_list.txt
+++ b/doc/src/pair_list.txt
@@ -130,8 +130,8 @@ atom J (assuming the images are within the cutoff distance), but only
 with the nearest image.
 
 This style is part of the USER-MISC package. It is only enabled if
-LAMMPS is build with that package. See the "Making of
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS is build with that package. See the "Build
+package"_Build_package.html doc page on for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_lj.txt b/doc/src/pair_lj.txt
index a55cb348d7..b5a5726182 100644
--- a/doc/src/pair_lj.txt
+++ b/doc/src/pair_lj.txt
@@ -275,13 +275,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -326,9 +326,9 @@ See the "run_style"_run_style.html command for details.
 The {lj/cut/coul/long} and {lj/cut/tip4p/long} styles are part of the
 KSPACE package. The {lj/cut/tip4p/cut} style is part of the MOLECULE
 package. These styles are only enabled if LAMMPS was built with those
-packages.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info.  Note that the KSPACE and MOLECULE packages are
-installed by default.
+packages.  See the "Build package"_Build_package.html doc page for
+more info.  Note that the KSPACE and MOLECULE packages are installed
+by default.
 
 [Related commands:]
 
diff --git a/doc/src/pair_lj96.txt b/doc/src/pair_lj96.txt
index 7c68e26ace..19369adc66 100644
--- a/doc/src/pair_lj96.txt
+++ b/doc/src/pair_lj96.txt
@@ -55,13 +55,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_lj_cubic.txt b/doc/src/pair_lj_cubic.txt
index d04a3d8b9d..0a56672d28 100644
--- a/doc/src/pair_lj_cubic.txt
+++ b/doc/src/pair_lj_cubic.txt
@@ -69,13 +69,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_lj_expand.txt b/doc/src/pair_lj_expand.txt
index 3e9996da4d..d26c88e4f7 100644
--- a/doc/src/pair_lj_expand.txt
+++ b/doc/src/pair_lj_expand.txt
@@ -59,13 +59,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_lj_long.txt b/doc/src/pair_lj_long.txt
index 1ba3610f86..2bc2b656ac 100644
--- a/doc/src/pair_lj_long.txt
+++ b/doc/src/pair_lj_long.txt
@@ -162,13 +162,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -209,9 +209,9 @@ different levels of the rRESPA hierarchy.  See the
 [Restrictions:]
 
 These styles are part of the KSPACE 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 that
-the KSPACE package is installed by default.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.  Note that the
+KSPACE package is installed by default.
 
 [Related commands:]
 
diff --git a/doc/src/pair_lj_smooth.txt b/doc/src/pair_lj_smooth.txt
index 575c023579..0c66dd0f66 100644
--- a/doc/src/pair_lj_smooth.txt
+++ b/doc/src/pair_lj_smooth.txt
@@ -68,13 +68,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_lj_smooth_linear.txt b/doc/src/pair_lj_smooth_linear.txt
index 0fab768b8f..9c509515c0 100644
--- a/doc/src/pair_lj_smooth_linear.txt
+++ b/doc/src/pair_lj_smooth_linear.txt
@@ -55,13 +55,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_lj_soft.txt b/doc/src/pair_lj_soft.txt
index d10fcd0472..9bcc83fa66 100644
--- a/doc/src/pair_lj_soft.txt
+++ b/doc/src/pair_lj_soft.txt
@@ -213,13 +213,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -261,7 +261,7 @@ similar substyle can be used via the
 All of the plain {soft} pair styles are part of the USER-FEP package.
 The {long} styles also requires the KSPACE package to be installed.
 They are only enabled if LAMMPS was built with those packages.  See
-the "Making LAMMPS"_Section_start.html#start_3 section for more info.
+the "Build package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_lubricate.txt b/doc/src/pair_lubricate.txt
index e9a0a0d291..83a67d0300 100644
--- a/doc/src/pair_lubricate.txt
+++ b/doc/src/pair_lubricate.txt
@@ -149,13 +149,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See "this section"_Speed.html of the manual for more
 instructions on how to use the accelerated styles effectively.
@@ -191,8 +191,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 These styles are part of the COLLOID package.  They are only enabled
-if LAMMPS was built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_2_3 section for more info.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Only spherical monodisperse particles are allowed for pair_style
 lubricate.
diff --git a/doc/src/pair_lubricateU.txt b/doc/src/pair_lubricateU.txt
index 6b74c208bf..bfc7c36013 100644
--- a/doc/src/pair_lubricateU.txt
+++ b/doc/src/pair_lubricateU.txt
@@ -179,8 +179,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 These styles are part of the COLLOID package.  They are only enabled
-if LAMMPS was built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_2_3 section for more info.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Currently, these pair styles assume that all other types of
 forces/torques on the particles have been already been computed when
diff --git a/doc/src/pair_mdf.txt b/doc/src/pair_mdf.txt
index e5a8cac845..8a1551dded 100644
--- a/doc/src/pair_mdf.txt
+++ b/doc/src/pair_mdf.txt
@@ -148,8 +148,8 @@ See the "run_style"_run_style.html command for details.
 [Restrictions:]
 
 These pair styles can only be used if LAMMPS was built with the
-USER-MISC package.  See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+USER-MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_meam.txt b/doc/src/pair_meam.txt
index 45f88f0bbe..0b1c1ac767 100644
--- a/doc/src/pair_meam.txt
+++ b/doc/src/pair_meam.txt
@@ -352,14 +352,14 @@ This pair style can only be used via the {pair} keyword of the
 
 [Restrictions:]
 
-The {meam} style is part of the MEAM package.  It is only enabled if LAMMPS
-was built with that package, which also requires the MEAM library be
-built and linked with LAMMPS.
-The {meam/c} style is provided in the USER-MEAMC package. It is only enabled
-if LAMMPS was built with that package. In contrast to the {meam} style,
-{meam/c} does not require a separate library to be compiled and it can be
+The {meam} style is part of the MEAM package.  It is only enabled if
+LAMMPS was built with that package, which also requires the MEAM
+library be built and linked with LAMMPS.  The {meam/c} style is
+provided in the USER-MEAMC package. It is only enabled if LAMMPS was
+built with that package. In contrast to the {meam} style, {meam/c}
+does not require a separate library to be compiled and it can be
 instantiated multiple times in a "hybrid"_pair_hybrid.html pair style.
-See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
+See the "Build package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_meam_spline.txt b/doc/src/pair_meam_spline.txt
index 9615512041..df5db81264 100644
--- a/doc/src/pair_meam_spline.txt
+++ b/doc/src/pair_meam_spline.txt
@@ -112,13 +112,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -147,8 +147,8 @@ This pair style requires the "newton"_newton.html setting to be "on"
 for pair interactions.
 
 This pair style is only enabled if LAMMPS was built with the USER-MISC
-package.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info.
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_meam_sw_spline.txt b/doc/src/pair_meam_sw_spline.txt
index ba0953a17c..2e8c26658a 100644
--- a/doc/src/pair_meam_sw_spline.txt
+++ b/doc/src/pair_meam_sw_spline.txt
@@ -111,8 +111,9 @@ support the {inner}, {middle}, {outer} keywords.
 This pair style requires the "newton"_newton.html setting to be "on"
 for pair interactions.
 
-This pair style is only enabled if LAMMPS was built with the USER-MISC package.
-See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
+This pair style is only enabled if LAMMPS was built with the USER-MISC
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_meso.txt b/doc/src/pair_meso.txt
index ad3880e642..005498d8bf 100644
--- a/doc/src/pair_meso.txt
+++ b/doc/src/pair_meso.txt
@@ -245,8 +245,8 @@ that reads a restart file.
 
 The pair styles {edpd}, {mdpd}, {mdpd/rhosum} and {tdpd} are part of
 the USER-MESO 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.
+that package.  See the "Build package"_Build_package.html doc page for
+more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_mgpt.txt b/doc/src/pair_mgpt.txt
index 09fe611686..bd55d529b8 100644
--- a/doc/src/pair_mgpt.txt
+++ b/doc/src/pair_mgpt.txt
@@ -159,8 +159,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair style is part of the USER-MGPT package and is only enabled
-if LAMMPS is built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+if LAMMPS is built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 The MGPT potentials require the "newtion"_newton.html setting to be
 "on" for pair style interactions.
diff --git a/doc/src/pair_momb.txt b/doc/src/pair_momb.txt
index 545b650f75..f1989f56f4 100644
--- a/doc/src/pair_momb.txt
+++ b/doc/src/pair_momb.txt
@@ -50,8 +50,8 @@ Rr (distance units, typically sum of atomic vdW radii) :ul
 [Restrictions:]
 
 This style is part of the USER-MISC package. It is only enabled if
-LAMMPS is built with that package. See the "Making of
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS is built with that package. See the "Build
+package"_Build_package.html doc page on for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_morse.txt b/doc/src/pair_morse.txt
index 85a42986ec..68894f6913 100644
--- a/doc/src/pair_morse.txt
+++ b/doc/src/pair_morse.txt
@@ -107,13 +107,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -148,12 +148,12 @@ These pair styles can only be used via the {pair} keyword of the
 [Restrictions:]
 
 The {morse/smooth/linear} pair style is only enabled if LAMMPS was
-built with the USER-MISC package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+built with the USER-MISC package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 The {morse/soft} pair style is only enabled if LAMMPS was built with
-the USER-FEP package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+the USER-FEP package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_multi_lucy.txt b/doc/src/pair_multi_lucy.txt
index 31d52a58c8..0b3a430417 100644
--- a/doc/src/pair_multi_lucy.txt
+++ b/doc/src/pair_multi_lucy.txt
@@ -177,8 +177,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This command is part of the USER-DPD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_multi_lucy_rx.txt b/doc/src/pair_multi_lucy_rx.txt
index e09dde3f80..819a15b624 100644
--- a/doc/src/pair_multi_lucy_rx.txt
+++ b/doc/src/pair_multi_lucy_rx.txt
@@ -210,13 +210,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -226,8 +226,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This command is part of the USER-DPD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_nb3b_harmonic.txt b/doc/src/pair_nb3b_harmonic.txt
index 720b9ea2a1..6a119d74e1 100644
--- a/doc/src/pair_nb3b_harmonic.txt
+++ b/doc/src/pair_nb3b_harmonic.txt
@@ -98,13 +98,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -114,8 +114,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This pair style can only be used if LAMMPS was built with the MANYBODY
-package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_nm.txt b/doc/src/pair_nm.txt
index 355bfd5573..a42dfa3c98 100644
--- a/doc/src/pair_nm.txt
+++ b/doc/src/pair_nm.txt
@@ -139,13 +139,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -153,8 +153,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 These pair styles are part of the MISC 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_oxdna.txt b/doc/src/pair_oxdna.txt
index 5ec9915297..b24e3c07df 100644
--- a/doc/src/pair_oxdna.txt
+++ b/doc/src/pair_oxdna.txt
@@ -82,8 +82,8 @@ The preprint version of the article can be found "here"_PDF/USER-CGDNA.pdf.
 [Restrictions:]
 
 These pair styles can only be used if LAMMPS was built with the
-USER-CGDNA package and the MOLECULE and ASPHERE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+USER-CGDNA package and the MOLECULE and ASPHERE package.  See the
+"Build package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_oxdna2.txt b/doc/src/pair_oxdna2.txt
index a1d2cfdb7c..c5662abdeb 100644
--- a/doc/src/pair_oxdna2.txt
+++ b/doc/src/pair_oxdna2.txt
@@ -88,8 +88,8 @@ The preprint version of the article can be found "here"_PDF/USER-CGDNA.pdf.
 [Restrictions:]
 
 These pair styles can only be used if LAMMPS was built with the
-USER-CGDNA package and the MOLECULE and ASPHERE package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+USER-CGDNA package and the MOLECULE and ASPHERE package.  See the
+"Build package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_peri.txt b/doc/src/pair_peri.txt
index 14abd4541e..b6baa4edc5 100644
--- a/doc/src/pair_peri.txt
+++ b/doc/src/pair_peri.txt
@@ -145,13 +145,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -182,8 +182,8 @@ These pair styles can only be used via the {pair} keyword of the
 [Restrictions:]
 
 All of these styles are part of the PERI 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.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_polymorphic.txt b/doc/src/pair_polymorphic.txt
index eb0c30f249..7460044043 100644
--- a/doc/src/pair_polymorphic.txt
+++ b/doc/src/pair_polymorphic.txt
@@ -191,8 +191,8 @@ input script. If using read_data, atomic masses must be defined in the
 atomic structure data file.
 
 This pair style is part of the MANYBODY 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.
+LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 This pair potential requires the "newtion"_newton.html setting to be
 "on" for pair interactions.
diff --git a/doc/src/pair_python.txt b/doc/src/pair_python.txt
index 1433557e03..23da86fc49 100644
--- a/doc/src/pair_python.txt
+++ b/doc/src/pair_python.txt
@@ -204,8 +204,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair style is part of the PYTHON 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_quip.txt b/doc/src/pair_quip.txt
index 3570a52801..1f794d0c84 100644
--- a/doc/src/pair_quip.txt
+++ b/doc/src/pair_quip.txt
@@ -74,8 +74,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair style is part of the USER-QUIP 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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 QUIP potentials are parametrized in electron-volts and Angstroms and
 therefore should be used with LAMMPS metal "units"_units.html.
diff --git a/doc/src/pair_reaxc.txt b/doc/src/pair_reaxc.txt
index ec57548640..e63f4a90ee 100644
--- a/doc/src/pair_reaxc.txt
+++ b/doc/src/pair_reaxc.txt
@@ -309,13 +309,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -325,8 +325,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This pair style is part of the USER-REAXC 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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 The ReaxFF potential files provided with LAMMPS in the potentials
 directory are parameterized for real "units"_units.html.  You can use
diff --git a/doc/src/pair_resquared.txt b/doc/src/pair_resquared.txt
index 6e72408ebc..5e760be495 100644
--- a/doc/src/pair_resquared.txt
+++ b/doc/src/pair_resquared.txt
@@ -151,13 +151,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -203,8 +203,8 @@ command"_run_style.html.
 [Restrictions:]
 
 This style is part of the ASPHERE 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This pair style requires that atoms be ellipsoids as defined by the
 "atom_style ellipsoid"_atom_style.html command.
diff --git a/doc/src/pair_sdk.txt b/doc/src/pair_sdk.txt
index ccf704b6f7..b977aefe88 100644
--- a/doc/src/pair_sdk.txt
+++ b/doc/src/pair_sdk.txt
@@ -91,13 +91,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP, and OPT packages respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -133,11 +133,11 @@ respa"_run_style.html command.
 
 [Restrictions:]
 
-All of the lj/sdk pair styles are part of the USER-CGSDK package.
-The {lj/sdk/coul/long} style also requires the KSPACE package to be
-built (which is enabled by default).  They are only enabled if LAMMPS
-was built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+All of the lj/sdk pair styles are part of the USER-CGSDK package.  The
+{lj/sdk/coul/long} style also requires the KSPACE package to be built
+(which is enabled by default).  They are only enabled if LAMMPS was
+built with that package.  See the "Build package"_Build_package.html
+doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_smd_hertz.txt b/doc/src/pair_smd_hertz.txt
index f2d633903a..2581c84dc9 100644
--- a/doc/src/pair_smd_hertz.txt
+++ b/doc/src/pair_smd_hertz.txt
@@ -19,32 +19,36 @@ pair_coeff 1 1 <contact_stiffness>
 
 [Description:]
 
-The {smd/hertz} style calculates contact forces between SPH particles belonging to different physical bodies.
+The {smd/hertz} style calculates contact forces between SPH particles
+belonging to different physical bodies.
 
-The contact forces are calculated using a Hertz potential, which evaluates the overlap between two particles
-(whose spatial extents are defined via its contact radius).
-The effect is that a particles cannot penetrate into each other.
-The parameter <contact_stiffness> has units of pressure and should equal roughly one half
-of the Young's modulus (or bulk modulus in the case of fluids) of the material model associated with the SPH particles.
+The contact forces are calculated using a Hertz potential, which
+evaluates the overlap between two particles (whose spatial extents are
+defined via its contact radius).  The effect is that a particles
+cannot penetrate into each other.  The parameter <contact_stiffness>
+has units of pressure and should equal roughly one half of the Young's
+modulus (or bulk modulus in the case of fluids) of the material model
+associated with the SPH particles.
 
-The parameter {scale_factor} can be used to scale the particles' contact radii. This can be useful to control how close
-particles can approach each other. Usually, {scale_factor} =1.0.
+The parameter {scale_factor} can be used to scale the particles'
+contact radii. This can be useful to control how close particles can
+approach each other. Usually, {scale_factor} =1.0.
 
 :line
 
 [Mixing, shift, table, tail correction, restart, rRESPA info]:
 
-No mixing is performed automatically.
-Currently, no part of USER-SMD supports restarting nor minimization.
-rRESPA does not apply to this pair style.
+No mixing is performed automatically.  Currently, no part of USER-SMD
+supports restarting nor minimization.  rRESPA does not apply to this
+pair style.
 
 :line
 
 [Restrictions:]
 
 This fix is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_smd_tlsph.txt b/doc/src/pair_smd_tlsph.txt
index 3aeaa31553..44b0c6cae8 100644
--- a/doc/src/pair_smd_tlsph.txt
+++ b/doc/src/pair_smd_tlsph.txt
@@ -16,10 +16,11 @@ pair_style smd/tlsph args :pre
 
 pair_style smd/tlsph
 
-
 [Description:]
 
-The {smd/tlsph} style computes particle interactions according to continuum mechanics constitutive laws and a Total-Lagrangian Smooth-Particle Hydrodynamics algorithm.
+The {smd/tlsph} style computes particle interactions according to
+continuum mechanics constitutive laws and a Total-Lagrangian
+Smooth-Particle Hydrodynamics algorithm.
 
 This pair style is invoked with the following command:
 
@@ -27,35 +28,40 @@ pair_style smd/tlsph
 pair_coeff i j *COMMON rho0 E nu Q1 Q2 hg Cp &
                *END :pre
 
-Here, {i} and {j} denote the {LAMMPS} particle types for which this pair style is
-defined. Note that {i} and {j} must be equal, i.e., no {tlsph} cross interactions
-between different particle types are allowed.
-In contrast to the usual {LAMMPS} {pair coeff} definitions, which are given solely a
-number of floats and integers, the {tlsph} {pair coeff} definition is organised using
-keywords. These keywords mark the beginning of different sets of parameters for particle properties,
-material constitutive models, and damage models. The {pair coeff} line must be terminated with
-the {*END} keyword. The use the line continuation operator {&} is recommended. A typical
-invocation of the {tlsph} for a solid body would consist of an equation of state for computing
-the pressure (the diagonal components of the stress tensor), and a material model to compute shear
-stresses (the off-diagonal components of the stress tensor). Damage and failure models can also be added.
-
-Please see the "SMD user guide"_PDF/SMD_LAMMPS_userguide.pdf for a complete listing of the possible keywords and material models.
+Here, {i} and {j} denote the {LAMMPS} particle types for which this
+pair style is defined. Note that {i} and {j} must be equal, i.e., no
+{tlsph} cross interactions between different particle types are
+allowed.  In contrast to the usual {LAMMPS} {pair coeff} definitions,
+which are given solely a number of floats and integers, the {tlsph}
+{pair coeff} definition is organised using keywords. These keywords
+mark the beginning of different sets of parameters for particle
+properties, material constitutive models, and damage models. The {pair
+coeff} line must be terminated with the {*END} keyword. The use the
+line continuation operator {&} is recommended. A typical invocation of
+the {tlsph} for a solid body would consist of an equation of state for
+computing the pressure (the diagonal components of the stress tensor),
+and a material model to compute shear stresses (the off-diagonal
+components of the stress tensor). Damage and failure models can also
+be added.
+
+Please see the "SMD user guide"_PDF/SMD_LAMMPS_userguide.pdf for a
+complete listing of the possible keywords and material models.
 
 :line
 
 [Mixing, shift, table, tail correction, restart, rRESPA info]:
 
-No mixing is performed automatically.
-Currently, no part of USER-SMD supports restarting nor minimization.
-rRESPA does not apply to this pair style.
+No mixing is performed automatically.  Currently, no part of USER-SMD
+supports restarting nor minimization.  rRESPA does not apply to this
+pair style.
 
 :line
 
 [Restrictions:]
 
 This fix is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_smd_triangulated_surface.txt b/doc/src/pair_smd_triangulated_surface.txt
index 65526cfba8..9eb5e311b8 100644
--- a/doc/src/pair_smd_triangulated_surface.txt
+++ b/doc/src/pair_smd_triangulated_surface.txt
@@ -19,17 +19,21 @@ pair_coeff 1 1 <contact_stiffness>
 
 [Description:]
 
-The {smd/tri_surface} style calculates contact forces between SPH particles and a rigid wall boundary defined via the
+The {smd/tri_surface} style calculates contact forces between SPH
+particles and a rigid wall boundary defined via the
 "smd/wall_surface"_fix_smd_wall_surface.html fix.
 
-The contact forces are calculated using a Hertz potential, which evaluates the overlap between a particle
-(whose spatial extents are defined via its contact radius) and the triangle.
-The effect is that a particle cannot penetrate into the triangular surface.
-The parameter <contact_stiffness> has units of pressure and should equal roughly one half
-of the Young's modulus (or bulk modulus in the case of fluids) of the material model associated with the SPH particle
+The contact forces are calculated using a Hertz potential, which
+evaluates the overlap between a particle (whose spatial extents are
+defined via its contact radius) and the triangle.  The effect is that
+a particle cannot penetrate into the triangular surface.  The
+parameter <contact_stiffness> has units of pressure and should equal
+roughly one half of the Young's modulus (or bulk modulus in the case
+of fluids) of the material model associated with the SPH particle
 
-The parameter {scale_factor} can be used to scale the particles' contact radii. This can be useful to control how close
-particles can approach the triangulated surface. Usually, {scale_factor} =1.0.
+The parameter {scale_factor} can be used to scale the particles'
+contact radii. This can be useful to control how close particles can
+approach the triangulated surface. Usually, {scale_factor} =1.0.
 
 :line
 
@@ -44,8 +48,8 @@ rRESPA does not apply to this pair style.
 [Restrictions:]
 
 This fix is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_smd_ulsph.txt b/doc/src/pair_smd_ulsph.txt
index a5bda54d5f..f28dd9043c 100644
--- a/doc/src/pair_smd_ulsph.txt
+++ b/doc/src/pair_smd_ulsph.txt
@@ -17,11 +17,13 @@ keyword = {*DENSITY_SUMMATION} or {*DENSITY_CONTINUITY} and {*VELOCITY_GRADIENT}
 
 [Examples:]
 
-pair_style smd/ulsph *DENSITY_CONTINUITY *VELOCITY_GRADIENT *NO_GRADIENT_CORRECTION
+pair_style smd/ulsph *DENSITY_CONTINUITY *VELOCITY_GRADIENT *NO_GRADIENT_CORRECTION :pre
 
 [Description:]
 
-The {smd/ulsph} style computes particle interactions according to continuum mechanics constitutive laws and an updated Lagrangian Smooth-Particle Hydrodynamics algorithm.
+The {smd/ulsph} style computes particle interactions according to
+continuum mechanics constitutive laws and an updated Lagrangian
+Smooth-Particle Hydrodynamics algorithm.
 
 This pair style is invoked similar to the following command:
 
@@ -29,37 +31,45 @@ pair_style smd/ulsph *DENSITY_CONTINUITY *VELOCITY_GRADIENT *NO_GRADIENT_CORRECT
 pair_coeff i j *COMMON rho0 c0 Q1 Cp hg &
                *END :pre
 
-Here, {i} and {j} denote the {LAMMPS} particle types for which this pair style is
-defined. Note that {i} and {j} can be different, i.e., {ulsph} cross interactions
-between different particle types are allowed. However, {i}--{i} respectively {j}--{j} pair_coeff lines have to precede a cross interaction.
-In contrast to the usual {LAMMPS} {pair coeff} definitions, which are given solely a
-number of floats and integers, the {ulsph} {pair coeff} definition is organised using
-keywords. These keywords mark the beginning of different sets of parameters for particle properties,
-material constitutive models, and damage models. The {pair coeff} line must be terminated with
-the {*END} keyword. The use the line continuation operator {&} is recommended. A typical
-invocation of the {ulsph} for a solid body would consist of an equation of state for computing
-the pressure (the diagonal components of the stress tensor), and a material model to compute shear
-stresses (the off-diagonal components of the stress tensor).
-
-Note that the use of *GRADIENT_CORRECTION can lead to severe numerical instabilities. For a general fluid simulation, *NO_GRADIENT_CORRECTION is recommended.
-
-Please see the "SMD user guide"_PDF/SMD_LAMMPS_userguide.pdf for a complete listing of the possible keywords and material models.
+Here, {i} and {j} denote the {LAMMPS} particle types for which this
+pair style is defined. Note that {i} and {j} can be different, i.e.,
+{ulsph} cross interactions between different particle types are
+allowed. However, {i}--{i} respectively {j}--{j} pair_coeff lines have
+to precede a cross interaction.  In contrast to the usual {LAMMPS}
+{pair coeff} definitions, which are given solely a number of floats
+and integers, the {ulsph} {pair coeff} definition is organised using
+keywords. These keywords mark the beginning of different sets of
+parameters for particle properties, material constitutive models, and
+damage models. The {pair coeff} line must be terminated with the
+{*END} keyword. The use the line continuation operator {&} is
+recommended. A typical invocation of the {ulsph} for a solid body
+would consist of an equation of state for computing the pressure (the
+diagonal components of the stress tensor), and a material model to
+compute shear stresses (the off-diagonal components of the stress
+tensor).
+
+Note that the use of *GRADIENT_CORRECTION can lead to severe numerical
+instabilities. For a general fluid simulation, *NO_GRADIENT_CORRECTION
+is recommended.
+
+Please see the "SMD user guide"_PDF/SMD_LAMMPS_userguide.pdf for a
+complete listing of the possible keywords and material models.
 
 :line
 
 [Mixing, shift, table, tail correction, restart, rRESPA info]:
 
-No mixing is performed automatically.
-Currently, no part of USER-SMD supports restarting nor minimization.
-rRESPA does not apply to this pair style.
+No mixing is performed automatically.  Currently, no part of USER-SMD
+supports restarting nor minimization.  rRESPA does not apply to this
+pair style.
 
 :line
 
 [Restrictions:]
 
 This fix is part of the USER-SMD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_smtbq.txt b/doc/src/pair_smtbq.txt
index c70202c2e1..e81411678a 100644
--- a/doc/src/pair_smtbq.txt
+++ b/doc/src/pair_smtbq.txt
@@ -219,8 +219,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restriction:]
 
 This pair style is part of the USER-SMTBQ package and is only enabled
-if LAMMPS is built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+if LAMMPS is built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This potential requires using atom type 1 for oxygen and atom type
 higher than 1 for metal atoms.
diff --git a/doc/src/pair_snap.txt b/doc/src/pair_snap.txt
index f9bd8910e4..6f8cc3d8a8 100644
--- a/doc/src/pair_snap.txt
+++ b/doc/src/pair_snap.txt
@@ -181,13 +181,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -196,9 +196,9 @@ instructions on how to use the accelerated styles effectively.
 
 [Restrictions:]
 
-This style is part of the SNAP 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.
+This style is part of the SNAP package.  It is only enabled if LAMMPS
+was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_soft.txt b/doc/src/pair_soft.txt
index 374711825b..ca0266f34a 100644
--- a/doc/src/pair_soft.txt
+++ b/doc/src/pair_soft.txt
@@ -88,13 +88,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_sph_heatconduction.txt b/doc/src/pair_sph_heatconduction.txt
index d19c28a3cb..78a9cf2b63 100644
--- a/doc/src/pair_sph_heatconduction.txt
+++ b/doc/src/pair_sph_heatconduction.txt
@@ -53,8 +53,8 @@ respa"_run_style.html command.  It does not support the {inner},
 [Restrictions:]
 
 This pair style is part of the USER-SPH 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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_sph_idealgas.txt b/doc/src/pair_sph_idealgas.txt
index a670949a89..59513e7a73 100644
--- a/doc/src/pair_sph_idealgas.txt
+++ b/doc/src/pair_sph_idealgas.txt
@@ -60,8 +60,8 @@ respa"_run_style.html command.  It does not support the {inner},
 [Restrictions:]
 
 This pair style is part of the USER-SPH 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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_sph_lj.txt b/doc/src/pair_sph_lj.txt
index 152e6cf8a2..43e77f1aae 100644
--- a/doc/src/pair_sph_lj.txt
+++ b/doc/src/pair_sph_lj.txt
@@ -60,8 +60,8 @@ As noted above, the Lennard-Jones parameters epsilon and sigma are set
 to unity.
 
 This pair style is part of the USER-SPH 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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_sph_rhosum.txt b/doc/src/pair_sph_rhosum.txt
index 3cd1c5abb2..9069176f29 100644
--- a/doc/src/pair_sph_rhosum.txt
+++ b/doc/src/pair_sph_rhosum.txt
@@ -54,8 +54,8 @@ respa"_run_style.html command.  It does not support the {inner},
 [Restrictions:]
 
 This pair style is part of the USER-SPH 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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_sph_taitwater.txt b/doc/src/pair_sph_taitwater.txt
index 7b9a8188f2..dcb9e39603 100644
--- a/doc/src/pair_sph_taitwater.txt
+++ b/doc/src/pair_sph_taitwater.txt
@@ -63,8 +63,8 @@ respa"_run_style.html command.  It does not support the {inner},
 [Restrictions:]
 
 This pair style is part of the USER-SPH 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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_sph_taitwater_morris.txt b/doc/src/pair_sph_taitwater_morris.txt
index 02f16d8982..b88707d1af 100644
--- a/doc/src/pair_sph_taitwater_morris.txt
+++ b/doc/src/pair_sph_taitwater_morris.txt
@@ -62,8 +62,8 @@ respa"_run_style.html command.  It does not support the {inner},
 [Restrictions:]
 
 This pair style is part of the USER-SPH 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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_spin_dmi.txt b/doc/src/pair_spin_dmi.txt
index 375e59fe89..bd605bd064 100644
--- a/doc/src/pair_spin_dmi.txt
+++ b/doc/src/pair_spin_dmi.txt
@@ -69,10 +69,10 @@ pair style cannot be used.
 
 [Restrictions:]
 
-All the {pair/spin} styles are part of the SPIN package. 
-These styles are only enabled if LAMMPS was built with this package, and
-if the atom_style "spin" was declared. 
-See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
+All the {pair/spin} styles are part of the SPIN package.  These styles
+are only enabled if LAMMPS was built with this package, and if the
+atom_style "spin" was declared.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_spin_exchange.txt b/doc/src/pair_spin_exchange.txt
index 24eb635b81..2f158704a9 100644
--- a/doc/src/pair_spin_exchange.txt
+++ b/doc/src/pair_spin_exchange.txt
@@ -79,10 +79,10 @@ None of those coefficients is optional. If not specified, the
 
 [Restrictions:]
 
-All the {pair/spin} styles are part of the SPIN package. 
-These styles are only enabled if LAMMPS was built with this package, and
-if the atom_style "spin" was declared. 
-See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
+All the {pair/spin} styles are part of the SPIN package.  These styles
+are only enabled if LAMMPS was built with this package, and if the
+atom_style "spin" was declared.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_spin_magelec.txt b/doc/src/pair_spin_magelec.txt
index b338fae5dc..f552c56a4b 100644
--- a/doc/src/pair_spin_magelec.txt
+++ b/doc/src/pair_spin_magelec.txt
@@ -51,10 +51,10 @@ More details about the derivation of these torques/forces are reported in
 
 [Restrictions:]
 
-All the {pair/spin} styles are part of the SPIN package.
-These styles are only enabled if LAMMPS was built with this package, and
-if the atom_style "spin" was declared.
-See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
+All the {pair/spin} styles are part of the SPIN package.  These styles
+are only enabled if LAMMPS was built with this package, and if the
+atom_style "spin" was declared.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_spin_neel.txt b/doc/src/pair_spin_neel.txt
index 0967632ed2..fe3bb1ad14 100644
--- a/doc/src/pair_spin_neel.txt
+++ b/doc/src/pair_spin_neel.txt
@@ -62,10 +62,10 @@ More details about the derivation of these torques/forces are reported in
 
 [Restrictions:]
 
-All the {pair/spin} styles are part of the SPIN package. 
-These styles are only enabled if LAMMPS was built with this package, and
-if the atom_style "spin" was declared. 
-See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
+All the {pair/spin} styles are part of the SPIN package.  These styles
+are only enabled if LAMMPS was built with this package, and if the
+atom_style "spin" was declared.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_style.txt b/doc/src/pair_style.txt
index cd39513329..b33897c5aa 100644
--- a/doc/src/pair_style.txt
+++ b/doc/src/pair_style.txt
@@ -218,10 +218,9 @@ This command must be used before any coefficients are set by the
 "read_restart"_read_restart.html commands.
 
 Some pair styles are part of specific packages.  They are only enabled
-if LAMMPS was built with that package.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
-The doc pages for individual pair potentials tell if it is part of a
-package.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.  The doc pages for
+individual pair potentials tell if it is part of a package.
 
 [Related commands:]
 
diff --git a/doc/src/pair_sw.txt b/doc/src/pair_sw.txt
index e6741791df..ff83316419 100644
--- a/doc/src/pair_sw.txt
+++ b/doc/src/pair_sw.txt
@@ -150,13 +150,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 When using the USER-INTEL package with this style, there is an
 additional 5 to 10 percent performance improvement when the
@@ -191,8 +191,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair style is part of the MANYBODY 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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This pair style requires the "newton"_newton.html setting to be "on"
 for pair interactions.
diff --git a/doc/src/pair_table.txt b/doc/src/pair_table.txt
index 5e3c1f5ff6..22c63a1f32 100644
--- a/doc/src/pair_table.txt
+++ b/doc/src/pair_table.txt
@@ -223,13 +223,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_table_rx.txt b/doc/src/pair_table_rx.txt
index 41be067bac..9b9a6abff8 100644
--- a/doc/src/pair_table_rx.txt
+++ b/doc/src/pair_table_rx.txt
@@ -233,13 +233,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -249,8 +249,8 @@ instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This command is part of the USER-DPD 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_tersoff.txt b/doc/src/pair_tersoff.txt
index 821c38f3e4..20744bc2a9 100644
--- a/doc/src/pair_tersoff.txt
+++ b/doc/src/pair_tersoff.txt
@@ -185,13 +185,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -221,8 +221,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair style is part of the MANYBODY 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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This pair style requires the "newton"_newton.html setting to be "on"
 for pair interactions.
diff --git a/doc/src/pair_tersoff_mod.txt b/doc/src/pair_tersoff_mod.txt
index ac1f79a80b..2df23045a3 100644
--- a/doc/src/pair_tersoff_mod.txt
+++ b/doc/src/pair_tersoff_mod.txt
@@ -137,13 +137,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -169,8 +169,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair style is part of the MANYBODY 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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This pair style requires the "newton"_newton.html setting to be "on"
 for pair interactions.
diff --git a/doc/src/pair_tersoff_zbl.txt b/doc/src/pair_tersoff_zbl.txt
index a89d4e3ea1..5f03ffd94e 100644
--- a/doc/src/pair_tersoff_zbl.txt
+++ b/doc/src/pair_tersoff_zbl.txt
@@ -195,13 +195,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -231,8 +231,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair style is part of the MANYBODY 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.
+if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This pair style requires the "newton"_newton.html setting to be "on"
 for pair interactions.
diff --git a/doc/src/pair_thole.txt b/doc/src/pair_thole.txt
index 7ce8b7cf4b..c7a304ca41 100644
--- a/doc/src/pair_thole.txt
+++ b/doc/src/pair_thole.txt
@@ -136,13 +136,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -161,8 +161,8 @@ are defined using
 [Restrictions:]
 
 These pair styles are part of the USER-DRUDE 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.
+enabled if LAMMPS was built with that package. See the "Build
+package"_Build_package.html doc page for more info.
 
 This pair_style should currently not be used with the "charmm dihedral
 style"_dihedral_charmm.html if the latter has non-zero 1-4 weighting
diff --git a/doc/src/pair_tri_lj.txt b/doc/src/pair_tri_lj.txt
index 3915ffc238..98bb4e284e 100644
--- a/doc/src/pair_tri_lj.txt
+++ b/doc/src/pair_tri_lj.txt
@@ -101,8 +101,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This style is part of the ASPHERE 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Defining particles to be triangles so they participate in tri/tri or
 tri/particle interactions requires the use the "atom_style
diff --git a/doc/src/pair_ufm.txt b/doc/src/pair_ufm.txt
index dbc6fd0664..787c60a1bd 100644
--- a/doc/src/pair_ufm.txt
+++ b/doc/src/pair_ufm.txt
@@ -75,13 +75,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_vashishta.txt b/doc/src/pair_vashishta.txt
index 2e404e8bef..01d089b4de 100644
--- a/doc/src/pair_vashishta.txt
+++ b/doc/src/pair_vashishta.txt
@@ -177,13 +177,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -213,8 +213,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 These pair style are part of the MANYBODY package.  They is only
-enabled if LAMMPS was built with that package.  See the
-"Making LAMMPS"_Section_start.html#start_3 section for more info.
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 These pair styles requires the "newton"_newton.html setting to be "on"
 for pair interactions.
diff --git a/doc/src/pair_yukawa.txt b/doc/src/pair_yukawa.txt
index 5a8363260a..154fd3e836 100644
--- a/doc/src/pair_yukawa.txt
+++ b/doc/src/pair_yukawa.txt
@@ -55,13 +55,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/pair_yukawa_colloid.txt b/doc/src/pair_yukawa_colloid.txt
index 515062d9eb..b36c4c235c 100644
--- a/doc/src/pair_yukawa_colloid.txt
+++ b/doc/src/pair_yukawa_colloid.txt
@@ -86,13 +86,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -129,8 +129,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This style is part of the COLLOID 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 This pair style requires that atoms be finite-size spheres with a
 diameter, as defined by the "atom_style sphere"_atom_style.html
diff --git a/doc/src/pair_zbl.txt b/doc/src/pair_zbl.txt
index 1472c7b672..4c8dfb5455 100644
--- a/doc/src/pair_zbl.txt
+++ b/doc/src/pair_zbl.txt
@@ -77,13 +77,13 @@ produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
-LAMMPS was built with those packages.  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+LAMMPS was built with those packages.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/partition.txt b/doc/src/partition.txt
index d4fe06c098..86673c226b 100644
--- a/doc/src/partition.txt
+++ b/doc/src/partition.txt
@@ -26,9 +26,8 @@ partition yes 6* fix all nvt temp 1.0 1.0 0.1 :pre
 [Description:]
 
 This command invokes the specified command on a subset of the
-partitions of processors you have defined via the -partition
-command-line switch.  See "Section 2.6"_Section_start.html#start_6
-for an explanation of the switch.
+partitions of processors you have defined via the "-partition
+command-line switch"_Run_options.html.
 
 Normally, every input script command in your script is invoked by
 every partition.  This behavior can be modified by defining world- or
@@ -49,7 +48,7 @@ argument.
 
 Partitions are numbered from 1 to Np, where Np is the number of
 partitions specified by the "-partition command-line
-switch"_Section_start.html#start_6.
+switch"_Run_options.html.
 
 {N} can be specified in one of two ways.  An explicit numeric value
 can be used, as in the 1st example above.  Or a wild-card asterisk can
diff --git a/doc/src/prd.txt b/doc/src/prd.txt
index b2145ebad1..f71f285336 100644
--- a/doc/src/prd.txt
+++ b/doc/src/prd.txt
@@ -62,15 +62,15 @@ timescale spanned by the multiple simulations, while waiting for an
 event to occur.
 
 Each replica runs on a partition of one or more processors.  Processor
-partitions are defined at run-time using the -partition command-line
-switch; see "Section 2.6"_Section_start.html#start_6 of the manual.
-Note that if you have MPI installed, you can run a multi-replica
-simulation with more replicas (partitions) than you have physical
-processors, e.g you can run a 10-replica simulation on one or two
-processors.  However for PRD, this makes little sense, since running a
-replica on virtual instead of physical processors,offers no effective
-parallel speed-up in searching for infrequent events.  See the "Howto
-replica"_Howto_replica.html doc page for further discussion.
+partitions are defined at run-time using the "-partition command-line
+switch"_Run_options.html.  Note that if you have MPI installed, you
+can run a multi-replica simulation with more replicas (partitions)
+than you have physical processors, e.g you can run a 10-replica
+simulation on one or two processors.  However for PRD, this makes
+little sense, since running a replica on virtual instead of physical
+processors,offers no effective parallel speed-up in searching for
+infrequent events.  See the "Howto replica"_Howto_replica.html doc
+page for further discussion.
 
 When a PRD simulation is performed, it is assumed that each replica is
 running the same model, though LAMMPS does not check for this.
@@ -285,8 +285,8 @@ value for the first event in the new run will be slightly off.
 [Restrictions:]
 
 This command can only be used if LAMMPS was built with the REPLICA
-package.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info on packages.
+package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 The {N} and {t_correlate} settings must be integer multiples of
 {t_event}.
diff --git a/doc/src/processors.txt b/doc/src/processors.txt
index df13ae1f61..b9bd927f96 100644
--- a/doc/src/processors.txt
+++ b/doc/src/processors.txt
@@ -81,11 +81,11 @@ communication costs due to the high surface area of each processor's
 sub-domain.
 
 Also note that if multiple partitions are being used then P is the
-number of processors in this partition; see "this
-section"_Section_start.html#start_6 for an explanation of the
--partition command-line switch.  Also note that you can prefix the
-processors command with the "partition"_partition.html command to
-easily specify different Px,Py,Pz values for different partitions.
+number of processors in this partition; see the "-partition
+command-line switch"_Run_options.html doc page for details.  Also note
+that you can prefix the processors command with the
+"partition"_partition.html command to easily specify different
+Px,Py,Pz values for different partitions.
 
 You can use the "partition"_partition.html command to specify
 different processor grids for different partitions, e.g.
@@ -249,7 +249,7 @@ partition {Precv} which is enforced when each is setting up their own
 mapping of their processors to the simulation box.  Each of {Psend}
 and {Precv} must be integers from 1 to Np, where Np is the number of
 partitions you have defined via the "-partition command-line
-switch"_Section_start.html#start_6.
+switch"_Run_options.html.
 
 A "dependency" means that the sending partition will create its
 regular 3d grid as Px by Py by Pz and after it has done this, it will
@@ -286,8 +286,8 @@ processors and their mapping to the 3d grid to the specified file
 processors in the manner you desired, which can be tricky to figure
 out, especially when running on multiple partitions or on, a multicore
 machine or when the processor ranks were reordered by use of the
-"-reorder command-line switch"_Section_start.html#start_6 or due to
-use of MPI-specific launch options such as a config file.
+"-reorder command-line switch"_Run_options.html or due to use of
+MPI-specific launch options such as a config file.
 
 If you have multiple partitions you should insure that each one writes
 to a different file, e.g. using a "world-style variable"_variable.html
@@ -300,11 +300,11 @@ The IDs are the processor's rank in this simulation (the world), the
 universe (of multiple simulations), and the original MPI communicator
 used to instantiate LAMMPS, respectively.  The world and universe IDs
 will only be different if you are running on more than one partition;
-see the "-partition command-line switch"_Section_start.html#start_6.
-The universe and original IDs will only be different if you used the
-"-reorder command-line switch"_Section_start.html#start_6 to reorder
-the processors differently than their rank in the original
-communicator LAMMPS was instantiated with.
+see the "-partition command-line switch"_Run_options.html.  The
+universe and original IDs will only be different if you used the
+"-reorder command-line switch"_Run_options.html to reorder the
+processors differently than their rank in the original communicator
+LAMMPS was instantiated with.
 
 I,J,K are the indices of the processor in the regular 3d grid, each
 from 1 to Nd, where Nd is the number of processors in that dimension
@@ -332,7 +332,8 @@ The {part} keyword (for the receiving partition) only works with the
 
 [Related commands:]
 
-"partition"_partition.html, "-reorder command-line switch"_Section_start.html#start_6
+"partition"_partition.html, "-reorder command-line
+switch"_Run_options.html
 
 [Default:]
 
diff --git a/doc/src/python.txt b/doc/src/python.txt
index 4f4faca8f4..0c0a203ccd 100644
--- a/doc/src/python.txt
+++ b/doc/src/python.txt
@@ -469,8 +469,8 @@ sys.exit() in the except clause).
 [Restrictions:]
 
 This command is part of the PYTHON 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.
+LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 Building LAMMPS with the PYTHON package will link LAMMPS with the
 Python library on your system.  Settings to enable this are in the
diff --git a/doc/src/read_data.txt b/doc/src/read_data.txt
index ded51a4d99..ef899a15b4 100644
--- a/doc/src/read_data.txt
+++ b/doc/src/read_data.txt
@@ -63,8 +63,8 @@ simulation.  The file can be ASCII text or a gzipped text file
 atom coordinates; see the "read_restart"_read_restart.html and
 "create_atoms"_create_atoms.html commands for alternative methods.
 Also see the explanation of the "-restart command-line
-switch"_Section_start.html#start_6 which can convert a restart file to
-a data file.
+switch"_Run_options.html which can convert a restart file to a data
+file.
 
 This command can be used multiple times to add new atoms and their
 properties to an existing system by using the {add}, {offset}, and
@@ -1153,8 +1153,8 @@ Translational velocities can also be set by the
 [Restrictions:]
 
 To read gzipped data files, you must compile LAMMPS with the
--DLAMMPS_GZIP option - see the "Making
-LAMMPS"_Section_start.html#start_2 section of the documentation.
+-DLAMMPS_GZIP option.  See the "Build settings"_Build_settings.html
+doc page for details.
 
 [Related commands:]
 
diff --git a/doc/src/read_dump.txt b/doc/src/read_dump.txt
index a3c0733e07..db9cfca825 100644
--- a/doc/src/read_dump.txt
+++ b/doc/src/read_dump.txt
@@ -311,12 +311,12 @@ needed to generate absolute, unscaled coordinates.
 [Restrictions:]
 
 To read gzipped dump files, you must compile LAMMPS with the
--DLAMMPS_GZIP option - see the "Making
-LAMMPS"_Section_start.html#start_2 section of the documentation.
+-DLAMMPS_GZIP option.  See the "Build settings"_Build_settings.html
+doc page for details.
 
 The {molfile} dump file formats are part of the USER-MOLFILE package.
 They are only enabled if LAMMPS was built with that packages.  See the
-"Making LAMMPS"_Section_start.html#start_3 section for more info.
+"Build package"_Build_package.html doc page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/read_restart.txt b/doc/src/read_restart.txt
index 488c36f020..08cb6a2e6c 100644
--- a/doc/src/read_restart.txt
+++ b/doc/src/read_restart.txt
@@ -80,8 +80,7 @@ produced the restart file, it could be a LAMMPS bug, so consider
 
 Because restart files are binary, they may not be portable to other
 machines.  In this case, you can use the "-restart command-line
-switch"_Section_start.html#start_6 to convert a restart file to a data
-file.
+switch"_Run_options.html to convert a restart file to a data file.
 
 Similar to how restart files are written (see the
 "write_restart"_write_restart.html and "restart"_restart.html
diff --git a/doc/src/region.txt b/doc/src/region.txt
index 21396ae1fd..acc85dcebb 100644
--- a/doc/src/region.txt
+++ b/doc/src/region.txt
@@ -370,13 +370,13 @@ by Kokkos or no acceleration will occur. Currently, only {block} style
 regions are supported by Kokkos.
 
 These accelerated styles are part of the Kokkos 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.
+only enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
 
 You can specify the accelerated styles explicitly in your input script
 by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
-use the "suffix"_suffix.html command in your input script.
+switch"_Run_options.html when you invoke LAMMPS, or you can use the
+"suffix"_suffix.html command in your input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
diff --git a/doc/src/rerun.txt b/doc/src/rerun.txt
index 8eb3ebd5a1..71ad464bb0 100644
--- a/doc/src/rerun.txt
+++ b/doc/src/rerun.txt
@@ -189,8 +189,8 @@ every 1000 steps, then you will only see thermodynamic output every
 [Restrictions:]
 
 To read gzipped dump files, you must compile LAMMPS with the
--DLAMMPS_GZIP option - see the "Making
-LAMMPS"_Section_start.html#start_2 section of the documentation.
+-DLAMMPS_GZIP option.  See the "Build settings"_Build_settings.html
+doc page for details.
 
 [Related commands:]
 
diff --git a/doc/src/restart.txt b/doc/src/restart.txt
index 6f2dc5ca46..7c034f36e0 100644
--- a/doc/src/restart.txt
+++ b/doc/src/restart.txt
@@ -125,8 +125,7 @@ Restart files can be read by a "read_restart"_read_restart.html
 command to restart a simulation from a particular state.  Because the
 file is binary (to enable exact restarts), it may not be readable on
 another machine.  In this case, you can use the "-r command-line
-switch"_Section_start.html#start_6 to convert a restart file to a data
-file.
+switch"_Run_options.html to convert a restart file to a data file.
 
 NOTE: Although the purpose of restart files is to enable restarting a
 simulation from where it left off, not all information about a
diff --git a/doc/src/run_style.txt b/doc/src/run_style.txt
index deee51cfd3..6dd9b56908 100644
--- a/doc/src/run_style.txt
+++ b/doc/src/run_style.txt
@@ -69,8 +69,8 @@ The {verlet} style is a standard velocity-Verlet integrator.
 
 The {verlet/split} style is also a velocity-Verlet integrator, but it
 splits the force calculation within each timestep over 2 partitions of
-processors.  See "Section 2.6"_Section_start.html#start_6 for an
-explanation of the -partition command-line switch.
+processors.  See the "-partition command-line switch"_Run_options.html
+for info on how to run LAMMPS with multiple partitions.
 
 Specifically, this style performs all computation except the
 "kspace_style"_kspace_style.html portion of the force field on the 1st
@@ -115,9 +115,9 @@ When you run in 2-partition mode with the {verlet/split} style, the
 thermodynamic data for the entire simulation will be output to the log
 and screen file of the 1st partition, which are log.lammps.0 and
 screen.0 by default; see the "-plog and -pscreen command-line
-switches"_Section_start.html#start_6 to change this.  The log and
-screen file for the 2nd partition will not contain thermodynamic
-output beyond the 1st timestep of the run.
+switches"_Run_options.html to change this.  The log and screen file
+for the 2nd partition will not contain thermodynamic output beyond the
+1st timestep of the run.
 
 See the "Speed packages"_Speed_packages.html doc page for performance
 details of the speed-up offered by the {verlet/split} style.  One
@@ -282,10 +282,10 @@ additional operations required for managing {omp} styles.  For more on
 styles take the same arguments and should produce the same results,
 except for round-off and precision issues.
 
-You can specify {respa/omp} explicitly in your input script, or
-you can use the "-suffix command-line switch"_Section_start.html#start_6
-when you invoke LAMMPS, or you can use the "suffix"_suffix.html
-command in your input script.
+You can specify {respa/omp} explicitly in your input script, or you
+can use the "-suffix command-line switch"_Run_options.html when you
+invoke LAMMPS, or you can use the "suffix"_suffix.html command in your
+input script.
 
 See the "Speed packages"_Speed_packages.html doc page for more
 instructions on how to use the accelerated styles effectively.
@@ -296,8 +296,8 @@ instructions on how to use the accelerated styles effectively.
 
 The {verlet/split} style can only be used if LAMMPS was built with the
 REPLICA package. Correspondingly the {respa/omp} style is available
-only if the USER-OMP package was included. See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+only if the USER-OMP package was included. See the "Build
+package"_Build_package.html doc page for more info.
 
 Whenever using rRESPA, the user should experiment with trade-offs in
 speed and accuracy for their system, and verify that they are
diff --git a/doc/src/suffix.txt b/doc/src/suffix.txt
index bb0619f1e0..62e41ed29a 100644
--- a/doc/src/suffix.txt
+++ b/doc/src/suffix.txt
@@ -28,16 +28,16 @@ suffix kk :pre
 
 This command allows you to use variants of various styles if they
 exist.  In that respect it operates the same as the "-suffix
-command-line switch"_Section_start.html#start_6.  It also has options
-to turn off or back on any suffix setting made via the command line.
+command-line switch"_Run_options.html.  It also has options to turn
+off or back on any suffix setting made via the command line.
 
 The specified style can be {gpu}, {intel}, {kk}, {omp}, {opt} or
 {hybrid}. These refer to optional packages that LAMMPS can be built
-with, as described in "this section of the
-manual"_Section_start.html#start_3.  The "gpu" style corresponds to
-the GPU package, the "intel" style to the USER-INTEL package, the "kk"
-style to the KOKKOS package, the "omp" style to the USER-OMP package,
-and the "opt" style to the OPT package.
+with, as described on the "Build package"_Build_package.html doc page.
+The "gpu" style corresponds to the GPU package, the "intel" style to
+the USER-INTEL package, the "kk" style to the KOKKOS package, the
+"omp" style to the USER-OMP package, and the "opt" style to the OPT
+package.
 
 These are the variants these packages provide:
 
@@ -105,6 +105,6 @@ input script.
 
 [Related commands:]
 
-"Command-line switch -suffix"_Section_start.html#start_6
+"-suffix command-line switch"_Run_options.html
 
 [Default:] none
diff --git a/doc/src/tad.txt b/doc/src/tad.txt
index a26ff79318..9b34a68636 100644
--- a/doc/src/tad.txt
+++ b/doc/src/tad.txt
@@ -271,8 +271,8 @@ are always monotonically increasing.
 [Restrictions:]
 
 This command can only be used if LAMMPS was built with the REPLICA
-package.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info on packages.
+package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 {N} setting must be integer multiple of {t_event}.
 
diff --git a/doc/src/temper.txt b/doc/src/temper.txt
index c7b482acc6..edd578fbc9 100644
--- a/doc/src/temper.txt
+++ b/doc/src/temper.txt
@@ -31,14 +31,14 @@ Run a parallel tempering or replica exchange simulation using multiple
 replicas (ensembles) of a system.  Two or more replicas must be used.
 
 Each replica runs on a partition of one or more processors.  Processor
-partitions are defined at run-time using the -partition command-line
-switch; see "Section 2.6"_Section_start.html#start_6 of the manual.
-Note that if you have MPI installed, you can run a multi-replica
-simulation with more replicas (partitions) than you have physical
-processors, e.g you can run a 10-replica simulation on one or two
-processors.  You will simply not get the performance speed-up you
-would see with one or more physical processors per replica.  See the
-"Howto replica"_Howto_replica.html doc page for further discussion.
+partitions are defined at run-time using the "-partition command-line
+switch"_Run_options.html.  Note that if you have MPI installed, you
+can run a multi-replica simulation with more replicas (partitions)
+than you have physical processors, e.g you can run a 10-replica
+simulation on one or two processors.  You will simply not get the
+performance speed-up you would see with one or more physical
+processors per replica.  See the "Howto replica"_Howto_replica.html
+doc page for further discussion.
 
 Each replica's temperature is controlled at a different value by a fix
 with {fix-ID} that controls temperature. Most thermostat fix styles
@@ -68,9 +68,8 @@ rejected based on a Boltzmann-weighted Metropolis criterion which uses
 As a tempering run proceeds, multiple log files and screen output
 files are created, one per replica.  By default these files are named
 log.lammps.M and screen.M where M is the replica number from 0 to N-1,
-with N = # of replicas.  See the "section on command-line
-switches"_Section_start.html#start_6 for info on how to change these
-names.
+with N = # of replicas.  See the "-log and -screen command-line
+swiches"_Run_options.html for info on how to change these names.
 
 The main screen and log file (log.lammps) will list information about
 which temperature is assigned to each replica at each thermodynamic
@@ -138,8 +137,8 @@ example above with $w as the last argument.
 [Restrictions:]
 
 This command can only be used if LAMMPS was built with the REPLICA
-package.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info on packages.
+package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 [Related commands:]
 
diff --git a/doc/src/temper_grem.txt b/doc/src/temper_grem.txt
index 9cb1bab784..7d22e46403 100644
--- a/doc/src/temper_grem.txt
+++ b/doc/src/temper_grem.txt
@@ -94,8 +94,8 @@ identical to "temper"_temper.html.
 [Restrictions:]
 
 This command can only be used if LAMMPS was built with the USER-MISC
-package.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info on packages.
+package.  See the "Build package"_Build_package.html doc
+page for more info.
 
 This command must be used with "fix grem"_fix_grem.html.
 
diff --git a/doc/src/temper_npt.txt b/doc/src/temper_npt.txt
index 4eee225de7..50ac5615f6 100644
--- a/doc/src/temper_npt.txt
+++ b/doc/src/temper_npt.txt
@@ -48,8 +48,8 @@ on how the parallel tempering is handled in general.
 [Restrictions:]
 
 This command can only be used if LAMMPS was built with the USER-MISC
-package.  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info on packages.
+package.  See the "Build package"_Build_package.html doc page for more
+info.
 
 This command should be used with a fix that maintains the
 isothermal-isobaric (NPT) ensemble.
diff --git a/doc/src/thermo_style.txt b/doc/src/thermo_style.txt
index cbc2612f28..4d294c1df7 100644
--- a/doc/src/thermo_style.txt
+++ b/doc/src/thermo_style.txt
@@ -253,9 +253,9 @@ proceed for the maximum number of allowed iterations.
 The {part} keyword is useful for multi-replica or multi-partition
 simulations to indicate which partition this output and this file
 corresponds to, or for use in a "variable"_variable.html to append to
-a filename for output specific to this partition.  See "Section
-2.6"_Section_start.html#start_6 of the manual for details on running
-in multi-partition mode.
+a filename for output specific to this partition.  See discussion of
+the "-partition command-line switch"_Run_options.html for details on
+running in multi-partition mode.
 
 The {timeremain} keyword returns the remaining seconds when a
 timeout has been configured via the "timer timeout"_timer.html command.
diff --git a/doc/src/timer.txt b/doc/src/timer.txt
index 10737dbda0..4025af9ea6 100644
--- a/doc/src/timer.txt
+++ b/doc/src/timer.txt
@@ -39,8 +39,8 @@ During a simulation run LAMMPS collects information about how much
 time is spent in different sections of the code and thus can provide
 information for determining performance and load imbalance problems.
 This can be done at different levels of detail and accuracy.  For more
-information about the timing output, see this "discussion of screen
-output in Section 2.7"_Section_start.html#start_7.
+information about the timing output, see the "Run
+output"_Run_output.html doc page.
 
 The {off} setting will turn all time measurements off. The {loop}
 setting will only measure the total time for a run and not collect any
diff --git a/doc/src/variable.txt b/doc/src/variable.txt
index c6598ccb51..a8d50503ac 100644
--- a/doc/src/variable.txt
+++ b/doc/src/variable.txt
@@ -178,9 +178,8 @@ This means variables can NOT be re-defined in an input script (with
 two exceptions, read further).  This is to allow an input script to be
 processed multiple times without resetting the variables; see the
 "jump"_jump.html or "include"_include.html commands.  It also means
-that using the "command-line switch"_Section_start.html#start_6 -var
-will override a corresponding index variable setting in the input
-script.
+that using the "command-line switch"_Run_options.html -var will
+override a corresponding index variable setting in the input script.
 
 There are two exceptions to this rule.  First, variables of style
 {string}, {getenv}, {internal}, {equal}, {vector}, {atom}, and
@@ -247,8 +246,7 @@ string is assigned.  All processors assign the same string to the
 variable.
 
 {Index} style variables with a single string value can also be set by
-using the command-line switch -var; see "this
-section"_Section_start.html#start_6 for details.
+using the "command-line switch -var"_Run_options.html.
 
 The {loop} style is identical to the {index} style except that the
 strings are the integers from 1 to N inclusive, if only one argument N
@@ -263,32 +261,31 @@ inclusive, and the string N1 is initially assigned to the variable.
 N1 <= N2 and N2 >= 0 is required.
 
 For the {world} style, one or more strings are specified.  There must
-be one string for each processor partition or "world".  See "this
-section"_Section_start.html#start_6 of the manual for information on
-running LAMMPS with multiple partitions via the "-partition"
-command-line switch.  This variable command assigns one string to each
-world.  All processors in the world are assigned the same string.  The
-next command cannot be used with {equal} style variables, since there
-is only one value per world.  This style of variable is useful when
-you wish to run different simulations on different partitions, or when
-performing a parallel tempering simulation (see the
+be one string for each processor partition or "world".  LAMMPS can be
+run with multiple partitions via the "-partition command-line
+switch"_Run_options.html.  This variable command assigns one string to
+each world.  All processors in the world are assigned the same string.
+The next command cannot be used with {equal} style variables, since
+there is only one value per world.  This style of variable is useful
+when you wish to run different simulations on different partitions, or
+when performing a parallel tempering simulation (see the
 "temper"_temper.html command), to assign different temperatures to
 different partitions.
 
 For the {universe} style, one or more strings are specified.  There
 must be at least as many strings as there are processor partitions or
-"worlds".  See "this page"_Section_start.html#start_6 for information
-on running LAMMPS with multiple partitions via the "-partition"
-command-line switch.  This variable command initially assigns one
-string to each world.  When a "next"_next.html command is encountered
-using this variable, the first processor partition to encounter it, is
-assigned the next available string.  This continues until all the
-variable strings are consumed.  Thus, this command can be used to run
-50 simulations on 8 processor partitions.  The simulations will be run
-one after the other on whatever partition becomes available, until
-they are all finished.  {Universe} style variables are incremented
-using the files "tmp.lammps.variable" and "tmp.lammps.variable.lock"
-which you will see in your directory during such a LAMMPS run.
+"worlds".  LAMMPS can be run with multiple partitions via the
+"-partition command-line switch"_Run_options.html.  This variable
+command initially assigns one string to each world.  When a
+"next"_next.html command is encountered using this variable, the first
+processor partition to encounter it, is assigned the next available
+string.  This continues until all the variable strings are consumed.
+Thus, this command can be used to run 50 simulations on 8 processor
+partitions.  The simulations will be run one after the other on
+whatever partition becomes available, until they are all finished.
+{Universe} style variables are incremented using the files
+"tmp.lammps.variable" and "tmp.lammps.variable.lock" which you will
+see in your directory during such a LAMMPS run.
 
 The {uloop} style is identical to the {universe} style except that the
 strings are the integers from 1 to N.  This allows generation of long
diff --git a/doc/src/write_data.txt b/doc/src/write_data.txt
index d8a33f457f..b6002b5252 100644
--- a/doc/src/write_data.txt
+++ b/doc/src/write_data.txt
@@ -60,7 +60,7 @@ If you want to do more exact restarts, using binary files, see the
 "restart"_restart.html, "write_restart"_write_restart.html, and
 "read_restart"_read_restart.html commands.  You can also convert
 binary restart files to text data files, after a simulation has run,
-using the "-r command-line switch"_Section_start.html#start_6.
+using the "-r command-line switch"_Run_options.html.
 
 NOTE: Only limited information about a simulation is stored in a data
 file.  For example, no information about atom "groups"_group.html and
diff --git a/doc/src/write_restart.txt b/doc/src/write_restart.txt
index 3935a5d538..c393c7f735 100644
--- a/doc/src/write_restart.txt
+++ b/doc/src/write_restart.txt
@@ -66,8 +66,7 @@ Restart files can be read by a "read_restart"_read_restart.html
 command to restart a simulation from a particular state.  Because the
 file is binary (to enable exact restarts), it may not be readable on
 another machine.  In this case, you can use the "-r command-line
-switch"_Section_start.html#start_6 to convert a restart file to a data
-file.
+switch"_Run_options.html to convert a restart file to a data file.
 
 NOTE: Although the purpose of restart files is to enable restarting a
 simulation from where it left off, not all information about a
-- 
GitLab


From a5170e93ece28c35af98ce72adb38dc5b14d32f0 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 9 Aug 2018 19:46:25 +0200
Subject: [PATCH 173/243] fix a bunch more broken, duplicate links and
 misformatted text

---
 doc/src/Build_extras.txt          |  12 +-
 doc/src/Build_settings.txt        |   2 +-
 doc/src/Errors_common.txt         |   2 +-
 doc/src/Install_git.txt           |  10 +-
 doc/src/Install_linux.txt         |   2 +-
 doc/src/Install_svn.txt           |   6 +-
 doc/src/Packages_details.txt      | 302 +++++++++++++++---------------
 doc/src/Packages_standard.txt     |  65 +++----
 doc/src/Packages_user.txt         |  68 +++----
 doc/src/angle_cosine_shift.txt    |   8 +-
 doc/src/fix_deform.txt            |   2 +-
 doc/src/fix_nve_dot.txt           |   2 +-
 doc/src/fix_nve_dotc_langevin.txt |   2 +-
 13 files changed, 242 insertions(+), 241 deletions(-)

diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
index 82f720791d..d940ed23cd 100644
--- a/doc/src/Build_extras.txt
+++ b/doc/src/Build_extras.txt
@@ -58,7 +58,7 @@ available on your system.
 If CMake cannot find the library, you can set these variables:
 
 -D ZLIB_INCLUDE_DIR=path    # path to zlib.h header file 
--D ZLIB_LIBRARIES=path      # path to libzlib.a (.so) file 
+-D ZLIB_LIBRARIES=path      # path to libzlib.a (.so) file :pre
 
 [Traditional make]:
 
@@ -82,11 +82,11 @@ to build the library in lib/gpu first.
 -D OCL_TUNE=value     # hardware choice for GPU_API=opencl
                       # generic (default) or intel (Intel CPU) or phi (Intel Xeon Phi) or fermi (NVIDIA) or kepler (NVIDIA) or cypress (NVIDIA)
 -D GPU_ARCH=value     # hardware choice for GPU_API=cuda
-                      # value = sm20 (Fermi) or sm30 (Kepler) or sm50 (Maxwell) or sm60 (Pascal) or sm70 (Volta)
+                      # value = sm20 (Fermi) or sm30 or sm (Kepler) or sm50 (Maxwell) or sm60 (Pascal) or sm70 (Volta)
                       # default is Cuda-compiler dependent, but typically Fermi
 -D CUDPP_OPT=value    # optimization setting for GPU_API=cudea
-                      # enables CUDA Performance Primitives Optimizations 	
-                      # on (default) or off
+                      # enables CUDA Performance Primitives Optimizations
+                      # on (default) or off :pre
 
 [Traditional make]:
 
@@ -191,13 +191,13 @@ traditional make settings
 
 [Traditional make]:
 
-  how to choose these 3 things: mode archgpu=N archcpu=SNB
+how to choose these 3 things: mode archgpu=N archcpu=SNB
   mode = omp or cuda or phi (def = KOKKOS_DEVICES setting in Makefile )
   archgpu = number like 35 (Kepler) or 21 (Fermi) (def = none)
     sets KOKKOS_ARCH for GPU to appropriate value
   archcpu = SNB or HSW or BGQ or Power7 or Power8 (def = none)
     for CPU = SandyBridge, Haswell, BGQ, Power7, Power8
-    sets KOKKOS_ARCH for GPU to appropriate value
+    sets KOKKOS_ARCH for GPU to appropriate value :pre
 
 For the KOKKOS package, you have 3 choices when building.  You can
 build with either CPU or KNL or GPU support.  Each choice requires
diff --git a/doc/src/Build_settings.txt b/doc/src/Build_settings.txt
index 1969e9588b..a64c5d691d 100644
--- a/doc/src/Build_settings.txt
+++ b/doc/src/Build_settings.txt
@@ -252,7 +252,7 @@ gzip compression by several LAMMPS commands, including
 
 -D LAMMPS_GZIP=value     # yes or no
                          # default is yes if CMake can find gzip, else no
--D GZIP_EXECUTABLE=path  # path to gzip executable if CMake cannot find it
+-D GZIP_EXECUTABLE=path  # path to gzip executable if CMake cannot find it :pre
 
 [Makefile.machine setting]:
 
diff --git a/doc/src/Errors_common.txt b/doc/src/Errors_common.txt
index d82114bd38..651040ebc9 100644
--- a/doc/src/Errors_common.txt
+++ b/doc/src/Errors_common.txt
@@ -60,7 +60,7 @@ package which was not compiled into your executable.  The list of
 available styles in your executable can be listed by using "the -h
 command-line swith"_Run_options.html.  The installation and
 compilation of optional packages is explained on the "Build
-packages"_Build_packages.html doc page.
+packages"_Build_package.html doc page.
 
 For a given command, LAMMPS expects certain arguments in a specified
 order.  If you mess this up, LAMMPS will often flag the error, but it
diff --git a/doc/src/Install_git.txt b/doc/src/Install_git.txt
index 1d043c30d2..538fa8aff8 100644
--- a/doc/src/Install_git.txt
+++ b/doc/src/Install_git.txt
@@ -62,9 +62,9 @@ Or they can be generated from the content provided in doc/src by
 typing "make html" from the the doc directory.
 
 After initial cloning, as bug fixes and new features are added to
-LAMMPS, as listed on "this page"_bug.html, you can stay up-to-date by
-typing the following Git commands from within the "mylammps"
-directory:
+LAMMPS, as listed on "this page"_Errors_bugs.html, you can stay
+up-to-date by typing the following Git commands from within the
+"mylammps" directory:
 
 git checkout unstable      # not needed if you always stay in this branch
 git checkout stable        # use one of the 3 checkout commands
@@ -86,8 +86,8 @@ this is as follows.
 git checkout tagID :pre
 
 Stable versions and what tagID to use for a particular stable version
-are discussed on "this page"_bug.html.  Note that this command will
-print some warnings, because in order to get back to the latest
+are discussed on "this page"_Errors_bugs.html.  Note that this command
+will print some warnings, because in order to get back to the latest
 revision and to be able to update with "git pull" again, you first
 will need to first type "git checkout unstable" (or check out any
 other desired branch).
diff --git a/doc/src/Install_linux.txt b/doc/src/Install_linux.txt
index 10da3d933f..cddec0c069 100644
--- a/doc/src/Install_linux.txt
+++ b/doc/src/Install_linux.txt
@@ -12,7 +12,7 @@ Download an executable for Linux :h3
 Binaries are available for many different versions of Linux:
 
 "Pre-built binary RPMs for Fedora/RedHat/CentOS/openSUSE"_#rpm
-"Pre-built Ubuntu Linux executables"_#unbuntu
+"Pre-built Ubuntu Linux executables"_#ubuntu
 "Pre-built Gentoo Linux executable"_#gentoo :all(b)
 
 :line
diff --git a/doc/src/Install_svn.txt b/doc/src/Install_svn.txt
index 64fd1077cb..7a0211ab65 100644
--- a/doc/src/Install_svn.txt
+++ b/doc/src/Install_svn.txt
@@ -50,9 +50,9 @@ Or they can be generated from the content provided in doc/src by
 typing "make html" from the the doc directory.
 
 After initial checkout, as bug fixes and new features are added to
-LAMMPS, as listed on "this page"_bug.html, you can stay up-to-date by
-typing the following SVN commands from within the "mylammps"
-directory:
+LAMMPS, as listed on "this page"_Errors_bugs.html, you can stay
+up-to-date by typing the following SVN commands from within the
+"mylammps" directory:
 
 svn update :pre
 
diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt
index 033e70dbc1..33d1df06ec 100644
--- a/doc/src/Packages_details.txt
+++ b/doc/src/Packages_details.txt
@@ -30,79 +30,79 @@ src/GRANULAR".  Files with names that start with fix, compute, atom,
 pair, bond, angle, etc correspond to commands with the same style name
 as contained in the file name.
 
-"ASPHERE"_#ASPHERE,
-"BODY"_#BODY,
-"CLASS2"_#CLASS2,
-"COLLOID"_#COLLOID,
-"COMPRESS"_#COMPRESS,
-"CORESHELL"_#CORESHELL,
-"DIPOLE"_#DIPOLE,
-"GPU"_#GPU,
-"GRANULAR"_#GRANULAR,
-"KIM"_#KIM,
-"KOKKOS"_#KOKKOS,
-"KSPACE"_#KSPACE,
-"LATTE"_#LATTE,
-"MANYBODY"_#MANYBODY,
-"MC"_#MC,
-"MEAM"_#MEAM,
-"MISC"_#MISC,
-"MOLECULE"_#MOLECULE,
-"MPIIO"_#MPIIO,
-"MSCG"_#MSCG,
-"OPT"_#OPT,
-"PERI"_#PERI,
-"POEMS"_#POEMS,
-"PYTHON"_#PYTHON,
-"QEQ"_#QEQ,
-"REAX"_#REAX,
-"REPLICA"_#REPLICA2,
-"RIGID"_#RIGID,
-"SHOCK"_#SHOCK,
-"SNAP"_#SNAP,
-"SPIN"_#SPIN,
-"SRD"_#SRD,
-"VORONOI"_#VORONOI :tb(c=6,ea=c)
-
-"USER-ATC"_#USER-ATC,
-"USER-AWPMD"_#USER-AWPMD,
-"USER-BOCS"_#USER-BOCS,
-"USER-CGDNA"_#USER-CGDNA,
-"USER-CGSDK"_#USER-CGSDK,
-"USER-COLVARS"_#USER-COLVARS,
-"USER-DIFFRACTION"_#USER-DIFFRACTION,
-"USER-DPD"_#USER-DPD,
-"USER-DRUDE"_#USER-DRUDE,
-"USER-EFF"_#USER-EFF,
-"USER-FEP"_#USER-FEP,
-"USER-H5MD"_#USER-H5MD,
-"USER-INTEL"_#USER-INTEL,
-"USER-LB"_#USER-LB,
-"USER-MANIFOLD"_#USER-MANIFOLD,
-"USER-MEAMC"_#USER-MEAMC,
-"USER-MESO"_#USER-MESO,
-"USER-MGPT"_#USER-MGPT,
-"USER-MISC"_#USER-MISC,
-"USER-MOFFF"_#USER-MOFFF,
-"USER-MOLFILE"_#USER-MOLFILE,
-"USER-NETCDF"_#USER-NETCDF,
-"USER-OMP"_#USER-OMP,
-"USER-PHONON"_#USER-PHONON,
-"USER-QMMM"_#USER-QMMM,
-"USER-QTB"_#USER-QTB,
-"USER-QUIP"_#USER-QUIP,
-"USER-REAXC"_#USER-REAXC,
-"USER-SMD"_#USER-SMD,
-"USER-SMTBQ"_#USER-SMTBQ,
-"USER-SPH"_#USER-SPH,
-"USER-TALLY"_#USER-TALLY,
-"USER-UEF"_#USER-UEF,
-"USER-VTK"_#USER-VTK :tb(c=6,ea=c)
-
-:line
-:line
-
-ASPHERE package :link(ASPHERE),h4
+"ASPHERE"_#PKG-ASPHERE,
+"BODY"_#PKG-BODY,
+"CLASS2"_#PKG-CLASS2,
+"COLLOID"_#PKG-COLLOID,
+"COMPRESS"_#PKG-COMPRESS,
+"CORESHELL"_#PKG-CORESHELL,
+"DIPOLE"_#PKG-DIPOLE,
+"GPU"_#PKG-GPU,
+"GRANULAR"_#PKG-GRANULAR,
+"KIM"_#PKG-KIM,
+"KOKKOS"_#PKG-KOKKOS,
+"KSPACE"_#PKG-KSPACE,
+"LATTE"_#PKG-LATTE,
+"MANYBODY"_#PKG-MANYBODY,
+"MC"_#PKG-MC,
+"MEAM"_#PKG-MEAM,
+"MISC"_#PKG-MISC,
+"MOLECULE"_#PKG-MOLECULE,
+"MPIIO"_#PKG-MPIIO,
+"MSCG"_#PKG-MSCG,
+"OPT"_#PKG-OPT,
+"PERI"_#PKG-PERI,
+"POEMS"_#PKG-POEMS,
+"PYTHON"_#PKG-PYTHON,
+"QEQ"_#PKG-QEQ,
+"REAX"_#PKG-REAX,
+"REPLICA"_#PKG-REPLICA2,
+"RIGID"_#PKG-RIGID,
+"SHOCK"_#PKG-SHOCK,
+"SNAP"_#PKG-SNAP,
+"SPIN"_#PKG-SPIN,
+"SRD"_#PKG-SRD,
+"VORONOI"_#PKG-VORONOI :tb(c=6,ea=c)
+
+"USER-ATC"_#PKG-USER-ATC,
+"USER-AWPMD"_#PKG-USER-AWPMD,
+"USER-BOCS"_#PKG-USER-BOCS,
+"USER-CGDNA"_#PKG-USER-CGDNA,
+"USER-CGSDK"_#PKG-USER-CGSDK,
+"USER-COLVARS"_#PKG-USER-COLVARS,
+"USER-DIFFRACTION"_#PKG-USER-DIFFRACTION,
+"USER-DPD"_#PKG-USER-DPD,
+"USER-DRUDE"_#PKG-USER-DRUDE,
+"USER-EFF"_#PKG-USER-EFF,
+"USER-FEP"_#PKG-USER-FEP,
+"USER-H5MD"_#PKG-USER-H5MD,
+"USER-INTEL"_#PKG-USER-INTEL,
+"USER-LB"_#PKG-USER-LB,
+"USER-MANIFOLD"_#PKG-USER-MANIFOLD,
+"USER-MEAMC"_#PKG-USER-MEAMC,
+"USER-MESO"_#PKG-USER-MESO,
+"USER-MGPT"_#PKG-USER-MGPT,
+"USER-MISC"_#PKG-USER-MISC,
+"USER-MOFFF"_#PKG-USER-MOFFF,
+"USER-MOLFILE"_#PKG-USER-MOLFILE,
+"USER-NETCDF"_#PKG-USER-NETCDF,
+"USER-OMP"_#PKG-USER-OMP,
+"USER-PHONON"_#PKG-USER-PHONON,
+"USER-QMMM"_#PKG-USER-QMMM,
+"USER-QTB"_#PKG-USER-QTB,
+"USER-QUIP"_#PKG-USER-QUIP,
+"USER-REAXC"_#PKG-USER-REAXC,
+"USER-SMD"_#PKG-USER-SMD,
+"USER-SMTBQ"_#PKG-USER-SMTBQ,
+"USER-SPH"_#PKG-USER-SPH,
+"USER-TALLY"_#PKG-USER-TALLY,
+"USER-UEF"_#PKG-USER-UEF,
+"USER-VTK"_#PKG-USER-VTK :tb(c=6,ea=c)
+
+:line
+:line
+
+ASPHERE package :link(PKG-ASPHERE),h4
 
 [Contents:]
 
@@ -124,7 +124,7 @@ http://lammps.sandia.gov/movies.html#tri :ul
 
 :line
 
-BODY package :link(BODY),h4
+BODY package :link(PKG-BODY),h4
 
 [Contents:]
 
@@ -144,7 +144,7 @@ examples/body :ul
 
 :line
 
-CLASS2 package :link(CLASS2),h4
+CLASS2 package :link(PKG-CLASS2),h4
 
 [Contents:]
 
@@ -162,7 +162,7 @@ src/CLASS2: filenames -> commands
 
 :line
 
-COLLOID package :link(COLLOID),h4
+COLLOID package :link(PKG-COLLOID),h4
 
 [Contents:]
 
@@ -189,7 +189,7 @@ examples/srd :ul
 
 :line
 
-COMPRESS package :link(COMPRESS),h4
+COMPRESS package :link(PKG-COMPRESS),h4
 
 [Contents:]
 
@@ -219,7 +219,7 @@ lib/compress/README
 
 :line
 
-CORESHELL package :link(CORESHELL),h4
+CORESHELL package :link(PKG-CORESHELL),h4
 
 [Contents:]
 
@@ -246,7 +246,7 @@ examples/coreshell :ul
 
 :line
 
-DIPOLE package :link(DIPOLE),h4
+DIPOLE package :link(PKG-DIPOLE),h4
 
 [Contents:]
 
@@ -264,7 +264,7 @@ examples/dipole :ul
 
 :line
 
-GPU package :link(GPU),h4
+GPU package :link(PKG-GPU),h4
 
 [Contents:]
 
@@ -277,7 +277,7 @@ gpu"_Speed_gpu.html doc page gives details of what hardware and GPU
 software is required on your system, and details on how to build and
 use this package.  Its styles can be invoked at run time via the "-sf
 gpu" or "-suffix gpu" "command-line switches"_Run_options.html.  See
-also the "KOKKOS"_#KOKKOS package, which has GPU-enabled styles.
+also the "KOKKOS"_#PKG-KOKKOS package, which has GPU-enabled styles.
 
 [Authors:] Mike Brown (Intel) while at Sandia and ORNL and Trung Nguyen
 (Northwestern U) while at ORNL.
@@ -303,7 +303,7 @@ lib/gpu/README
 
 :line
 
-GRANULAR package :link(GRANULAR),h4
+GRANULAR package :link(PKG-GRANULAR),h4
 
 [Contents:]
 
@@ -330,7 +330,7 @@ http://lammps.sandia.gov/movies.html#granregion :ul
 
 :line
 
-KIM package :link(KIM),h4
+KIM package :link(PKG-KIM),h4
 
 [Contents:]
 
@@ -366,7 +366,7 @@ examples/kim :ul
 
 :line
 
-KOKKOS package :link(KOKKOS),h4
+KOKKOS package :link(PKG-KOKKOS),h4
 
 [Contents:]
 
@@ -378,8 +378,8 @@ style name.  The "Speed kokkos"_Speed_kokkos.html doc page gives
 details of what hardware and software is required on your system, and
 how to build and use this package.  Its styles can be invoked at run
 time via the "-sf kk" or "-suffix kk" "command-line
-switches"_Run_options.html.  Also see the "GPU"_#GPU, "OPT"_#OPT,
-"USER-INTEL"_#USER-INTEL, and "USER-OMP"_#USER-OMP packages, which
+switches"_Run_options.html.  Also see the "GPU"_#PKG-GPU, "OPT"_#PKG-OPT,
+"USER-INTEL"_#PKG-USER-INTEL, and "USER-OMP"_#PKG-USER-OMP packages, which
 have styles optimized for CPUs, KNLs, and GPUs.
 
 You must have a C++11 compatible compiler to use this package.
@@ -413,7 +413,7 @@ lib/kokkos/README
 
 :line
 
-KSPACE package :link(KSPACE),h4
+KSPACE package :link(PKG-KSPACE),h4
 
 [Contents:]
 
@@ -446,7 +446,7 @@ bench/in.rhodo :ul
 
 :line
 
-LATTE package :link(LATTE),h4
+LATTE package :link(PKG-LATTE),h4
 
 [Contents:]
 
@@ -481,7 +481,7 @@ examples/latte
 
 :line
 
-MANYBODY package :link(MANYBODY),h4
+MANYBODY package :link(PKG-MANYBODY),h4
 
 [Contents:]
 
@@ -502,7 +502,7 @@ bench/in.eam :ul
 
 :line
 
-MC package :link(MC),h4
+MC package :link(PKG-MC),h4
 
 [Contents:]
 
@@ -524,14 +524,14 @@ http://lammps.sandia.gov/movies.html#gcmc :ul
 
 :line
 
-MEAM package :link(MEAM),h4
+MEAM package :link(PKG-MEAM),h4
 
 [Contents:]
 
 A pair style for the modified embedded atom (MEAM) potential.
 
 Please note that the MEAM package has been superseded by the
-"USER-MEAMC"_#USER-MEAMC package, which is a direct translation
+"USER-MEAMC"_#PKG-USER-MEAMC package, which is a direct translation
 of the MEAM package to C++. USER-MEAMC contains additional
 optimizations making it run faster than MEAM on most machines,
 while providing the identical features and USER interface.
@@ -558,7 +558,7 @@ examples/meam :ul
 
 :line
 
-MISC package :link(MISC),h4
+MISC package :link(PKG-MISC),h4
 
 [Contents:]
 
@@ -585,7 +585,7 @@ http://lammps.sandia.gov/movies.html#evaporation :ul
 
 :line
 
-MOLECULE package :link(MOLECULE),h4
+MOLECULE package :link(PKG-MOLECULE),h4
 
 [Contents:]
 
@@ -614,7 +614,7 @@ bench/in.rhodo :ul
 
 :line
 
-MPIIO package :link(MPIIO),h4
+MPIIO package :link(PKG-MPIIO),h4
 
 [Contents:]
 
@@ -633,7 +633,7 @@ src/MPIIO: filenames -> commands
 
 :line
 
-MSCG package :link(mscg),h4
+MSCG package :link(PKG-mscg),h4
 
 [Contents:]
 
@@ -665,7 +665,7 @@ examples/mscg :ul
 
 :line
 
-OPT package :link(OPT),h4
+OPT package :link(PKG-OPT),h4
 
 [Contents:]
 
@@ -675,8 +675,8 @@ CHARMM, and Morse potentials.  The styles have an "opt" suffix in
 their style name.  The "Speed opt"_Speed_opt.html doc page gives
 details of how to build and use this package.  Its styles can be
 invoked at run time via the "-sf opt" or "-suffix opt" "command-line
-switches"_Run_options.html.  See also the "KOKKOS"_#KOKKOS,
-"USER-INTEL"_#USER-INTEL, and "USER-OMP"_#USER-OMP packages, which
+switches"_Run_options.html.  See also the "KOKKOS"_#PKG-KOKKOS,
+"USER-INTEL"_#PKG-USER-INTEL, and "USER-OMP"_#PKG-USER-OMP packages, which
 have styles optimized for CPU performance.
 
 [Authors:] James Fischer (High Performance Technologies), David Richie,
@@ -699,7 +699,7 @@ src/OPT: filenames -> commands
 
 :line
 
-PERI package :link(PERI),h4
+PERI package :link(PKG-PERI),h4
 
 [Contents:]
 
@@ -727,7 +727,7 @@ http://lammps.sandia.gov/movies.html#peri :ul
 
 :line
 
-POEMS package :link(POEMS),h4
+POEMS package :link(PKG-POEMS),h4
 
 [Contents:]
 
@@ -755,7 +755,7 @@ examples/rigid :ul
 
 :line
 
-PYTHON package :link(PYTHON),h4
+PYTHON package :link(PKG-PYTHON),h4
 
 [Contents:]
 
@@ -786,7 +786,7 @@ examples/python :ul
 
 :line
 
-QEQ package :link(QEQ),h4
+QEQ package :link(PKG-QEQ),h4
 
 [Contents:]
 
@@ -803,13 +803,13 @@ examples/streitz :ul
 
 :line
 
-REAX package :link(REAX),h4
+REAX package :link(PKG-REAX),h4
 
 [Contents:]
 
 A pair style which wraps a Fortran library which implements the ReaxFF
 potential, which is a universal reactive force field.  See the
-"USER-REAXC package"_#USER-REAXC for an alternate implementation in
+"USER-REAXC package"_#PKG-USER-REAXC for an alternate implementation in
 C/C++.  Also a "fix reax/bonds"_fix_reax_bonds.html command for
 monitoring molecules as bonds are created and destroyed.
 
@@ -831,7 +831,7 @@ examples/reax :ul
 
 :line
 
-REPLICA package :link(REPLICA2),h4
+REPLICA package :link(PKG-REPLICA2),h4
 
 [Contents:]
 
@@ -860,7 +860,7 @@ examples/tad :ul
 
 :line
 
-RIGID package :link(RIGID),h4
+RIGID package :link(PKG-RIGID),h4
 
 [Contents:]
 
@@ -884,7 +884,7 @@ http://lammps.sandia.gov/movies.html#star :ul
 
 :line
 
-SHOCK package :link(SHOCK),h4
+SHOCK package :link(PKG-SHOCK),h4
 
 [Contents:]
 
@@ -903,7 +903,7 @@ examples/msst :ul
 
 :line
 
-SNAP package :link(SNAP),h4
+SNAP package :link(PKG-SNAP),h4
 
 [Contents:]
 
@@ -925,7 +925,7 @@ examples/snap :ul
 
 :line
 
-SPIN package :link(SPIN),h4
+SPIN package :link(PKG-SPIN),h4
 
 [Contents:]
 
@@ -949,7 +949,7 @@ examples/SPIN :ul
 
 :line
 
-SRD package :link(SRD),h4
+SRD package :link(PKG-SRD),h4
 
 [Contents:]
 
@@ -970,7 +970,7 @@ http://lammps.sandia.gov/movies.html#poly :ul
 
 :line
 
-VORONOI package :link(VORONOI),h4
+VORONOI package :link(PKG-VORONOI),h4
 
 [Contents:]
 
@@ -1005,7 +1005,7 @@ examples/voronoi :ul
 :line
 :line
 
-USER-ATC package :link(USER-ATC),h4
+USER-ATC package :link(PKG-USER-ATC),h4
 
 [Contents:]
 
@@ -1032,7 +1032,7 @@ http://lammps.sandia.gov/pictures.html#atc :ul
 
 :line
 
-USER-AWPMD package :link(USER-AWPMD),h4
+USER-AWPMD package :link(PKG-USER-AWPMD),h4
 
 [Contents:]
 
@@ -1058,7 +1058,7 @@ examples/USER/awpmd :ul
 
 :line
 
-USER-BOCS package :link(USER-BOCS),h4
+USER-BOCS package :link(PKG-USER-BOCS),h4
 
 [Contents:]
 
@@ -1088,7 +1088,7 @@ Example inputs are in the examples/USER/bocs folder.
 
 :line
 
-USER-CGDNA package :link(USER-CGDNA),h4
+USER-CGDNA package :link(PKG-USER-CGDNA),h4
 
 [Contents:]
 
@@ -1112,7 +1112,7 @@ src/USER-CGDNA: filenames -> commands
 
 :line
 
-USER-CGSDK package :link(USER-CGSDK),h4
+USER-CGSDK package :link(PKG-USER-CGSDK),h4
 
 [Contents:]
 
@@ -1134,7 +1134,7 @@ http://lammps.sandia.gov/pictures.html#cg :ul
 
 :line
 
-USER-COLVARS package :link(USER-COLVARS),h4
+USER-COLVARS package :link(PKG-USER-COLVARS),h4
 
 [Contents:]
 
@@ -1168,7 +1168,7 @@ examples/USER/colvars :ul
 
 :line
 
-USER-DIFFRACTION package :link(USER-DIFFRACTION),h4
+USER-DIFFRACTION package :link(PKG-USER-DIFFRACTION),h4
 
 [Contents:]
 
@@ -1187,7 +1187,7 @@ examples/USER/diffraction :ul
 
 :line
 
-USER-DPD package :link(USER-DPD),h4
+USER-DPD package :link(PKG-USER-DPD),h4
 
 [Contents:]
 
@@ -1225,7 +1225,7 @@ examples/USER/dpd :ul
 
 :line
 
-USER-DRUDE package :link(USER-DRUDE),h4
+USER-DRUDE package :link(PKG-USER-DRUDE),h4
 
 [Contents:]
 
@@ -1255,7 +1255,7 @@ tools/drude :ul
 
 :line
 
-USER-EFF package :link(USER-EFF),h4
+USER-EFF package :link(PKG-USER-EFF),h4
 
 [Contents:]
 
@@ -1288,7 +1288,7 @@ http://lammps.sandia.gov/movies.html#eff :ul
 
 :line
 
-USER-FEP package :link(USER-FEP),h4
+USER-FEP package :link(PKG-USER-FEP),h4
 
 [Contents:]
 
@@ -1313,7 +1313,7 @@ tools/fep :ul
 
 :line
 
-USER-H5MD package :link(USER-H5MD),h4
+USER-H5MD package :link(PKG-USER-H5MD),h4
 
 [Contents:]
 
@@ -1346,7 +1346,7 @@ lib/h5md/README
 
 :line
 
-USER-INTEL package :link(USER-INTEL),h4
+USER-INTEL package :link(PKG-USER-INTEL),h4
 
 [Contents:]
 
@@ -1357,7 +1357,7 @@ intel"_Speed_intel.html doc page gives details of what hardware and
 compilers are required on your system, and how to build and use this
 package.  Its styles can be invoked at run time via the "-sf intel" or
 "-suffix intel" "command-line switches"_Run_options.html.  Also see
-the "KOKKOS"_#KOKKOS, "OPT"_#OPT, and "USER-OMP"_#USER-OMP packages,
+the "KOKKOS"_#PKG-KOKKOS, "OPT"_#PKG-OPT, and "USER-OMP"_#PKG-USER-OMP packages,
 which have styles optimized for CPUs and KNLs.
 
 You need to have an Intel compiler, version 14 or higher to take full
@@ -1390,7 +1390,7 @@ src/USER-INTEL/TEST
 
 :line
 
-USER-LB package :link(USER-LB),h4
+USER-LB package :link(PKG-USER-LB),h4
 
 [Contents:]
 
@@ -1411,7 +1411,7 @@ examples/USER/lb :ul
 
 :line
 
-USER-MGPT package :link(USER-MGPT),h4
+USER-MGPT package :link(PKG-USER-MGPT),h4
 
 [Contents:]
 
@@ -1435,7 +1435,7 @@ examples/USER/mgpt :ul
 
 :line
 
-USER-MISC package :link(USER-MISC),h4
+USER-MISC package :link(PKG-USER-MISC),h4
 
 [Contents:]
 
@@ -1455,7 +1455,7 @@ examples/USER/misc :ul
 
 :line
 
-USER-MANIFOLD package :link(USER-MANIFOLD),h4
+USER-MANIFOLD package :link(PKG-USER-MANIFOLD),h4
 
 [Contents:]
 
@@ -1483,7 +1483,7 @@ http://lammps.sandia.gov/movies.html#manifold :ul
 
 :line
 
-USER-MEAMC package :link(USER-MEAMC),h4
+USER-MEAMC package :link(PKG-USER-MEAMC),h4
 
 [Contents:]
 
@@ -1506,7 +1506,7 @@ examples/meam :ul
 
 :line
 
-USER-MESO package :link(USER-MESO),h4
+USER-MESO package :link(PKG-USER-MESO),h4
 
 [Contents:]
 
@@ -1534,7 +1534,7 @@ http://lammps.sandia.gov/movies.html#mesodpd :ul
 
 :line
 
-USER-MOFFF package :link(USER-MOFFF),h4
+USER-MOFFF package :link(PKG-USER-MOFFF),h4
 
 [Contents:]
 
@@ -1564,7 +1564,7 @@ examples/USER/mofff :ul
 
 :line
 
-USER-MOLFILE package :link(USER-MOLFILE),h4
+USER-MOLFILE package :link(PKG-USER-MOLFILE),h4
 
 [Contents:]
 
@@ -1607,7 +1607,7 @@ lib/molfile/README
 
 :line
 
-USER-NETCDF package :link(USER-NETCDF),h4
+USER-NETCDF package :link(PKG-USER-NETCDF),h4
 
 [Contents:]
 
@@ -1646,7 +1646,7 @@ lib/netcdf/README
 
 :line
 
-USER-OMP package :link(USER-OMP),h4
+USER-OMP package :link(PKG-USER-OMP),h4
 
 [Contents:]
 
@@ -1657,7 +1657,7 @@ The "Speed omp"_Speed_omp.html doc page gives details of what hardware
 and compilers are required on your system, and how to build and use
 this package.  Its styles can be invoked at run time via the "-sf omp"
 or "-suffix omp" "command-line switches"_Run_options.html.  Also see
-the "KOKKOS"_#KOKKOS, "OPT"_#OPT, and "USER-INTEL"_#USER-INTEL
+the "KOKKOS"_#PKG-KOKKOS, "OPT"_#PKG-OPT, and "USER-INTEL"_#PKG-USER-INTEL
 packages, which have styles optimized for CPUs.
 
 [Author:] Axel Kohlmeyer (Temple U).
@@ -1695,7 +1695,7 @@ src/USER-OMP/README
 
 :line
 
-USER-PHONON package :link(USER-PHONON),h4
+USER-PHONON package :link(PKG-USER-PHONON),h4
 
 [Contents:]
 
@@ -1714,7 +1714,7 @@ examples/USER/phonon :ul
 
 :line
 
-USER-QMMM package :link(USER-QMMM),h4
+USER-QMMM package :link(PKG-USER-QMMM),h4
 
 [Contents:]
 
@@ -1752,7 +1752,7 @@ lib/qmmm/example-mc/README :ul
 
 :line
 
-USER-QTB package :link(USER-QTB),h4
+USER-QTB package :link(PKG-USER-QTB),h4
 
 [Contents:]
 
@@ -1777,7 +1777,7 @@ examples/USER/qtb :ul
 
 :line
 
-USER-QUIP package :link(USER-QUIP),h4
+USER-QUIP package :link(PKG-USER-QUIP),h4
 
 [Contents:]
 
@@ -1808,12 +1808,12 @@ examples/USER/quip :ul
 
 :line
 
-USER-REAXC package :link(USER-REAXC),h4
+USER-REAXC package :link(PKG-USER-REAXC),h4
 
 [Contents:]
 
 A pair style which implements the ReaxFF potential in C/C++ (in
-contrast to the "REAX package"_#REAX and its Fortran library).  ReaxFF
+contrast to the "REAX package"_#PKG-REAX and its Fortran library).  ReaxFF
 is universal reactive force field.  See the src/USER-REAXC/README file
 for more info on differences between the two packages.  Also two fixes
 for monitoring molecules as bonds are created and destroyed.
@@ -1831,14 +1831,14 @@ examples/reax :ul
 
 :line
 
-USER-SMD package :link(USER-SMD),h4
+USER-SMD package :link(PKG-USER-SMD),h4
 
 [Contents:]
 
 An atom style, fixes, computes, and several pair styles which
 implements smoothed Mach dynamics (SMD) for solids, which is a model
 related to smoothed particle hydrodynamics (SPH) for liquids (see the
-"USER-SPH package"_#USER-SPH).
+"USER-SPH package"_#PKG-USER-SPH).
 
 This package solves solids mechanics problems via a state of the art
 stabilized meshless method with hourglass control.  It can specify
@@ -1868,7 +1868,7 @@ http://lammps.sandia.gov/movies.html#smd :ul
 
 :line
 
-USER-SMTBQ package :link(USER-SMTBQ),h4
+USER-SMTBQ package :link(PKG-USER-SMTBQ),h4
 
 [Contents:]
 
@@ -1888,13 +1888,13 @@ examples/USER/smtbq :ul
 
 :line
 
-USER-SPH package :link(USER-SPH),h4
+USER-SPH package :link(PKG-USER-SPH),h4
 
 [Contents:]
 
 An atom style, fixes, computes, and several pair styles which
 implements smoothed particle hydrodynamics (SPH) for liquids.  See the
-related "USER-SMD package"_#USER-SMD package for smooth Mach dynamics
+related "USER-SMD package"_#PKG-USER-SMD package for smooth Mach dynamics
 (SMD) for solids.
 
 This package contains ideal gas, Lennard-Jones equation of states,
@@ -1920,7 +1920,7 @@ http://lammps.sandia.gov/movies.html#sph :ul
 
 :line
 
-USER-TALLY package :link(USER-TALLY),h4
+USER-TALLY package :link(PKG-USER-TALLY),h4
 
 [Contents:]
 
@@ -1939,7 +1939,7 @@ examples/USER/tally :ul
 
 :line
 
-USER-UEF package :link(USER-UEF),h4
+USER-UEF package :link(PKG-USER-UEF),h4
 
 [Contents:]
 
@@ -1962,7 +1962,7 @@ examples/uef :ul
 
 :line
 
-USER-VTK package :link(USER-VTK),h4
+USER-VTK package :link(PKG-USER-VTK),h4
 
 [Contents:]
 
diff --git a/doc/src/Packages_standard.txt b/doc/src/Packages_standard.txt
index 56ec693185..a79caae141 100644
--- a/doc/src/Packages_standard.txt
+++ b/doc/src/Packages_standard.txt
@@ -31,35 +31,36 @@ int = internal library: provided with LAMMPS, but you may need to build it
 ext = external library: you will need to download and install it on your machine :ul
 
 Package, Description, Doc page, Example, Library
-"ASPHERE"_Packages_details.html#ASPHERE, aspherical particle models, "Howto spherical"_Howto_spherical.html, ellipse, -
-"BODY"_Packages_details.html#BODY, body-style particles, "Howto body"_Howto_body.html, body, -
-"CLASS2"_Packages_details.html#CLASS2, class 2 force fields, "pair_style lj/class2"_pair_class2.html, -, -
-"COLLOID"_Packages_details.html#COLLOID, colloidal particles, "atom_style colloid"_atom_style.html, colloid, -
-"COMPRESS"_Packages_details.html#COMPRESS, I/O compression, "dump */gz"_dump.html, -, sys
-"CORESHELL"_Packages_details.html#CORESHELL, adiabatic core/shell model, "Howto coreshell"_Howto_coreshell.html, coreshell, -
-"DIPOLE"_Packages_details.html#DIPOLE, point dipole particles, "pair_style dipole/cut"_pair_dipole.html, dipole, -
-"GPU"_Packages_details.html#GPU, GPU-enabled styles, "Section gpu"_Speed_gpu.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, int
-"GRANULAR"_Packages_details.html#GRANULAR, granular systems, "Howto granular"_Howto_granular.html, pour, -
-"KIM"_Packages_details.html#KIM, OpenKIM wrapper, "pair_style kim"_pair_kim.html, kim, ext
-"KOKKOS"_Packages_details.html#KOKKOS, Kokkos-enabled styles, "Speed kokkos"_Speed_kokkos.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
-"KSPACE"_Packages_details.html#KSPACE, long-range Coulombic solvers, "kspace_style"_kspace_style.html, peptide, -
-"LATTE"_Packages_details.html#LATTE, quantum DFTB forces via LATTE, "fix latte"_fix_latte.html, latte, ext
-"MANYBODY"_Packages_details.html#MANYBODY, many-body potentials, "pair_style tersoff"_pair_tersoff.html, shear, -
-"MC"_Packages_details.html#MC, Monte Carlo options, "fix gcmc"_fix_gcmc.html, -, -
-"MEAM"_Packages_details.html#MEAM, modified EAM potential, "pair_style meam"_pair_meam.html, meam, int
-"MISC"_Packages_details.html#MISC, miscellanous single-file commands, -, -, -
-"MOLECULE"_Packages_details.html#MOLECULE, molecular system force fields, "Howto bioFF"_Howto_bioFF.html, peptide, -
-"MPIIO"_Packages_details.html#MPIIO, MPI parallel I/O dump and restart, "dump"_dump.html, -, -
-"MSCG"_Packages_details.html#MSCG, multi-scale coarse-graining wrapper, "fix mscg"_fix_mscg.html, mscg, ext
-"OPT"_Packages_details.html#OPT, optimized pair styles, "Speed opt"_Speed_opt.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
-"PERI"_Packages_details.html#PERI, Peridynamics models, "pair_style peri"_pair_peri.html, peri, -
-"POEMS"_Packages_details.html#POEMS, coupled rigid body motion, "fix poems"_fix_poems.html, rigid, int
-"PYTHON"_Packages_details.html#PYTHON, embed Python code in an input script, "python"_python.html, python, sys
-"QEQ"_Packages_details.html#QEQ, QEq charge equilibration, "fix qeq"_fix_qeq.html, qeq, -
-"REAX"_Packages_details.html#REAX, ReaxFF potential (Fortran), "pair_style reax"_pair_reax.html, reax, int
-"REPLICA"_Packages_details.html#REPLICA2, multi-replica methods, "Howto replica"_Howto_replica.html, tad, -
-"RIGID"_Packages_details.html#RIGID, rigid bodies and constraints, "fix rigid"_fix_rigid.html, rigid, -
-"SHOCK"_Packages_details.html#SHOCK, shock loading methods, "fix msst"_fix_msst.html, -, -
-"SNAP"_Packages_details.html#SNAP, quantum-fitted potential, "pair_style snap"_pair_snap.html, snap, -
-"SPIN"_#SPIN, magnetic atomic spin dynamics, "Howto spins"_Howto_spins.html, SPIN, -"SRD"_Packages_details.html#SRD, stochastic rotation dynamics, "fix srd"_fix_srd.html, srd, -
-"VORONOI"_Packages_details.html#VORONOI, Voronoi tesselation, "compute voronoi/atom"_compute_voronoi_atom.html, -, ext :tb(ea=c,ca1=l)
+"ASPHERE"_Packages_details.html#PKG-ASPHERE, aspherical particle models, "Howto spherical"_Howto_spherical.html, ellipse, -
+"BODY"_Packages_details.html#PKG-BODY, body-style particles, "Howto body"_Howto_body.html, body, -
+"CLASS2"_Packages_details.html#PKG-CLASS2, class 2 force fields, "pair_style lj/class2"_pair_class2.html, -, -
+"COLLOID"_Packages_details.html#PKG-COLLOID, colloidal particles, "atom_style colloid"_atom_style.html, colloid, -
+"COMPRESS"_Packages_details.html#PKG-COMPRESS, I/O compression, "dump */gz"_dump.html, -, sys
+"CORESHELL"_Packages_details.html#PKG-CORESHELL, adiabatic core/shell model, "Howto coreshell"_Howto_coreshell.html, coreshell, -
+"DIPOLE"_Packages_details.html#PKG-DIPOLE, point dipole particles, "pair_style dipole/cut"_pair_dipole.html, dipole, -
+"GPU"_Packages_details.html#PKG-GPU, GPU-enabled styles, "Section gpu"_Speed_gpu.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, int
+"GRANULAR"_Packages_details.html#PKG-GRANULAR, granular systems, "Howto granular"_Howto_granular.html, pour, -
+"KIM"_Packages_details.html#PKG-KIM, OpenKIM wrapper, "pair_style kim"_pair_kim.html, kim, ext
+"KOKKOS"_Packages_details.html#PKG-KOKKOS, Kokkos-enabled styles, "Speed kokkos"_Speed_kokkos.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
+"KSPACE"_Packages_details.html#PKG-KSPACE, long-range Coulombic solvers, "kspace_style"_kspace_style.html, peptide, -
+"LATTE"_Packages_details.html#PKG-LATTE, quantum DFTB forces via LATTE, "fix latte"_fix_latte.html, latte, ext
+"MANYBODY"_Packages_details.html#PKG-MANYBODY, many-body potentials, "pair_style tersoff"_pair_tersoff.html, shear, -
+"MC"_Packages_details.html#PKG-MC, Monte Carlo options, "fix gcmc"_fix_gcmc.html, -, -
+"MEAM"_Packages_details.html#PKG-MEAM, modified EAM potential, "pair_style meam"_pair_meam.html, meam, int
+"MISC"_Packages_details.html#PKG-MISC, miscellanous single-file commands, -, -, -
+"MOLECULE"_Packages_details.html#PKG-MOLECULE, molecular system force fields, "Howto bioFF"_Howto_bioFF.html, peptide, -
+"MPIIO"_Packages_details.html#PKG-MPIIO, MPI parallel I/O dump and restart, "dump"_dump.html, -, -
+"MSCG"_Packages_details.html#PKG-MSCG, multi-scale coarse-graining wrapper, "fix mscg"_fix_mscg.html, mscg, ext
+"OPT"_Packages_details.html#PKG-OPT, optimized pair styles, "Speed opt"_Speed_opt.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
+"PERI"_Packages_details.html#PKG-PERI, Peridynamics models, "pair_style peri"_pair_peri.html, peri, -
+"POEMS"_Packages_details.html#PKG-POEMS, coupled rigid body motion, "fix poems"_fix_poems.html, rigid, int
+"PYTHON"_Packages_details.html#PKG-PYTHON, embed Python code in an input script, "python"_python.html, python, sys
+"QEQ"_Packages_details.html#PKG-QEQ, QEq charge equilibration, "fix qeq"_fix_qeq.html, qeq, -
+"REAX"_Packages_details.html#PKG-REAX, ReaxFF potential (Fortran), "pair_style reax"_pair_reax.html, reax, int
+"REPLICA"_Packages_details.html#PKG-REPLICA2, multi-replica methods, "Howto replica"_Howto_replica.html, tad, -
+"RIGID"_Packages_details.html#PKG-RIGID, rigid bodies and constraints, "fix rigid"_fix_rigid.html, rigid, -
+"SHOCK"_Packages_details.html#PKG-SHOCK, shock loading methods, "fix msst"_fix_msst.html, -, -
+"SNAP"_Packages_details.html#PKG-SNAP, quantum-fitted potential, "pair_style snap"_pair_snap.html, snap, -
+"SPIN"_Packages_details.html#PKG-SPIN, magnetic atomic spin dynamics, "Howto spins"_Howto_spins.html, SPIN, -
+"SRD"_Packages_details.html#PKG-SRD, stochastic rotation dynamics, "fix srd"_fix_srd.html, srd, -
+"VORONOI"_Packages_details.html#PKG-VORONOI, Voronoi tesselation, "compute voronoi/atom"_compute_voronoi_atom.html, -, ext :tb(ea=c,ca1=l)
diff --git a/doc/src/Packages_user.txt b/doc/src/Packages_user.txt
index c8728148f9..7157ebead0 100644
--- a/doc/src/Packages_user.txt
+++ b/doc/src/Packages_user.txt
@@ -38,37 +38,37 @@ int = internal library: provided with LAMMPS, but you may need to build it
 ext = external library: you will need to download and install it on your machine :ul
 
 Package, Description, Doc page, Example, Library
-"USER-ATC"_Packages_details.html#USER-ATC, atom-to-continuum coupling, "fix atc"_fix_atc.html, USER/atc, int
-"USER-AWPMD"_Packages_details.html#USER-AWPMD, wave-packet MD, "pair_style awpmd/cut"_pair_awpmd.html, USER/awpmd, int
-"USER-BOCS"_Packages_details.html#USER-BOCS, BOCS bottom up coarse graining, "fix bocs"_fix_bocs.html, USER/bocs, -
-"USER-CGDNA"_Packages_details.html#USER-CGDNA, coarse-grained DNA force fields, src/USER-CGDNA/README, USER/cgdna, -
-"USER-CGSDK"_Packages_details.html#USER-CGSDK, SDK coarse-graining model, "pair_style lj/sdk"_pair_sdk.html, USER/cgsdk, -
-"USER-COLVARS"_Packages_details.html#USER-COLVARS, collective variables library, "fix colvars"_fix_colvars.html, USER/colvars, int
-"USER-DIFFRACTION"_Packages_details.html#USER-DIFFRACTION, virtual x-ray and electron diffraction,"compute xrd"_compute_xrd.html, USER/diffraction, -
-"USER-DPD"_Packages_details.html#USER-DPD, reactive dissipative particle dynamics, src/USER-DPD/README, USER/dpd, -
-"USER-DRUDE"_Packages_details.html#USER-DRUDE, Drude oscillators, "Howto drude"_Howto_drude.html, USER/drude, -
-"USER-EFF"_Packages_details.html#USER-EFF, electron force field,"pair_style eff/cut"_pair_eff.html, USER/eff, -
-"USER-FEP"_Packages_details.html#USER-FEP, free energy perturbation,"compute fep"_compute_fep.html, USER/fep, -
-"USER-H5MD"_Packages_details.html#USER-H5MD, dump output via HDF5,"dump h5md"_dump_h5md.html, -, ext
-"USER-INTEL"_Packages_details.html#USER-INTEL, optimized Intel CPU and KNL styles,"Speed intel"_Speed_intel.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
-"USER-LB"_Packages_details.html#USER-LB, Lattice Boltzmann fluid,"fix lb/fluid"_fix_lb_fluid.html, USER/lb, -
-"USER-MANIFOLD"_Packages_details.html#USER-MANIFOLD, motion on 2d surfaces,"fix manifoldforce"_fix_manifoldforce.html, USER/manifold, -
-"USER-MEAMC"_Packages_details.html#USER-MEAMC, modified EAM potential (C++), "pair_style meam/c"_pair_meam.html, meam, -
-"USER-MESO"_Packages_details.html#USER-MESO, mesoscale DPD models, "pair_style edpd"_pair_meso.html, USER/meso, -
-"USER-MGPT"_Packages_details.html#USER-MGPT, fast MGPT multi-ion potentials, "pair_style mgpt"_pair_mgpt.html, USER/mgpt, -
-"USER-MISC"_Packages_details.html#USER-MISC, single-file contributions, USER-MISC/README, USER/misc, -
-"USER-MOFFF"_Packages_details.html#USER-MOFFF, styles for "MOF-FF"_MOFplus force field, "pair_style buck6d/coul/gauss"_pair_buck6d_coul_gauss.html, USER/mofff, -
-"USER-MOLFILE"_Packages_details.html#USER-MOLFILE, "VMD"_vmd_home molfile plug-ins,"dump molfile"_dump_molfile.html, -, ext
-"USER-NETCDF"_Packages_details.html#USER-NETCDF, dump output via NetCDF,"dump netcdf"_dump_netcdf.html, -, ext
-"USER-OMP"_Packages_details.html#USER-OMP, OpenMP-enabled styles,"Speed omp"_Speed_omp.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
-"USER-PHONON"_Packages_details.html#USER-PHONON, phonon dynamical matrix,"fix phonon"_fix_phonon.html, USER/phonon, -
-"USER-QMMM"_Packages_details.html#USER-QMMM, QM/MM coupling,"fix qmmm"_fix_qmmm.html, USER/qmmm, ext
-"USER-QTB"_Packages_details.html#USER-QTB, quantum nuclear effects,"fix qtb"_fix_qtb.html "fix qbmsst"_fix_qbmsst.html, qtb, -
-"USER-QUIP"_Packages_details.html#USER-QUIP, QUIP/libatoms interface,"pair_style quip"_pair_quip.html, USER/quip, ext
-"USER-REAXC"_Packages_details.html#USER-REAXC, ReaxFF potential (C/C++) ,"pair_style reaxc"_pair_reaxc.html, reax, -
-"USER-SMD"_Packages_details.html#USER-SMD, smoothed Mach dynamics,"SMD User Guide"_PDF/SMD_LAMMPS_userguide.pdf, USER/smd, ext
-"USER-SMTBQ"_Packages_details.html#USER-SMTBQ, second moment tight binding QEq potential,"pair_style smtbq"_pair_smtbq.html, USER/smtbq, -
-"USER-SPH"_Packages_details.html#USER-SPH, smoothed particle hydrodynamics,"SPH User Guide"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, -
-"USER-TALLY"_Packages_details.html#USER-TALLY, pairwise tally computes,"compute XXX/tally"_compute_tally.html, USER/tally, -
-"USER-UEF"_Packages_details.html#USER-UEF, extensional flow,"fix nvt/uef"_fix_nh_uef.html, USER/uef, -
-"USER-VTK"_Packages_details.html#USER-VTK, dump output via VTK, "compute vtk"_dump_vtk.html, -, ext :tb(ea=c,ca1=l)
+"USER-ATC"_Packages_details.html#PKG-USER-ATC, atom-to-continuum coupling, "fix atc"_fix_atc.html, USER/atc, int
+"USER-AWPMD"_Packages_details.html#PKG-USER-AWPMD, wave-packet MD, "pair_style awpmd/cut"_pair_awpmd.html, USER/awpmd, int
+"USER-BOCS"_Packages_details.html#PKG-USER-BOCS, BOCS bottom up coarse graining, "fix bocs"_fix_bocs.html, USER/bocs, -
+"USER-CGDNA"_Packages_details.html#PKG-USER-CGDNA, coarse-grained DNA force fields, src/USER-CGDNA/README, USER/cgdna, -
+"USER-CGSDK"_Packages_details.html#PKG-USER-CGSDK, SDK coarse-graining model, "pair_style lj/sdk"_pair_sdk.html, USER/cgsdk, -
+"USER-COLVARS"_Packages_details.html#PKG-USER-COLVARS, collective variables library, "fix colvars"_fix_colvars.html, USER/colvars, int
+"USER-DIFFRACTION"_Packages_details.html#PKG-USER-DIFFRACTION, virtual x-ray and electron diffraction,"compute xrd"_compute_xrd.html, USER/diffraction, -
+"USER-DPD"_Packages_details.html#PKG-USER-DPD, reactive dissipative particle dynamics, src/USER-DPD/README, USER/dpd, -
+"USER-DRUDE"_Packages_details.html#PKG-USER-DRUDE, Drude oscillators, "Howto drude"_Howto_drude.html, USER/drude, -
+"USER-EFF"_Packages_details.html#PKG-USER-EFF, electron force field,"pair_style eff/cut"_pair_eff.html, USER/eff, -
+"USER-FEP"_Packages_details.html#PKG-USER-FEP, free energy perturbation,"compute fep"_compute_fep.html, USER/fep, -
+"USER-H5MD"_Packages_details.html#PKG-USER-H5MD, dump output via HDF5,"dump h5md"_dump_h5md.html, -, ext
+"USER-INTEL"_Packages_details.html#PKG-USER-INTEL, optimized Intel CPU and KNL styles,"Speed intel"_Speed_intel.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
+"USER-LB"_Packages_details.html#PKG-USER-LB, Lattice Boltzmann fluid,"fix lb/fluid"_fix_lb_fluid.html, USER/lb, -
+"USER-MANIFOLD"_Packages_details.html#PKG-USER-MANIFOLD, motion on 2d surfaces,"fix manifoldforce"_fix_manifoldforce.html, USER/manifold, -
+"USER-MEAMC"_Packages_details.html#PKG-USER-MEAMC, modified EAM potential (C++), "pair_style meam/c"_pair_meam.html, meam, -
+"USER-MESO"_Packages_details.html#PKG-USER-MESO, mesoscale DPD models, "pair_style edpd"_pair_meso.html, USER/meso, -
+"USER-MGPT"_Packages_details.html#PKG-USER-MGPT, fast MGPT multi-ion potentials, "pair_style mgpt"_pair_mgpt.html, USER/mgpt, -
+"USER-MISC"_Packages_details.html#PKG-USER-MISC, single-file contributions, USER-MISC/README, USER/misc, -
+"USER-MOFFF"_Packages_details.html#PKG-USER-MOFFF, styles for "MOF-FF"_MOFplus force field, "pair_style buck6d/coul/gauss"_pair_buck6d_coul_gauss.html, USER/mofff, -
+"USER-MOLFILE"_Packages_details.html#PKG-USER-MOLFILE, "VMD"_vmd_home molfile plug-ins,"dump molfile"_dump_molfile.html, -, ext
+"USER-NETCDF"_Packages_details.html#PKG-USER-NETCDF, dump output via NetCDF,"dump netcdf"_dump_netcdf.html, -, ext
+"USER-OMP"_Packages_details.html#PKG-USER-OMP, OpenMP-enabled styles,"Speed omp"_Speed_omp.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
+"USER-PHONON"_Packages_details.html#PKG-USER-PHONON, phonon dynamical matrix,"fix phonon"_fix_phonon.html, USER/phonon, -
+"USER-QMMM"_Packages_details.html#PKG-USER-QMMM, QM/MM coupling,"fix qmmm"_fix_qmmm.html, USER/qmmm, ext
+"USER-QTB"_Packages_details.html#PKG-USER-QTB, quantum nuclear effects,"fix qtb"_fix_qtb.html "fix qbmsst"_fix_qbmsst.html, qtb, -
+"USER-QUIP"_Packages_details.html#PKG-USER-QUIP, QUIP/libatoms interface,"pair_style quip"_pair_quip.html, USER/quip, ext
+"USER-REAXC"_Packages_details.html#PKG-USER-REAXC, ReaxFF potential (C/C++) ,"pair_style reaxc"_pair_reaxc.html, reax, -
+"USER-SMD"_Packages_details.html#PKG-USER-SMD, smoothed Mach dynamics,"SMD User Guide"_PDF/SMD_LAMMPS_userguide.pdf, USER/smd, ext
+"USER-SMTBQ"_Packages_details.html#PKG-USER-SMTBQ, second moment tight binding QEq potential,"pair_style smtbq"_pair_smtbq.html, USER/smtbq, -
+"USER-SPH"_Packages_details.html#PKG-USER-SPH, smoothed particle hydrodynamics,"SPH User Guide"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, -
+"USER-TALLY"_Packages_details.html#PKG-USER-TALLY, pairwise tally computes,"compute XXX/tally"_compute_tally.html, USER/tally, -
+"USER-UEF"_Packages_details.html#PKG-USER-UEF, extensional flow,"fix nvt/uef"_fix_nh_uef.html, USER/uef, -
+"USER-VTK"_Packages_details.html#PKG-USER-VTK, dump output via VTK, "compute vtk"_dump_vtk.html, -, ext :tb(ea=c,ca1=l)
diff --git a/doc/src/angle_cosine_shift.txt b/doc/src/angle_cosine_shift.txt
index 8e23e1b49f..3a4efad218 100644
--- a/doc/src/angle_cosine_shift.txt
+++ b/doc/src/angle_cosine_shift.txt
@@ -40,10 +40,10 @@ theta (angle) :ul
 
 Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
 functionally the same as the corresponding style without the suffix.
-They have been optimized to run faster, depending on
-your"_Build_package.html doc page kages"_Speed_packages.html doc page.
-The accelerated styles take the same arguments and should produce the
-same results, except for round-off and precision issues.
+They have been optimized to run faster, depending on your available
+hardware, as discussed on the "Speed packages"_Speed_packages.html doc
+page.  The accelerated styles take the same arguments and should
+produce the same results, except for round-off and precision issues.
 
 These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
 USER-OMP and OPT packages, respectively.  They are only enabled if
diff --git a/doc/src/fix_deform.txt b/doc/src/fix_deform.txt
index 6ba713e662..d35c3065a2 100644
--- a/doc/src/fix_deform.txt
+++ b/doc/src/fix_deform.txt
@@ -94,7 +94,7 @@ nvt/sllod"_fix_nvt_sllod.html and "compute
 temp/deform"_compute_temp_deform.html commands for more details.  Note
 that simulation of a continuously extended system (extensional flow)
 can be modeled using the "USER-UEF
-package"_Packages_details.html#USER-UEF and its "fix
+package"_Packages_details.html#PKG-USER-UEF and its "fix
 commands"_fix_nh_uef.html.
 
 For the {x}, {y}, {z} parameters, the associated dimension cannot be
diff --git a/doc/src/fix_nve_dot.txt b/doc/src/fix_nve_dot.txt
index 54b199c1df..06140c2d37 100644
--- a/doc/src/fix_nve_dot.txt
+++ b/doc/src/fix_nve_dot.txt
@@ -44,7 +44,7 @@ A technical report with more information on this integrator can be found
 [Restrictions:]
 
 These pair styles can only be used if LAMMPS was built with the
-"USER-CGDNA"_#USER-CGDNA package and the MOLECULE and ASPHERE package.
+"USER-CGDNA"_Package_details.html#PKG-USER-CGDNA package and the MOLECULE and ASPHERE package.
 See the "Build package"_Build_package.html doc page for more info.
 
 [Related commands:]
diff --git a/doc/src/fix_nve_dotc_langevin.txt b/doc/src/fix_nve_dotc_langevin.txt
index c6148a7165..c021b4fe81 100644
--- a/doc/src/fix_nve_dotc_langevin.txt
+++ b/doc/src/fix_nve_dotc_langevin.txt
@@ -122,7 +122,7 @@ A technical report with more information on this integrator can be found
 [Restrictions:]
 
 These pair styles can only be used if LAMMPS was built with the
-"USER-CGDNA"_#USER-CGDNA package and the MOLECULE and ASPHERE package.
+"USER-CGDNA"_Package_details.html#USER-CGDNA package and the MOLECULE and ASPHERE package.
 See the "Build package"_Build_package.html doc page for more info.
 
 [Related commands:]
-- 
GitLab


From f7164e593e3ea08e42f5df16e235b880b7a88e38 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 9 Aug 2018 20:09:11 +0200
Subject: [PATCH 174/243] fix a few more broken or non-unique links

---
 doc/src/Run_options.txt           | 12 ++++++------
 doc/src/fix_nve_dotc_langevin.txt |  2 +-
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/doc/src/Run_options.txt b/doc/src/Run_options.txt
index b1c1e376da..64c16517d6 100644
--- a/doc/src/Run_options.txt
+++ b/doc/src/Run_options.txt
@@ -15,13 +15,13 @@ letter abbreviation can be used:
 
 "-e or -echo"_#echo
 "-h or -help"_#help
-"-i or -in"_#in
-"-k or -kokkos"_#kokkos
+"-i or -in"_#file
+"-k or -kokkos"_#run-kokkos
 "-l or -log"_#log
 "-nc or -nocite"_#nocite
 "-pk or -package"_#package
 "-p or -partition"_#partition
-"-pl or -plog"_#plot
+"-pl or -plog"_#plog
 "-ps or -pscreen"_#pscreen
 "-r or -restart"_#restart
 "-ro or -reorder"_#reorder
@@ -73,11 +73,11 @@ stdin.
 
 :line
 
-[-kokkos on/off keyword/value ...] :link(kokkos)
+[-kokkos on/off keyword/value ...] :link(run-kokkos)
 
 Explicitly enable or disable KOKKOS support, as provided by the KOKKOS
 package.  Even if LAMMPS is built with this package, as described
-above in "Section 2.3"_#start_3, this switch must be set to enable
+in "Speed kokkos"_Speed_kokkos.html, this switch must be set to enable
 running with the KOKKOS-enabled styles the package provides.  If the
 switch is not set (the default), LAMMPS will operate as if the KOKKOS
 package were not installed; i.e. you can run standard LAMMPS or with
@@ -379,7 +379,7 @@ partition screen files file.N.
 Use variants of various styles if they exist.  The specified style can
 be {cuda}, {gpu}, {intel}, {kk}, {omp}, {opt}, or {hybrid}.  These
 refer to optional packages that LAMMPS can be built with, as described
-above in "Section 2.3"_#start_3.  The "gpu" style corresponds to the
+in "Accelerate performance"_Speed.html.  The "gpu" style corresponds to the
 GPU package, the "intel" style to the USER-INTEL package, the "kk"
 style to the KOKKOS package, the "opt" style to the OPT package, and
 the "omp" style to the USER-OMP package. The hybrid style is the only
diff --git a/doc/src/fix_nve_dotc_langevin.txt b/doc/src/fix_nve_dotc_langevin.txt
index c021b4fe81..7339f251ad 100644
--- a/doc/src/fix_nve_dotc_langevin.txt
+++ b/doc/src/fix_nve_dotc_langevin.txt
@@ -122,7 +122,7 @@ A technical report with more information on this integrator can be found
 [Restrictions:]
 
 These pair styles can only be used if LAMMPS was built with the
-"USER-CGDNA"_Package_details.html#USER-CGDNA package and the MOLECULE and ASPHERE package.
+"USER-CGDNA"_Package_details.html#PKG-USER-CGDNA package and the MOLECULE and ASPHERE package.
 See the "Build package"_Build_package.html doc page for more info.
 
 [Related commands:]
-- 
GitLab


From 630a46ad6764638dda8cd06f1bc88c929bc5e81b Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Thu, 9 Aug 2018 14:53:40 -0400
Subject: [PATCH 175/243] Move Manual_version to Intro

It should not be its own chapter. The intro seems to be the right place for it.
---
 doc/src/Intro.txt          | 1 +
 doc/src/Manual.txt         | 1 -
 doc/src/Manual_version.txt | 2 +-
 doc/src/lammps.book        | 2 +-
 4 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/src/Intro.txt b/doc/src/Intro.txt
index e3eaa40437..4defbed8c4 100644
--- a/doc/src/Intro.txt
+++ b/doc/src/Intro.txt
@@ -17,6 +17,7 @@ These pages provide a brief introduction to LAMMPS.
 .. toctree::
 
    Intro_overview
+   Manual_version
    Intro_features
    Intro_nonfeatures
    Intro_opensource
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index ec85547dec..49fd8d4db2 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -71,7 +71,6 @@ every LAMMPS command.
    :name: userdoc
    :includehidden:
 
-   Manual_version
    Intro
    Install
    Build
diff --git a/doc/src/Manual_version.txt b/doc/src/Manual_version.txt
index 8583eabf86..436e531246 100644
--- a/doc/src/Manual_version.txt
+++ b/doc/src/Manual_version.txt
@@ -7,7 +7,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :line
 
-What does a LAMMPS version mean: :h3
+What does a LAMMPS version mean :h3
 
 The LAMMPS "version" is the date when it was released, such as 1 May
 2014. LAMMPS is updated continuously.  Whenever we fix a bug or add a
diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index c45a930bbc..3e04c54d28 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -1,9 +1,9 @@
 #HTMLDOC 1.8.28
 -t pdf14 -f "../Manual.pdf" --book --toclevels 4 --no-numbered --toctitle "Table of Contents" --title --textcolor #000000 --linkcolor #0000ff --linkstyle plain --bodycolor #ffffff --size Universal --left 1.00in --right 0.50in --top 0.50in --bottom 0.50in --header .t. --header1 ... --footer ..1 --nup 1 --tocheader .t. --tocfooter ..i --portrait --color --no-pscommands --no-xrxcomments --compression=9 --jpeg=0 --fontsize 11.0 --fontspacing 1.2 --headingfont Sans --bodyfont Serif --headfootsize 11.0 --headfootfont Sans-Bold --charset iso-8859-15 --links --embedfonts --pagemode document --pagelayout single --firstpage c1 --pageeffect none --pageduration 10 --effectduration 1.0 --no-encryption --permissions all  --owner-password ""  --user-password "" --browserwidth 680 --no-strict --no-overflow
 Manual.html
-Manual_version.html
 Intro.html
 Intro_overview.html
+Manual_version.html
 Intro_features.html
 Intro_nonfeatures.html
 Intro_opensource.html
-- 
GitLab


From 4db08f53510af9ad53da09185ce20cbd45af820a Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Thu, 9 Aug 2018 16:02:54 -0400
Subject: [PATCH 176/243] Some tweaks and corrections

---
 doc/src/Build.txt        |  3 +++
 doc/src/Build_basics.txt | 10 ++-------
 doc/src/Build_cmake.txt  | 27 +++++++++++-----------
 doc/src/Build_extras.txt | 48 ++++++++++++++++++++--------------------
 4 files changed, 42 insertions(+), 46 deletions(-)

diff --git a/doc/src/Build.txt b/doc/src/Build.txt
index 653c217d4c..287e151c31 100644
--- a/doc/src/Build.txt
+++ b/doc/src/Build.txt
@@ -27,6 +27,9 @@ doc page.
    Build_basics
    Build_settings
    Build_package
+
+.. toctree::
+
    Build_extras
 
 END_RST -->
diff --git a/doc/src/Build_basics.txt b/doc/src/Build_basics.txt
index b2816b7acb..454e5fbe35 100644
--- a/doc/src/Build_basics.txt
+++ b/doc/src/Build_basics.txt
@@ -301,15 +301,9 @@ want to copy files to is protected.
 
 [CMake variable]:
 
-cmake CMAKE_INSTALL_PREFIX=path \[options ...\] ~/lammps/cmake
+cmake -D CMAKE_INSTALL_PREFIX=path \[options ...\] ~/lammps/cmake
 make                        # perform make after CMake command
-make install                # perform the installation :pre
-
-Note that The CMAKE_INSTALL_PREFIX=path is not a -D variable like
-other LAMMPS settings, but rather an option to the cmake command.  The
-path is where to install the LAMMPS files.
-
-TODO: is this sub-section correct?
+make install                # perform the installation into prefix :pre
 
 [Traditional make]:
 
diff --git a/doc/src/Build_cmake.txt b/doc/src/Build_cmake.txt
index 2bc10d1463..b4f160f371 100644
--- a/doc/src/Build_cmake.txt
+++ b/doc/src/Build_cmake.txt
@@ -91,8 +91,8 @@ cmake directory which contains the CMakeLists.txt file.
 The argument can be preceeded or followed by various CMake
 command-line options.  Several useful ones are:
 
-CAKE_INSTALL_PREFIX=path  # where to install LAMMPS executable/lib if desired
-CMAKE_BUILD_TYPE=type     # type = Release or Debug
+-D CMAKE_INSTALL_PREFIX=path  # where to install LAMMPS executable/lib if desired
+-D CMAKE_BUILD_TYPE=type     # type = Release or Debug
 -G output                 # style of output CMake generates
 -DVARIABLE=value          # setting for a LAMMPS feature to enable
 -D VARIABLE=value         # ditto, but cannot come after CMakeLists.txt dir
@@ -103,7 +103,7 @@ All of these variable names are upper-case and their values are
 lower-case, e.g. -D LAMMPS_SIZES=smallbig.  For boolean values, any of
 these forms can be used: yes/no, on/off, 1/0.
 
-By default CMake generates a Makefile to perform the LAMMPS build.
+On Unix/Linux CMake generates a Makefile by default to perform the LAMMPS build.
 Alternate forms of build info can be generated via the -G switch,
 e.g. Visual Studio on a Windows machine.  Type "cmake --help" to see
 the "Generator" styles of output your system supports.
@@ -118,22 +118,22 @@ CMake creates a CMakeCache.txt file when it runs.  This stores all the
 settings, so that running CMake again from the same directory will
 inherit those settings.
 
-TODO: explain how to change settings on a subsequent cmake in the same
-build dir.  In that case is "." the final arg of cmake?
+If you later want to change a setting you can rerun cmake in the build
+directory with different setting. Please note that some automatically
+detected variables will not change their value. In these cases it is
+usually better to start with a fresh build directory.
 
 [Curses version (terminal-style menu) of CMake]:
 
 ccmake ~/lammps/cmake :pre
 
-TODO: give brief explanation of how to find and toggle options, how to
-perform the generate, how to use it multiple times.
+Please see the "ccmake manual"_https://cmake.org/cmake/help/latest/manual/ccmake.1.html for more information.
 
 [GUI version of CMake]:
 
 cmake-gui ~/lammps/cmake :pre
 
-TODO: give brief explanation of how to find and toggle options, how to
-perform the generate, how to use it multiple times.
+Please see the "cmake-gui manual"_https://cmake.org/cmake/help/latest/manual/cmake-gui.1.html for more information.
 
 :line
 
@@ -152,8 +152,7 @@ module list            # is a cmake module is already loaded
 module avail           # is a cmake module available?
 module load cmake3     # load cmake module with appropriate name :pre
 
-If you do not have CMake or a new enough version, you can install it
-as follows:
-
-TODO: give install instructions for Linux, Mac, Windows
-
+If you do not have CMake or a new enough version, you can download the latest
+version at "https://cmake.org/download/"_https://cmake.org/download/.
+Instructions on how to install it on various platforms can be found
+"here"_https://cmake.org/install/.
diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
index d940ed23cd..9a03d0092f 100644
--- a/doc/src/Build_extras.txt
+++ b/doc/src/Build_extras.txt
@@ -68,7 +68,7 @@ name.
 
 :line
 
-GPU package :h3,link(gpu)
+GPU package :h4,link(gpu)
 
 To build with this package, you need to choose options for precision
 and which GPU hardware to build for.  To build with make you also need
@@ -134,7 +134,7 @@ GPU library.
 
 :line
  
-KIM package :h3,link(kim)
+KIM package :h4,link(kim)
 
 To build with this package, the KIM library must be downloaded and
 built on your system.  It must include the KIM models that you want to
@@ -178,7 +178,7 @@ make lib-kim args="-p /usr/local/kim-api -a EAM_Dynamo_Ackland_W__MO_14162719659
 
 :line
  
-KOKKOS package :h3,link(kokkos)
+KOKKOS package :h4,link(kokkos)
 
 To build with this package, you have to choose a Kokkos setting for
 either CPU (multi-threading via OpenMP) or KNL (OpenMP) or GPU (Cuda)
@@ -241,7 +241,7 @@ do not recommend building with other acceleration packages installed
 
 :line
  
-LATTE package :h3,link(latte)
+LATTE package :h4,link(latte)
 
 To build with this package, you must download and build the LATTE
 library.
@@ -272,7 +272,7 @@ the compiler you use on your system to build LATTE.
 
 :line
  
-MEAM package :h3,link(meam)
+MEAM package :h4,link(meam)
 
 NOTE: You should test building the MEAM library with both the Intel
 and GNU compilers to see if a simulation runs faster with one versus
@@ -307,7 +307,7 @@ file.
 
 :line
  
-MSCG package :h3,link(mscg)
+MSCG package :h4,link(mscg)
 
 Before building LAMMPS with this package, you must first download and
 build the MS-CG library.  
@@ -342,7 +342,7 @@ You should not need to edit the lib/mscg/Makefile.lammps file.
 
 :line
 
-OPT package :h3,link(opt)
+OPT package :h4,link(opt)
 
 [CMake build]:
 
@@ -359,7 +359,7 @@ CCFLAGS: add -restrict for Intel compilers :ul
 
 :line
  
-POEMS package :h3,link(poems)
+POEMS package :h4,link(poems)
 
 [CMake build]:
 
@@ -388,7 +388,7 @@ a corresponding Makefile.lammps.machine file.
 
 :line
  
-PYTHON package :h3,link(python)
+PYTHON package :h4,link(python)
 
 Building with the PYTHON package assumes you have a Python shared
 library available on your system, which needs to be a Python 2
@@ -407,7 +407,7 @@ process.  You should only need to create a new Makefile.lammps.* file
 
 :line
  
-REAX package :h3,link(reax)
+REAX package :h4,link(reax)
 
 [CMake build]:
 
@@ -438,7 +438,7 @@ file.
 
 :line
 
-VORONOI package :h3,link(voronoi)
+VORONOI package :h4,link(voronoi)
 
 [CMake build]:
 
@@ -466,7 +466,7 @@ the lib/voronoi/Makefile.lammps file.
 :line
 :line
 
-USER-ATC package :h3,link(user-atc)
+USER-ATC package :h4,link(user-atc)
 
 [CMake build]:
 
@@ -507,7 +507,7 @@ make lib-linalg args="-m gfortran"  # build with GNU Fortran compiler :pre
 
 :line
 
-USER-AWPMD package :h3,link(user-awpmd)
+USER-AWPMD package :h4,link(user-awpmd)
 
 [CMake build]:
 
@@ -547,7 +547,7 @@ make lib-linalg args="-m gfortran"  # build with GNU Fortran compiler :pre
 
 :line
 
-USER-COLVARS package :h3,link(user-colvars)
+USER-COLVARS package :h4,link(user-colvars)
 
 [CMake build]:
 
@@ -577,7 +577,7 @@ a corresponding Makefile.lammps.machine file.
 
 :line
 
-USER-H5MD package :h3,link(user-h5md)
+USER-H5MD package :h4,link(user-h5md)
 
 [CMake build]:
 
@@ -608,7 +608,7 @@ file.
 
 :line
 
-USER-INTEL package :h3,link(user-intel)
+USER-INTEL package :h4,link(user-intel)
 
 [CMake build]:
 
@@ -651,7 +651,7 @@ explained on the "Speed intel"_Speed_intel.html doc page.
 
 :line
 
-USER-MOLFILE package :h3,link(user-molfile)
+USER-MOLFILE package :h4,link(user-molfile)
 
 [CMake build]:
 
@@ -668,7 +668,7 @@ lib/molfile/Makefile.lammps for details.
 
 :line
 
-USER-NETCDF package :h3,link(user-netcdf)
+USER-NETCDF package :h4,link(user-netcdf)
 
 [CMake build]:
 
@@ -685,7 +685,7 @@ lib/netcdf/README for details.
 
 :line
 
-USER-OMP package :h3,link(user-omp)
+USER-OMP package :h4,link(user-omp)
 
 [CMake build]:
 
@@ -698,7 +698,7 @@ LINKFLAGS: add -fopenmp :ul
 
 :line
 
-USER-QMMM package :h3,link(user-qmmm)
+USER-QMMM package :h4,link(user-qmmm)
 
 The LAMMPS executable these steps produce is not yet functional for a
 QM/MM simulation.  You must also build Quantum ESPRESSO and create a
@@ -736,7 +736,7 @@ usual manner:
 
 :line
 
-USER-QUIP package :h3,link(user-quip)
+USER-QUIP package :h4,link(user-quip)
 
 [CMake build]:
 
@@ -756,11 +756,11 @@ settings to successfully build on your system.
 
 :line
 
-USER-SMD package :h3,link(user-smd)
+USER-SMD package :h4,link(user-smd)
 
 [CMake build]:
 
--D EIGEN3_INCLUDE_DIR 	
+-D EIGEN3_INCLUDE_DIR=path
 
 [Traditional make]:
 
@@ -784,7 +784,7 @@ usual manner:
 
 :line
 
-USER-VTK package :h3,link(user-vtk)
+USER-VTK package :h4,link(user-vtk)
 
 [CMake build]:
 
-- 
GitLab


From edb535d36fad7ca1d2dd144f6659db7f77a534cf Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Thu, 9 Aug 2018 17:08:15 -0400
Subject: [PATCH 177/243] Fix some of the missing TODOs in cmake docs

---
 doc/src/Build_extras.txt | 68 +++++++++++++++++++++++++++++-----------
 1 file changed, 50 insertions(+), 18 deletions(-)

diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
index 9a03d0092f..d6b0d052b5 100644
--- a/doc/src/Build_extras.txt
+++ b/doc/src/Build_extras.txt
@@ -159,7 +159,10 @@ package?" page.
 
 [CMake build]:
 
-TODO: how to do this
+-D PKG_KIM=on            # enable KIM package
+-D DOWNLOAD_KIM=value    # download OpenKIM API v1 for build, value = off (default) or on
+-D KIM_LIBRARY=path      # (only needed if at custom location) path to KIM shared library
+-D KIM_INCLUDE_DIR=path  # (only needed if at custom location) path to KIM include directory :pre
 
 [Traditional make]:
 
@@ -248,7 +251,9 @@ library.
 
 [CMake build]:
 
-TODO: how to do this
+-D PKG_LATTE=on            # enable LATTE package
+-D DOWNLOAD_LATTE=value    # download LATTE for build, value = off (default) or on
+-D LATTE_LIBRARY=path      # (only needed if at custom location) path to LATTE shared library :pre
 
 [Traditional make]:
 
@@ -280,7 +285,7 @@ the other on your system.
 
 [CMake build]:
 
-TODO: automatic, i.e. nothing to do?
+-D PKG_MEAM=on            # enable MEAM package :pre
 
 [Traditional make]:
 
@@ -314,7 +319,10 @@ build the MS-CG library.
 
 [CMake build]:
 
-TODO: how to do this
+-D PKG_MSCG=on            # enable MSCG package
+-D DOWNLOAD_MSCG=value    # download MSCG for build, value = off (default) or on
+-D MSCG_LIBRARY=path      # (only needed if at custom location) path to MSCG shared library
+-D MSCG_INCLUDE_DIR=path  # (only needed if at custom location) path to MSCG include directory :pre
 
 [Traditional make]:
 
@@ -346,7 +354,7 @@ OPT package :h4,link(opt)
 
 [CMake build]:
 
-TODO: automatic, i.e. nothing to do?
+-D PKG_OPT=on            # enable OPT package :pre
 
 [Traditional make]:
 
@@ -363,7 +371,7 @@ POEMS package :h4,link(poems)
 
 [CMake build]:
 
-TODO: automatic, i.e. nothing to do?
+-D PKG_POEMS=on            # enable POEMS package :pre
 
 [Traditional make]:
 
@@ -397,7 +405,13 @@ lib/python/README for more details.
 
 [CMake build]:
 
-TODO: automatic, i.e. nothing to do?
+-D PKG_PYTHON=on            # enable PYTHON package
+-D PYTHON_EXECUTABLE=path   # path to Python executable which should be used :pre
+
+If you want to use a different Python version other than your system default, you can
+either create a virtualenv, activate it and then run cmake or use the PYTHON_EXECUTABLE
+variable to specify which Python interpreter should be used. Please note that you will
+also need to have the development headers installed, e.g. python2-devel.
 
 [Traditional make]:
 
@@ -411,7 +425,7 @@ REAX package :h4,link(reax)
 
 [CMake build]:
 
-TODO: automatic, i.e. nothing to do?
+-D PKG_REAX=on            # enable REAX package :pre
 
 [Traditional make]:
 
@@ -442,7 +456,10 @@ VORONOI package :h4,link(voronoi)
 
 [CMake build]:
 
-TODO: how to do this
+-D PKG_VORONOI=on            # enable VORONOI package
+-D DOWNLOAD_VORO=value    # download VORO for build, value = off (default) or on
+-D VORO_LIBRARY=path      # (only needed if at custom location) path to VORO shared library
+-D VORO_INCLUDE_DIR=path  # (only needed if at custom location) path to VORO include directory :pre
 
 [Traditional make]:
 
@@ -470,7 +487,8 @@ USER-ATC package :h4,link(user-atc)
 
 [CMake build]:
 
-TODO: automatic, i.e. nothing to do?
+-D PKG_USER-ATC=on            # enable USER-ATC package
+-D PKG_MANYBODY=on            # requires MANYBODY package :pre
 
 [Traditional make]:
 
@@ -511,7 +529,7 @@ USER-AWPMD package :h4,link(user-awpmd)
 
 [CMake build]:
 
-TODO: automatic, i.e. nothing to do?
+-D PKG_USER-AWPMD=on            # enable USER-AWPMD package :pre
 
 [Traditional make]:
 
@@ -551,7 +569,7 @@ USER-COLVARS package :h4,link(user-colvars)
 
 [CMake build]:
 
-TODO: automatic, i.e. nothing to do?
+-D PKG_USER-COLVARS=on            # enable USER-COLVARS package :pre
 
 [Traditional make]:
 
@@ -581,7 +599,11 @@ USER-H5MD package :h4,link(user-h5md)
 
 [CMake build]:
 
-TODO: automatic, i.e. nothing to do?
+-D PKG_USER-H5MD=on            # enable USER-H5MD package :pre
+
+This will autodetect the H5MD library if it is installed on your system at standard locations.
+Several advanced H5MD options exist if you need to specify where it was installed. Run with
+ccmake to see these options.
 
 [Traditional make]:
 
@@ -655,7 +677,7 @@ USER-MOLFILE package :h4,link(user-molfile)
 
 [CMake build]:
 
-TODO: automatic, i.e. nothing to do?
+-D PKG_USER-MOLFILE=on            # enable USER-MOLFILE package :pre
 
 [Traditional make]:
 
@@ -672,7 +694,11 @@ USER-NETCDF package :h4,link(user-netcdf)
 
 [CMake build]:
 
-TODO: automatic, i.e. nothing to do?
+-D PKG_USER-NETCDF=on            # enable USER-NETCDF package :pre
+
+This will autodetect the NETCDF library if it is installed on your system at standard locations.
+Several advanced NETCDF options exist if you need to specify where it was installed. Run with
+ccmake to see these options.
 
 [Traditional make]:
 
@@ -689,7 +715,8 @@ USER-OMP package :h4,link(user-omp)
 
 [CMake build]:
 
-TODO: automatic, i.e. nothing to do?
+-D PKG_USER-OMP=on            # enable USER-OMP package
+-D BUILD_OMP=on               # enable OpenMP support :pre
 
 [Traditional make]:
 
@@ -760,7 +787,8 @@ USER-SMD package :h4,link(user-smd)
 
 [CMake build]:
 
--D EIGEN3_INCLUDE_DIR=path
+-D PKG_USER-SMD=on            # enable USER-SMD package
+-D EIGEN3_INCLUDE_DIR=path    # path to include directory of Eigen library :pre
 
 [Traditional make]:
 
@@ -788,7 +816,11 @@ USER-VTK package :h4,link(user-vtk)
 
 [CMake build]:
 
-TODO: automatic, i.e. nothing to do?
+-D PKG_USER-VTK=on            # enable USER-VTK package :pre
+
+This will autodetect the VTK library if it is installed on your system at standard locations.
+Several advanced VTK options exist if you need to specify where it was installed. Run with
+ccmake to see these options.
 
 [Traditional make]:
 
-- 
GitLab


From 76289cd955d1bd6fc5397fa150a66cbdd0845b3b Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Thu, 9 Aug 2018 17:50:55 -0400
Subject: [PATCH 178/243] Add LAMMPS shared library instructions for CMake

---
 doc/src/Python_shlib.txt | 40 +++++++++++++++++++++++++++++++++++++++-
 1 file changed, 39 insertions(+), 1 deletion(-)

diff --git a/doc/src/Python_shlib.txt b/doc/src/Python_shlib.txt
index 18775cd2fd..206f56688c 100644
--- a/doc/src/Python_shlib.txt
+++ b/doc/src/Python_shlib.txt
@@ -9,6 +9,8 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 Build LAMMPS as a shared library :h3
 
+Build LAMMPS as a shared library using make :h4
+
 Instructions on how to build LAMMPS as a shared library are given on
 the "Build_basics"_Build_basics.html doc page.  A shared library is
 one that is dynamically loadable, which is what Python requires to
@@ -32,4 +34,40 @@ extra libraries must also be shared libraries.  If the LAMMPS
 shared-library build fails with an error complaining about this, see
 the "Build_basics"_Build_basics.html doc page.
 
-TODO: Also include CMake info on this
+Build LAMMPS as a shared library using CMake :h4
+
+When using CMake the following two options are necessary to generate the LAMMPS
+shared library:
+
+-D BUILD_LIB=on            # enable building LAMMPS as a library
+-D BUILD_SHARED_LIBS=on    # enable building of LAMMPS shared library (both options are needed!) :pre
+
+What this does is create a liblammps.so which contains the majority of LAMMPS
+code. The generated lmp binary also dynamically links to this library. This
+means that either this liblammps.so file has to be in the same directory, a system
+library path (e.g. /usr/lib64/) or in the LD_LIBRARY_PATH.
+
+If you want to use the shared library with Python the recommended way is to create a virtualenv and use it as
+CMAKE_INSTALL_PREFIX.
+
+# create virtualenv
+virtualenv --python=$(which python3) myenv3
+source myenv3/bin/activate :pre
+
+# build library
+mkdir build
+cd build
+cmake -D PKG_PYTHON=on -D BUILD_LIB=on -D BUILD_SHARED_LIBS=on -D CMAKE_INSTALL_PREFIX=$VIRTUAL_ENV ../cmake
+make -j 4 :pre
+
+# install into prefix
+make install :pre
+
+This will also install the Python module into your virtualenv. Since virtualenv
+doesn't change your LD_LIBRARY_PATH, you still need to add its lib64 folder to
+it, which contains the installed liblammps.so.
+
+export LD_LIBRARY_PATH=$VIRTUAL_ENV/lib64:$LD_LIBRARY_PATH :pre
+
+Starting Python outside (!) of your build directory, but with the virtualenv
+enabled and with the LD_LIBRARY_PATH set gives you access to LAMMPS via Python.
-- 
GitLab


From 0b523cb48e2fcb884a273b3d76474d2c19ae5c33 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Fri, 10 Aug 2018 11:38:59 +0200
Subject: [PATCH 179/243] some rewording and updates for the traditional and
 cmake documentation

---
 doc/src/Build.txt        |   8 ++-
 doc/src/Build_basics.txt |   2 +-
 doc/src/Build_cmake.txt  | 138 ++++++++++++++++++++++++---------------
 doc/src/Build_make.txt   |  48 +++++++++-----
 doc/src/Run_basics.txt   |  24 +++----
 5 files changed, 134 insertions(+), 86 deletions(-)

diff --git a/doc/src/Build.txt b/doc/src/Build.txt
index 287e151c31..76aa95de55 100644
--- a/doc/src/Build.txt
+++ b/doc/src/Build.txt
@@ -10,9 +10,11 @@ Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Run.html :c
 Build LAMMPS :h2
 
 LAMMPS can be built as an executable or library from source code via
-either CMake or traditional make.  As an alternative you can download
-a pre-built executable file as described on the "Install"_Install.html
-doc page.
+either traditional makefiles (which may require manual editing)
+for use with GNU make or gmake, or a build environment generated by CMake
+(Unix Makefiles, Xcode, Visual Studio, KDevelop or more).  As an
+alternative you can download a package with pre-built executables
+as described on the "Install"_Install.html doc page.
 
 <!-- RST
 
diff --git a/doc/src/Build_basics.txt b/doc/src/Build_basics.txt
index 454e5fbe35..ccfb2b444c 100644
--- a/doc/src/Build_basics.txt
+++ b/doc/src/Build_basics.txt
@@ -301,7 +301,7 @@ want to copy files to is protected.
 
 [CMake variable]:
 
-cmake -D CMAKE_INSTALL_PREFIX=path \[options ...\] ~/lammps/cmake
+cmake -D CMAKE_INSTALL_PREFIX=path \[options ...\] ../cmake
 make                        # perform make after CMake command
 make install                # perform the installation into prefix :pre
 
diff --git a/doc/src/Build_cmake.txt b/doc/src/Build_cmake.txt
index b4f160f371..903c92f584 100644
--- a/doc/src/Build_cmake.txt
+++ b/doc/src/Build_cmake.txt
@@ -18,32 +18,42 @@ for how to use CMake to build LAMMPS.  If you are new to CMake it is a
 good place to start:
 
 "Bulding LAMMPS using
-CMake"_https://github.com/rbberger/lammps/tree/cmake_documentation/cmake
-
+CMake"_https://github.com/lammps/lammps/blob/master/cmake/README.md
 :line
 
-Building LAMMPS with CMake is a two-step process.  First use CMake to
-create a Makefile.  Then use the standard make command to build
-LAMMPS, which uses the created Makefile.
+Building LAMMPS with CMake is a two-step process.  First you use CMake
+to create a build environment in a new folder.  On Linux systems, this
+will be based on makefiles for use with make.  Then you use the make
+command to build LAMMPS, which uses the created Makefile(s). Example:
+
+cd lammps                        # change to the folder with the LAMMPS sources
+mkdir build; cd build            # create a new dir for build          
+cmake ../cmake \[options ...\]   # configuration with (command-line) cmake
+make                             # compilation :pre
+
+The cmake command will detect available features, enable selected
+packages and options, and will generate the build environment.  The make
+command will then compile and link LAMMPS, producing (by default) an
+executable called "lmp" and a library called "liblammps.a" in the
+"build" folder.
 
-mkdir mydir; cd mydir                  # create a new dir for build          
-cmake ~/lammps/cmake \[options ...\]   # command-line version
-ccmake ~/lammps/cmake                  # curses version (terminal-style menu)
-cmake-gui ~/lammps/cmake               # GUI version
-make                                   # traditional make command
-make install                           # optional, copy LAMMPS executable & library elsewhere :pre
+If your machine has multiple CPU cores (most do these days), using a
+command like "make -jN" (with N being the number of available local CPU
+cores) can be much faster.  If you plan to do development on LAMMPS or
+may need to recompile LAMMPS repeatedly, the installation of the ccache
+(= Compiler Cache) software may speed up compilation even more.
 
-The make command will compile and link LAMMPS, producing the
-executable lmp and the library liblammps.a in mydir.
+After compilation, you optionally, can copy the LAMMPS executable and
+library into your system folders (by default under /usr/local) with:
 
-If your machine has multiple cores (most do), using a command like
-"make -j" will be much faster.
+make install    # optional, copy LAMMPS executable & library elsewhere :pre
 
 :line
 
-There are 3 variants of CMake: a command-line verison, a curses
-version (teminal-style menu), and a GUI version.  You can use any of
-them to build LAMMPS.  All the versions produce a Makefile as their
+There are 3 variants of CMake: a command-line verison (cmake), a text mode
+UI version (ccmake), and a graphical GUI version (cmake-GUI).  You can use
+any of them interchangeably to configure and create the LAMMPS build
+environment.  On Linux all the versions produce a Makefile as their
 output.  See more details on each below.
 
 You can specify a variety of options with any of the 3 versions, which
@@ -51,39 +61,41 @@ affect how the build is performed and what is included in the LAMMPS
 executable.  Links to pages explaining all the options are listed on
 the "Build"_Build.html doc page.
 
-Perform the build in a new directory you create.  It can be a sub-dir
-within lammps/cmake or anywhere you wish.  You can perform separate
-builds, with different options, in as many directories as you like.
-All the auxiliary files created by the build (executable, object
-files, log files, etc) are stored in that directory or sub-directories
-within it that CMake creates.
-
-NOTE: To perform a CMake build, no packages can be installed in the
-LAMMPS src dir.  Likewise no style*.h or a lmpinstalledpkgs.h file can
-exist, which are auto-generated by "building LAMMPS via traditional
-make"_Build_make.html.  CMake detects if this is not the case and
+You must perform the CMake build system generation and compilation in 
+a new directory you create.  It can be anywhere on your local machine;
+in the following, we will assume, that you are building in the folder
+"lammps/build".  You can perform separate builds independently at the
+same time and with different options, for as long as you put each of
+them into a separate directory. There can be as many build directories
+as you like. All the auxiliary files created by the build (executable,
+object files, log files, etc) are stored in that directory or
+sub-directories within it that CMake creates.
+
+NOTE: To perform a CMake build, no packages may be installed or a build
+attempted in the LAMMPS src folder using the "conventional build
+procedure"_Build_make.html.  CMake detects if this is the case and
 generates an error, telling you to type "make no-all purge" in the src
 directory to un-install all packages.  The purge removes all the
 auto-generated *.h files.
 
-You must have CMake version 2.8 or later on your system to build
-LAMMPS.  If you include the GPU package, version 3.2 or later is
+You must have CMake version 2.8 or later on your system to build LAMMPS.
+If you include the GPU or KOKKOS packages, CMake version 3.2 or later is
 required.  Installation instructions for CMake are below.
 
 After the initial build, if you edit LAMMPS source files, or add your
 own new files to the source directory, you can just re-type make from
 your build directory and it will re-compile only the files that have
-changed.  If you want to change CMake options, you can remove the
-cache file CMakeCache.txt in the build directory and start over.  Or
-you can run cmake again from the same build directory and alter
-various options; see details below.
+changed.  If you want to change CMake options you can run cmake (or
+ccmake or cmake-gui) again from the same build directory and alter
+various options; see details below.  Or you can remove the entire build
+folder, recreate the directory and start over.
 
 :line
 
 [Command-line version of CMake]:
 
-cmake \[options ...\] ~/lammps/cmake      # build from any dir
-cmake \[options ...\] ..                  # build from lammps/cmake/newdir :pre
+cmake \[options ...\] /path/to/lammps/cmake  # build from any dir
+cmake \[options ...\] ../cmake               # build from lammps/build :pre
 
 The cmake command takes one required argument, which is the LAMMPS
 cmake directory which contains the CMakeLists.txt file.
@@ -103,20 +115,23 @@ All of these variable names are upper-case and their values are
 lower-case, e.g. -D LAMMPS_SIZES=smallbig.  For boolean values, any of
 these forms can be used: yes/no, on/off, 1/0.
 
-On Unix/Linux CMake generates a Makefile by default to perform the LAMMPS build.
-Alternate forms of build info can be generated via the -G switch,
-e.g. Visual Studio on a Windows machine.  Type "cmake --help" to see
-the "Generator" styles of output your system supports.
+On Unix/Linux CMake generates a Makefile by default to perform the
+LAMMPS build.  Alternate forms of build info can be generated via the 
+-G switch, e.g. Visual Studio on a Windows machine, Xcode on MacOS or
+KDevelop on Linux.  Type "cmake --help" to see the "Generator" styles
+of output your system supports.
 
 NOTE: When CMake runs, it prints configuration info to the screen.
-You should scan this to verify all the features you requested were
-enabled, including packages.  You can also see what compiler and
+You should review this to verify all the features you requested were
+enabled, including packages.  You can also see what compilers and
 compile options will be used for the build.  Any errors will also be
 flagged, e.g. mis-typed variable names or variable values.
 
 CMake creates a CMakeCache.txt file when it runs.  This stores all the
-settings, so that running CMake again from the same directory will
-inherit those settings.
+settings, so that when running CMake again you can use the current
+folder '.' instead of the path to the LAMMPS cmake folder as the
+required argument to the CMake command. Either way the existing
+settings will be inherited unless the CMakeCache.txt file is removed.
 
 If you later want to change a setting you can rerun cmake in the build
 directory with different setting. Please note that some automatically
@@ -125,15 +140,28 @@ usually better to start with a fresh build directory.
 
 [Curses version (terminal-style menu) of CMake]:
 
-ccmake ~/lammps/cmake :pre
+ccmake ../cmake :pre
 
-Please see the "ccmake manual"_https://cmake.org/cmake/help/latest/manual/ccmake.1.html for more information.
+You initiate the configuration and build environment generation steps
+separately. For the first you have to type [c], for the second you have
+to type [g]. You may need to type [c] multiple times, and may be
+required to edit some of the entries of CMake configuration variables in
+between.  Please see the "ccmake
+manual"_https://cmake.org/cmake/help/latest/manual/ccmake.1.html for
+more information.
 
 [GUI version of CMake]:
 
-cmake-gui ~/lammps/cmake :pre
+cmake-gui ../cmake :pre
 
-Please see the "cmake-gui manual"_https://cmake.org/cmake/help/latest/manual/cmake-gui.1.html for more information.
+You initiate the configuration and build environment generation steps
+separately. For the first you have to click on the [Configure] button,
+for the second you have to click on the [Generate] button.  You may need
+to click on [Configure] multiple times, and may be required to edit some
+of the entries of CMake configuration variables in between.  Please see
+the "cmake-gui
+manual"_https://cmake.org/cmake/help/latest/manual/cmake-gui.1.html for
+more information.
 
 :line
 
@@ -145,14 +173,16 @@ which cmake             # do you have it?
 which cmake3            # version 3 may have this name
 cmake --version         # what specific version you have :pre
 
-On clusters or supercomputers which use modules to manage software
-packages, do this:
+On clusters or supercomputers which use environment modules to manage
+software packages, do this:
 
 module list            # is a cmake module is already loaded
 module avail           # is a cmake module available?
 module load cmake3     # load cmake module with appropriate name :pre
 
-If you do not have CMake or a new enough version, you can download the latest
-version at "https://cmake.org/download/"_https://cmake.org/download/.
-Instructions on how to install it on various platforms can be found
+Most Linux distributions offer precompiled cmake packages through their
+package management system. If you do not have CMake or a new enough
+version, you can download the latest version at
+"https://cmake.org/download/"_https://cmake.org/download/.  Instructions
+on how to install it on various platforms can be found
 "here"_https://cmake.org/install/.
diff --git a/doc/src/Build_make.txt b/doc/src/Build_make.txt
index 4603a986a3..e8926df6ad 100644
--- a/doc/src/Build_make.txt
+++ b/doc/src/Build_make.txt
@@ -9,15 +9,18 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 Build LAMMPS with make :h3
 
-Building LAMMPS with traditional make requires you have a
-Makefile.machine file in the src/MAKE directory appropriate for your
-system (see below).  It can list various options for what to
-include/exclude in a LAMMPS build.  To include LAMMPS packages you
-must install them first, as discussed on the "Build
-package"_Build_package.html doc page.  If the packages use provided or
-external libraries, you must build those libraries before building
-LAMMPS.  Building "LAMMPS with CMake"_Build_cmake.html can automate
-all of this, so we suggest you try it first.
+Building LAMMPS with traditional makefiles requires, that you have a
+Makefile."machine" file in the src/MAKE, src/MAKE/MACHINES,
+src/MAKE/OPTIONS, or src/MAKE/MINE directory, which is appropriate
+for your system (see below).  It can list various options for
+customizing your LAMMPS build with a number of global compilation
+options and features.  To include LAMMPS packages (i.e. optional
+commands and styles) you must install them first, as discussed on
+the "Build package"_Build_package.html doc page.  If the packages
+use provided or external libraries, you must build those libraries
+before building LAMMPS.  Building "LAMMPS with CMake"_Build_cmake.html
+can automate all of this for many types of machines, especially
+workstations, desktops and laptops, so we suggest you try it first.
 
 These commands perform a default LAMMPS build, producing the LAMMPS
 executable lmp_serial or lmp_mpi in lammps/src:
@@ -27,23 +30,31 @@ make serial     # build a serial LAMMPS executable
 make mpi        # build a parallel LAMMPS executable with MPI
 make            # see a variety of make options :pre
 
-If your machine has multiple cores (most do), using a command like
-"make -j mpi" will be much faster.
+This initial compilation can take a long time, since LAMMPS is a large
+project with many features. If your machine has multiple CPU cores (most
+do these days), using a command like "make -jN mpi" (with N being to the
+number of available local CPU cores) can be much faster. If you plan to
+do development on LAMMPS or may need to recompile LAMMPS repeatedly, the
+installation of the ccache (= Compiler Cache) software may speed up
+compilation even more.
 
-After the initial build, if you edit LAMMPS source files, or add new
-files to the source directory, you can re-type make and it will only
-re-compile the files that have changed.
+After the initial build, whenever you edit LAMMPS source files, or 
+add or remove new files to the source directory (e.g. by installing or
+uninstalling packages), you must recompile and relink the LAMMPS executable
+with the same command line, but the makefiles will make certain, that
+only files that need to be recompiled will be compiled (because they
+were changed or depend on files, that were changed). 
 
 :line
 
-The lammps/src/MAKE directory contains all the Makefile.machine files
+The lammps/src/MAKE tree contains all the Makefile.machine files
 included in the LAMMPS distribution.  Typing "make machine" uses
 Makefile.machine.  Thus the "make serial" or "make mpi" lines above
 use Makefile.serial and Makefile.mpi.  Others are in these dirs:
 
 OPTIONS      # Makefiles which enable specific options
 MACHINES     # Makefiles for specific machines
-MINE         # customized Makefiles you create :pre
+MINE         # customized Makefiles you create (you may need to create this folder) :pre
 
 Typing "make" lists all the available Makefile.machine files.  A file
 with the same name can appear in multiple dirs (not a good idea).  The
@@ -53,7 +64,10 @@ customized file you put in src/MAKE/MINE.
 
 Makefiles you may wish to try include these (some require a package
 first be installed).  Many of these include specific compiler flags
-for optimized performance:
+for optimized performance.  Please note, however, that most of these
+customized machine Makefile are contributed and since both, compilers
+and also OS configs, as well as LAMMPS itself keep changing all the
+time, some of these settings and recommendations may be outdated:
 
 make mac             # build serial LAMMPS on a Mac
 make mac_mpi         # build parallel LAMMPS on a Mac
diff --git a/doc/src/Run_basics.txt b/doc/src/Run_basics.txt
index 1d4b570f21..c83d17d6a9 100644
--- a/doc/src/Run_basics.txt
+++ b/doc/src/Run_basics.txt
@@ -9,23 +9,25 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 Basics of running LAMMPS :h3
 
-LAMMPS is run from the command line, reading commands from standard
-input, which are typically listed in an input script:
+LAMMPS is run from the command line, reading commands from a
+file via the -in command line flag, or from standard input.
+Using the "-in in.file" variant is recommended:
 
 lmp_serial < in.file
 lmp_serial -in in.file
-~/lammps/src/lmp_serial < in.file
+/path/to/lammps/src/lmp_serial < in.file
 mpirun -np 4 lmp_mpi -in in.file
-mpirun -np 8 ~/lammps/src/lmp_mpi -in in.file
-mpirun -np 6 /usr/local/bin/lmp_mpi -in in.file :pre
+mpirun -np 8 /path/to//lammps/src/lmp_mpi -in in.file
+mpirun -np 6 /usr/local/bin/lmp -in in.file :pre
 
-You normally run from the directory your input script is in.  That is
-also where output files are produced, unless you specify otherwise in
-your input script.  As in some of the examples above, the LAMMPS
-executable can be elsewhere.
+You normally run the LAMMPS command in the directory where your
+input script is located.  That is also where output files are
+produced by default, unless you provide specific other paths in
+your input script or on the command line.  As in some of the
+examples above, the LAMMPS executable itself can be placed elsewhere.
 
-NOTE: The redirection operator "<" can often be used with mpirun, but
-some systems require the -in form.
+NOTE: The redirection operator "<" will not always work when running
+in parallel with mpirun; for those systems the -in form is required.
 
 As LAMMPS runs it prints info to the screen and a logfile named
 log.lammps.  More info about output is given on the "Run
-- 
GitLab


From 8318b96c118348ecc9b6112ad3164b2a959b0d55 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Fri, 10 Aug 2018 11:54:51 +0200
Subject: [PATCH 180/243] update OpenMP support info in build basics

---
 doc/src/Build_basics.txt | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/doc/src/Build_basics.txt b/doc/src/Build_basics.txt
index ccfb2b444c..138940696f 100644
--- a/doc/src/Build_basics.txt
+++ b/doc/src/Build_basics.txt
@@ -93,24 +93,29 @@ with it.
 
 The majority of OpenMP (threading) support in LAMMPS is provided by
 the USER-OMP package; see the "Speed omp"_Speed_omp.html doc page for
-details.
+details. The USER-INTEL package also provides OpenMP support (it is
+compatible with USER-OMP) and adds vectorization support when compiled
+with the Intel compilers on top of that. Also, the KOKKOS package can
+be compiled for using OpenMP threading.
 
 However, there are a few commands in LAMMPS that have native OpenMP
-support.  These are commands in the MPIIO, SNAP, USER-COLVARS, and
-USER-DPD packages.  See the "Packages details"_Packages_details.html
-doc page for more info on these packages and the doc pages for their
-respective commands for OpenMP threading info.
-
-TODO: is this the complete list of native OpenMP commands in LAMMPS?
+support.  These are commands in the MPIIO, SNAP, USER-DIFFRACTION, and
+USER-DPD packages.  In addition some commands support OpenMP threading
+not directly, but through the libraries they are interfacing to:
+e.g. LATTE and USER-COLVARS. See the "Packages
+details"_Packages_details.html doc page for more info on these packages
+and the doc pages for their respective commands for OpenMP threading
+info.
 
 For CMake, if you use BUILD_OMP=yes, then you can use these packages
 and turn on their native OpenMP support at run time, by first setting
 the OMP_NUM_THREADS environment variable.
 
-For make, ...
-
-TODO: how do we build LAMMPS with make, to include OpenMP support
-(separate from USER-OMP package).  Akin to CMake with BUILD_OMP=yes.
+For the conventional makefiles, the CCFLAGS and LINKFLAGS variables
+need to include the compiler flag, that enables OpenMP. For GNU
+compilers, this flag is -fopenmp, for (recent) Intel compilers,
+it is -qopenmp. Please refer to the documentation of your compiler,
+if you are using a different compiler to compile LAMMPS.
 
 :line
 
-- 
GitLab


From 13d1f26a0fa5a5e6167c68bd45bea41e3692b12c Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Fri, 10 Aug 2018 12:15:49 +0200
Subject: [PATCH 181/243] provide additional information about building QM/MM
 with QE

---
 doc/src/Build_extras.txt | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
index d6b0d052b5..e7c1a67fe3 100644
--- a/doc/src/Build_extras.txt
+++ b/doc/src/Build_extras.txt
@@ -731,10 +731,17 @@ The LAMMPS executable these steps produce is not yet functional for a
 QM/MM simulation.  You must also build Quantum ESPRESSO and create a
 new executable which links LAMMPS and Quantum ESPRESSO together.
 These are steps 3 and 4 described in the lib/qmmm/README file.
+Unfortunately, the Quantum ESPRESSO developers keep breaking the
+interface that the QM/MM code in LAMMPS is using, so that currently
+(Summer 2018) using this feature requires either correcting the
+library interface feature in recent Quantum ESPRESSO releases, or
+using an outdated version of QE. The last version of Quantum ESPRESSO
+known to work with this QM/MM interface in LAMMPS was version 5.4
+from 2016.
 
 [CMake build]:
 
-TODO: how to do this
+TODO: how to do this?
 
 [Traditional make]:
 
@@ -767,7 +774,7 @@ USER-QUIP package :h4,link(user-quip)
 
 [CMake build]:
 
-TODO: how to do this
+TODO: how to do this?
 
 [Traditional make]:
 
-- 
GitLab


From f67b198c24a02ee785f87dc222288601aee58112 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Fri, 10 Aug 2018 13:04:31 +0200
Subject: [PATCH 182/243] discourage the use of MEAM and REAX, which have been
 supersede by USER-MEAMC and USER-REAXC

---
 doc/src/Build_extras.txt     | 15 ++++++++++++---
 doc/src/Packages_details.txt | 23 ++++++++++++++---------
 2 files changed, 26 insertions(+), 12 deletions(-)

diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
index e7c1a67fe3..a3a5665fa8 100644
--- a/doc/src/Build_extras.txt
+++ b/doc/src/Build_extras.txt
@@ -279,9 +279,13 @@ the compiler you use on your system to build LATTE.
  
 MEAM package :h4,link(meam)
 
-NOTE: You should test building the MEAM library with both the Intel
-and GNU compilers to see if a simulation runs faster with one versus
-the other on your system.
+NOTE: the use of the MEAM package is discouraged, as it has been
+superseded by the USER-MEAMC package, which is a direct translation of
+the Fortran code in the MEAM library to C++. The code in USER-MEAMC is
+functionally completely equivalent, fully supports use in "pair_style
+hybrid"_pair_hybrid.html, and has optimizations (e.g. no translations of
+data structures or neighbor lists are required) that make it
+significantly faster than the MEAM package.
 
 [CMake build]:
 
@@ -423,6 +427,11 @@ process.  You should only need to create a new Makefile.lammps.* file
  
 REAX package :h4,link(reax)
 
+NOTE: the use of the REAX package is discouraged, as it is no longer
+maintained. Please use the USER-REAX package instead, and possibly the
+KOKKOS enabled variant of that, which has a more robust memory
+management.
+
 [CMake build]:
 
 -D PKG_REAX=on            # enable REAX package :pre
diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt
index 33d1df06ec..46948a88b7 100644
--- a/doc/src/Packages_details.txt
+++ b/doc/src/Packages_details.txt
@@ -530,11 +530,12 @@ MEAM package :link(PKG-MEAM),h4
 
 A pair style for the modified embedded atom (MEAM) potential.
 
-Please note that the MEAM package has been superseded by the
-"USER-MEAMC"_#PKG-USER-MEAMC package, which is a direct translation
-of the MEAM package to C++. USER-MEAMC contains additional
-optimizations making it run faster than MEAM on most machines,
-while providing the identical features and USER interface.
+Please note that the use of the MEAM package is discouraged as
+it has been superseded by the "USER-MEAMC"_#PKG-USER-MEAMC package,
+which is a direct translation of the MEAM package to C++.
+USER-MEAMC contains additional optimizations making it run faster
+than MEAM on most machines, while providing the identical features
+and user interface.
 
 [Author:] Greg Wagner (Northwestern U) while at Sandia.
 
@@ -807,11 +808,15 @@ REAX package :link(PKG-REAX),h4
 
 [Contents:]
 
+NOTE: the use of the REAX package is discouraged, as it is no longer
+maintained. Please use the "USER-REAXC"_#PKG-USER-REAXC package instead,
+and possibly the KOKKOS enabled variant of that, which has a more robust
+memory management.
+
 A pair style which wraps a Fortran library which implements the ReaxFF
-potential, which is a universal reactive force field.  See the
-"USER-REAXC package"_#PKG-USER-REAXC for an alternate implementation in
-C/C++.  Also a "fix reax/bonds"_fix_reax_bonds.html command for
-monitoring molecules as bonds are created and destroyed.
+potential, which is a universal reactive force field.  Also included is
+a "fix reax/bonds"_fix_reax_bonds.html command for monitoring molecules
+as bonds are created and destroyed.
 
 [Author:] Aidan Thompson (Sandia).
 
-- 
GitLab


From bc8939a08b9fba2b45f6b59ec2a42f250e80b718 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Fri, 10 Aug 2018 15:55:32 +0200
Subject: [PATCH 183/243] more corrections/rewrites/additions for OpenMP, QM/MM
 and USER-QUIP

---
 cmake/Modules/FindQUIP.cmake |  4 +--
 doc/src/Build_extras.txt     | 50 ++++++++++++++++++++++++------------
 2 files changed, 36 insertions(+), 18 deletions(-)

diff --git a/cmake/Modules/FindQUIP.cmake b/cmake/Modules/FindQUIP.cmake
index 4ee1baf4f8..b6d87d11fa 100644
--- a/cmake/Modules/FindQUIP.cmake
+++ b/cmake/Modules/FindQUIP.cmake
@@ -1,8 +1,8 @@
 # - Find quip
 # Find the native QUIP libraries.
 #
-#  QUIP_LIBRARIES    - List of libraries when using fftw3.
-#  QUIP_FOUND        - True if fftw3 found.
+#  QUIP_LIBRARIES    - List of libraries of the QUIP package
+#  QUIP_FOUND        - True if QUIP library was found.
 #
 
 find_library(QUIP_LIBRARY NAMES quip)
diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
index a3a5665fa8..ad981099cd 100644
--- a/doc/src/Build_extras.txt
+++ b/doc/src/Build_extras.txt
@@ -705,9 +705,11 @@ USER-NETCDF package :h4,link(user-netcdf)
 
 -D PKG_USER-NETCDF=on            # enable USER-NETCDF package :pre
 
-This will autodetect the NETCDF library if it is installed on your system at standard locations.
-Several advanced NETCDF options exist if you need to specify where it was installed. Run with
-ccmake to see these options.
+This will autodetect the NETCDF library if it is installed on your
+system at standard locations. Several advanced NETCDF options exist,
+for example if you need to specify where it was installed. Best use
+the ccmake (console) or cmake-gui (graphical) tools to see these
+options and set them interactively from their user interfaces.
 
 [Traditional make]:
 
@@ -729,8 +731,11 @@ USER-OMP package :h4,link(user-omp)
 
 [Traditional make]:
 
-CCFLAGS: add -fopenmp (and -restrict when using Intel compilers)
-LINKFLAGS: add -fopenmp :ul
+CCFLAGS: add -fopenmp (or -qopenmp -restrict when using Intel compilers on Linux)
+LINKFLAGS: add -fopenmp (or -qopenmp when using Intel compilers on Linux) :ul
+
+For other platforms and compilers, please consult the documentation for the
+corresponding compiler.
 
 :line
 
@@ -745,12 +750,14 @@ interface that the QM/MM code in LAMMPS is using, so that currently
 (Summer 2018) using this feature requires either correcting the
 library interface feature in recent Quantum ESPRESSO releases, or
 using an outdated version of QE. The last version of Quantum ESPRESSO
-known to work with this QM/MM interface in LAMMPS was version 5.4
+known to work with this QM/MM interface in LAMMPS was version 5.4.1
 from 2016.
 
 [CMake build]:
 
-TODO: how to do this?
+The CMake build system currently does not support building the
+full, QM/MM capable hybrid executable of LAMMPS and QE called
+pwqmmm.x. Please use the traditional make procedure.
 
 [Traditional make]:
 
@@ -775,7 +782,10 @@ for your system, which should define an EXTRAMAKE variable to specify
 a corresponding Makefile.lammps.machine file.
 
 You can then install/un-install the package and build LAMMPS in the
-usual manner:
+usual manner. After completing the LAMMPS build and compiling Quantum
+ESPRESSO with external library support, you can go back to the lib/qmmm
+folder and follow the instructions on the README file to build the
+combined LAMMPS/QE QM/MM executable, pwqmmm.x in the lib/qmmm folder.
 
 :line
 
@@ -783,19 +793,27 @@ USER-QUIP package :h4,link(user-quip)
 
 [CMake build]:
 
-TODO: how to do this?
+-D PKG_USER-QUIP=on                  # enable USER-QUIP package
+-D QUIP_LIBRARIES=/path/to/libquip.a # set the location of the quip library :pre
+
+This will include the USER-QUIP package and tell the build system where
+to find the quip library. You have to first follow the steps to compile
+and install the QUIP library in the same was as for the traditional
+make build process (see below).
 
 [Traditional make]:
 
 Note that to follow these steps to compile and link to the QUIP
 library, you must first download and build QUIP on your systems.  It
-can be obtained from GitHub.  See step 1 and step 1.1 in the
-lib/quip/README file for details on how to do this.  Note that it
-requires setting two environment variables, QUIP_ROOT and QUIP_ARCH,
-which will be accessed by the lib/quip/Makefile.lammps file which is
-used when you compile and link LAMMPS with this package.  You should
-only need to edit this file if the LAMMPS build can not use its
-settings to successfully build on your system.
+can be obtained from GitHub. For support of GAP potentials, additional
+files, with specific licensing conditions need to be downloaded and
+configured. See step 1 and step 1.1 in the lib/quip/README file for
+details on how to do this.  Note that it requires setting two
+environment variables, QUIP_ROOT and QUIP_ARCH, which will be accessed
+by the lib/quip/Makefile.lammps file which is used when you compile and
+link LAMMPS with this package.  You should only need to edit this file
+if the LAMMPS build can not use its settings to successfully build on
+your system.
 
 :line
 
-- 
GitLab


From ddd8533d819ff2aba8cc537e115b384ca935795a Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Fri, 10 Aug 2018 16:33:20 +0200
Subject: [PATCH 184/243] make -DLAMMPS_MEMALIGN optional in CMake by checking
 of 0 alignment. also some rewording.

this changes the CMake configuration file.
also, the special case of Windows not supporting posix_memalign() is documented.
some more explanations for FFTs and memory alignment are added
---
 cmake/CMakeLists.txt       |  6 ++--
 doc/src/Build_settings.txt | 61 +++++++++++++++++++++++++++-----------
 2 files changed, 48 insertions(+), 19 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index f4d3cac5d2..1307a0ee49 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -140,8 +140,10 @@ set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -D${LAMMPS_SIZE_LIMIT}")
 
 # posix_memalign is not available on Windows
 if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
-  set(LAMMPS_MEMALIGN "64" CACHE STRING "enables the use of the posix_memalign() call instead of malloc() when large chunks or memory are allocated by LAMMPS")
-  add_definitions(-DLAMMPS_MEMALIGN=${LAMMPS_MEMALIGN})
+  set(LAMMPS_MEMALIGN "64" CACHE STRING "enables the use of the posix_memalign() call instead of malloc() when large chunks or memory are allocated by LAMMPS. Set to 0 to disable")
+  if(NOT ${LAMMPS_MEMALIGN} STREQUAL "0")
+    add_definitions(-DLAMMPS_MEMALIGN=${LAMMPS_MEMALIGN})
+  endif()
 endif()
 
 option(LAMMPS_EXCEPTIONS "enable the use of C++ exceptions for error messages (useful for library interface)" OFF)
diff --git a/doc/src/Build_settings.txt b/doc/src/Build_settings.txt
index a64c5d691d..72771cf624 100644
--- a/doc/src/Build_settings.txt
+++ b/doc/src/Build_settings.txt
@@ -29,9 +29,17 @@ FFT library :h3,link(fft)
 When the KSPACE package is included in a LAMMPS build, the
 "kspace_style pppm"_kspace_style.html command performs 3d FFTs which
 require use of an FFT library to compute 1d FFTs.  The KISS FFT
-library is included with LAMMPS but other libraries are typically
-faster if they are available on your system.  See details on other FFT
-libraries below.
+library is included with LAMMPS but other libraries can be faster
+(typically up to 20%), and LAMMPS can use them, if they are
+available on your system. Since the use of FFTs is usually only part
+of the total computation done by LAMMPS, however, the total
+performance difference for typical cases is in the range of 2-5%.
+Thus it is safe to use KISS FFT and look into using other FFT
+libraries when optimizing for maximum performance.   See details
+on enabling the use of other FFT libraries below.
+
+NOTE: FFTW2 has not been updated since 1999 and has been declared
+obsolete by its developers.
  
 [CMake variables]:
 
@@ -43,9 +51,9 @@ Usually these settings are all that is needed.  If CMake cannot find
 the FFT library, you can set these variables:
 
 -D FFTW3_INCLUDE_DIRS=path  # path to FFTW3 include files
--D FFTW2_LIBRARIES=path     # path to FFTW3 libraries
+-D FFTW3_LIBRARIES=path     # path to FFTW3 libraries
 -D FFTW2_INCLUDE_DIRS=path  # ditto for FFTW2
--D FFTW3_LIBRARIES=path
+-D FFTW2_LIBRARIES=path
 -D MKL_INCLUDE_DIRS=path    # ditto for Intel MKL library
 -D MKL_LIBRARIES=path :pre
 
@@ -77,26 +85,34 @@ The "KISS FFT library"_http://kissfft.sf.net is included in the LAMMPS
 distribution, so not FFT_LIB setting is required.  It is portable
 across all platforms.
 
-FFTW is fast, portable library that should also work on any platform
-and typically be faster than KISS FFT.  You can download it from
-"www.fftw.org"_http://www.fftw.org.  Both the legacy version 2.1.X and
-the newer 3.X versions are supported.  Building FFTW for your box
-should be as simple as ./configure; make; make install.  The install
+FFTW is a fast, portable FFT library that should also work on any
+platform and can be faster than KISS FFT.  You can download it from
+"www.fftw.org"_http://www.fftw.org.  Both the (obsolete) legacy version
+2.1.X and the newer 3.X versions are supported.  Building FFTW for your
+box should be as simple as ./configure; make; make install.  The install
 command typically requires root privileges (e.g. invoke it via sudo),
 unless you specify a local directory with the "--prefix" option of
 configure.  Type "./configure --help" to see various options.
+The total impact on the performance of LAMMPS by KISS FFT versus 
+other FFT libraries is for many case rather small (since FFTs are only
+a small to moderate part of the total computation). Thus if FFTW is
+not detected on your system, it is usually safe to continue with
+KISS FFT and look into installing FFTW only when optimizing LAMMPS
+for maximum performance.
+
 
 The Intel MKL math library is part of the Intel compiler suite.  It
 can be used with the Intel or GNU compiler (see FFT_LIB setting above).
 
-3d FFTs can be computationally expensive.  Their cost can be reduced
+Performing 3d FFTs in parallel can be time consuming due to data
+access and required communication.  This cost can be reduced
 by performing single-precision FFTs instead of double precision.
 Single precision means the real and imaginary parts of a complex datum
 are 4-byte floats.  Double precesion means they are 8-byte doubles.
 Note that Fourier transform and related PPPM operations are somewhat
-insensitive to floating point truncation errors and thus do not always
-need to be performed in double precision.  Using this setting trades
-off a little accuracy for reduced memory use and parallel
+less sensitive to floating point truncation errors and thus the resulting
+error is less than the difference in precision. Using the -DFFT_SINGLE
+setting trades off a little accuracy for reduced memory use and parallel
 communication costs for transposing 3d FFT data.
 
 When using -DFFT_SINGLE with FFTW3 or FFTW2, you may need to build the
@@ -279,18 +295,29 @@ This setting enables the use of the posix_memalign() call instead of
 malloc() when LAMMPS allocates large chunks or memory.  This can make
 vector instructions on CPUs more efficient, if dynamically allocated
 memory is aligned on larger-than-default byte boundaries.
+On most current systems, the malloc() implementation returns
+pointers that are aligned to 16-byte boundaries. Using SSE vector
+instructions efficiently, however, requires memory blocks being
+aligned on 64-byte boundaries.
 
 [CMake variable]:
 
 -D LAMMPS_MEMALIGN=value            # 8, 16, 32, 64 (default) :pre
 
+Use a LAMMPS_MEMALIGN value of 0 to disable using posix_memalign()
+and revert to using the malloc() C-library function instead. When
+compiling LAMMPS for Windows systems, malloc() will always be used
+and this setting ignored.
+
 [Makefile.machine setting]:
 
 LMP_INC = -DLAMMPS_MEMALIGN=value   # 8, 16, 32, 64 :pre
 
-TODO: I think the make default (no LAMMPS_MEMALIGN) is to not
-use posix_memalign(), just malloc().  Does a CMake build have
-an equivalent option?  I.e. none.
+Do not set -DLAMMPS_MEMALIGN, if you want to have memory allocated
+with the malloc() function call instead. -DLAMMPS_MEMALIGN [cannot]
+be used on Windows, as it does use different function calls for
+allocating aligned memory, that are not compatible with how LAMMPS
+manages its dynamical memory.
 
 :line
 
-- 
GitLab


From b33452040a83ef9a0b08226e95cf6b18453eb1da Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Fri, 10 Aug 2018 17:27:40 +0200
Subject: [PATCH 185/243] correct FFT definitions in docs and make
 -DFFT_KISSFFT explicit in CMake

---
 cmake/CMakeLists.txt       | 2 ++
 doc/src/Build_settings.txt | 4 ++--
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 1307a0ee49..fda46a6e6f 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -230,6 +230,8 @@ if(PKG_KSPACE)
     endif()
     include_directories(${${FFT}_INCLUDE_DIRS})
     list(APPEND LAMMPS_LINK_LIBS ${${FFT}_LIBRARIES})
+  else()
+    add_definitions(-DFFT_KISSFFT)
   endif()
   set(PACK_OPTIMIZATION "PACK_ARRAY" CACHE STRING "Optimization for FFT")
   set_property(CACHE PACK_OPTIMIZATION PROPERTY STRINGS PACK_ARRAY PACK_POINTER PACK_MEMCPY)
diff --git a/doc/src/Build_settings.txt b/doc/src/Build_settings.txt
index 72771cf624..3adabac768 100644
--- a/doc/src/Build_settings.txt
+++ b/doc/src/Build_settings.txt
@@ -43,7 +43,7 @@ obsolete by its developers.
  
 [CMake variables]:
 
--D FFT=value              # kiss or fftw3 or fftw2 or mkl, default is fftw3 if found, else kiss
+-D FFT=value              # KISSFFT or FFTW3 or FFTW2 or MKL, default is FFTW3 if found, else KISSFFT
 -D FFT_SINGLE=value       # yes or no (default), no = double precision
 -D FFT_PACK=value         # array (default) or pointer or memcpy :pre
 
@@ -59,7 +59,7 @@ the FFT library, you can set these variables:
 
 [Makefile.machine settings]:
 
-FFT_INC = -DFFT_FFTW3         # FFTW3, FFTW2, FFTW (same as FFTW3), MKL, or KISS
+FFT_INC = -DFFT_FFTW3         # -DFFT_FFTW3, -DFFT_FFTW2, -DFFT_FFTW (same as -DFFT_FFTW3), -DFFT_MKL, or -DFFT_KISSFFT
                               # default is KISS if not specified
 FFT_INC = -DFFT_SINGLE        # do not specify for double precision
 FFT_INC = -DFFT_PACK_ARRAY    # or -DFFT_PACK_POINTER or -DFFT_PACK_MEMCPY :pre
-- 
GitLab


From 135b877161e311b97169cc7610be37ed5044b4fd Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Fri, 10 Aug 2018 15:01:46 -0400
Subject: [PATCH 186/243] Make sure -fPIC is passed to ExternalProject VORO if
 BUILD_SHARED_LIBS=on

---
 cmake/CMakeLists.txt | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index f4d3cac5d2..2f38cdd689 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -310,10 +310,17 @@ if(PKG_VORONOI)
   option(DOWNLOAD_VORO "Download voro++ (instead of using the system's one)" OFF)
   if(DOWNLOAD_VORO)
     include(ExternalProject)
+
+    if(BUILD_SHARED_LIBS)
+        set(VORO_BUILD_OPTIONS "CFLAGS=-fPIC")
+    else()
+        set(VORO_BUILD_OPTIONS "")
+    endif()
+
     ExternalProject_Add(voro_build
       URL http://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz
       URL_MD5 2338b824c3b7b25590e18e8df5d68af9
-      CONFIGURE_COMMAND "" BUILD_IN_SOURCE 1 INSTALL_COMMAND "" 
+      CONFIGURE_COMMAND "" BUILD_COMMAND make ${VORO_BUILD_OPTIONS} BUILD_IN_SOURCE 1 INSTALL_COMMAND ""
       )
     ExternalProject_get_property(voro_build SOURCE_DIR)
     set(VORO_LIBRARIES ${SOURCE_DIR}/src/libvoro++.a)
-- 
GitLab


From 907b061e0b1086e84479622f267847fdb2a54319 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Fri, 10 Aug 2018 15:04:33 -0600
Subject: [PATCH 187/243] more updates to Build doc page

---
 doc/src/Build_basics.txt   | 116 ++++----
 doc/src/Build_cmake.txt    | 127 +++++----
 doc/src/Build_extras.txt   | 562 +++++++++++++++++++------------------
 doc/src/Build_make.txt     |  63 +++--
 doc/src/Build_package.txt  |  43 +--
 doc/src/Build_settings.txt |  74 +++--
 doc/src/Speed_tips.txt     |  22 +-
 7 files changed, 513 insertions(+), 494 deletions(-)

diff --git a/doc/src/Build_basics.txt b/doc/src/Build_basics.txt
index 138940696f..806144256c 100644
--- a/doc/src/Build_basics.txt
+++ b/doc/src/Build_basics.txt
@@ -37,16 +37,16 @@ without MPI.  It can also be built with support for OpenMP threading
 -D LAMMPS_MACHINE=name    # name = mpi, serial, mybox, titan, laptop, etc
                           # no default value :pre
 
-The executable CMake creates (after running make) is lmp_name.  If the
-LAMMPS_MACHINE variable is not specified, the executable is just lmp.
-Using BUILD_MPI=no will produce a serial executable.
+The executable created by CMake (after running make) is lmp_name.  If
+the LAMMPS_MACHINE variable is not specified, the executable is just
+lmp.  Using BUILD_MPI=no will produce a serial executable.
 
 [Traditional make]:
 
 cd lammps/src
 make mpi                # parallel build, produces lmp_mpi using Makefile.mpi
 make serial             # serial build, produces lmp_serial using Makefile/serial
-make mybox :pre         # uses Makefile.mybox, produces lmp_mybox :pre
+make mybox :pre         # uses Makefile.mybox to produce lmp_mybox :pre
 
 Serial build (see src/MAKE/Makefile.serial):
 
@@ -81,15 +81,15 @@ simulations.
 
 [CMake and make info]:
 
-If you are installing MPI yourself, we recommend Argonne's MPICH2 or
-OpenMPI.  MPICH can be downloaded from the "Argonne MPI
-site"_http://www.mcs.anl.gov/research/projects/mpich2/.  OpenMPI can
-be downloaded from the "OpenMPI site"_http://www.open-mpi.org.  Other
-MPI packages should also work.  If you are running on a large parallel
-machine, your system admins or the vendor should have already
-installed a version of MPI, which is likely to be faster than a
-self-installed MPICH or OpenMPI, so find out how to build and link
-with it.
+If you are installing MPI yourself, we recommend MPICH2 from Argonne
+National Laboratory or OpenMPI.  MPICH can be downloaded from the
+"Argonne MPI site"_http://www.mcs.anl.gov/research/projects/mpich2/.
+OpenMPI can be downloaded from the "OpenMPI
+site"_http://www.open-mpi.org.  Other MPI packages should also work.
+If you are running on a large parallel machine, your system admins or
+the vendor should have already installed a version of MPI, which is
+likely to be faster than a self-installed MPICH or OpenMPI, so find
+out how to build and link with it.
 
 The majority of OpenMP (threading) support in LAMMPS is provided by
 the USER-OMP package; see the "Speed omp"_Speed_omp.html doc page for
@@ -100,22 +100,22 @@ be compiled for using OpenMP threading.
 
 However, there are a few commands in LAMMPS that have native OpenMP
 support.  These are commands in the MPIIO, SNAP, USER-DIFFRACTION, and
-USER-DPD packages.  In addition some commands support OpenMP threading
-not directly, but through the libraries they are interfacing to:
-e.g. LATTE and USER-COLVARS. See the "Packages
-details"_Packages_details.html doc page for more info on these packages
-and the doc pages for their respective commands for OpenMP threading
-info.
-
-For CMake, if you use BUILD_OMP=yes, then you can use these packages
-and turn on their native OpenMP support at run time, by first setting
-the OMP_NUM_THREADS environment variable.
-
-For the conventional makefiles, the CCFLAGS and LINKFLAGS variables
-need to include the compiler flag, that enables OpenMP. For GNU
-compilers, this flag is -fopenmp, for (recent) Intel compilers,
-it is -qopenmp. Please refer to the documentation of your compiler,
-if you are using a different compiler to compile LAMMPS.
+USER-DPD packages.  In addition some packages support OpenMP threading
+indirectly through the libraries they interface to: e.g. LATTE and
+USER-COLVARS.  See the "Packages details"_Packages_details.html doc
+page for more info on these packages and the doc pages for their
+respective commands for OpenMP threading info.
+
+For CMake, if you use BUILD_OMP=yes, you can use these packages and
+turn on their native OpenMP support and turn on their native OpenMP
+support at run time, by setting the OMP_NUM_THREADS environment
+variable before you launch LAMMPS.
+
+For building via conventional make, the CCFLAGS and LINKFLAGS
+variables in Makefile.machine need to include the compiler flag that
+enables OpenMP. For GNU compilers it is -fopenmp.  For (recent) Intel
+compilers it is -qopenmp.  If you are using a different compiler,
+please refer to its documentation.
 
 :line
 
@@ -142,7 +142,7 @@ simply loading the appropriate module before building LAMMPS.
 -D CMAKE_C_FlAGS=string               # flags to use with C compiler
 -D CMAKE_Fortran_FlAGS=string         # flags to use with Fortran compiler :pre
 
-By default CMake will use a compiler it finds and it will use
+By default CMake will use a compiler it finds and it will add
 optimization flags appropriate to that compiler and any "accelerator
 packages"_Speed_packages.html you have included in the build.
 
@@ -161,11 +161,11 @@ Building with LLVM/Clang Compilers:
 cmake ../cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_Fortran_COMPILER=flang :pre
 
 NOTE: When the cmake command completes, it prints info to the screen
-as to what compilers it is using, and what flags will be used in the
+as to which compilers it is using, and what flags will be used in the
 compilation.  Note that if the top-level compiler is mpicxx, it is
 simply a wrapper on a real compiler.  The low-level compiler info is
-also in the output.  You should check to insure you are using the
-compiler and optimization flags that are the ones you want.
+also in the Cmake output.  You should check to insure you are using
+the compiler and optimization flags are the ones you want.
 
 [Makefile.machine settings]:
 
@@ -208,20 +208,16 @@ Makefile.kokkos_cuda_mpi       # KOKKOS package for GPUs
 Makefile.kokkos_omp            # KOKKOS package for CPUs (OpenMP)
 Makefile.kokkos_phi            # KOKKOS package for KNLs (OpenMP) :pre
 
-NOTE: When you build LAMMPS for the first time, a long list of *.d
-files will be printed out rapidly.  This is not an error; it is the
-Makefile doing its normal creation of dependencies.
-
 :line
 
 Build LAMMPS as an executable or a library :h3,link(exe)
 
 LAMMPS can be built as either an executable or as a static or shared
-library.  The library can be called from another application or a
-scripting language.  See the "Howto couple"_Howto_couple.html doc page
-for more info on coupling LAMMPS to other codes.  See the
+library.  The LAMMPS library can be called from another application or
+a scripting language.  See the "Howto couple"_Howto_couple.html doc
+page for more info on coupling LAMMPS to other codes.  See the
 "Python"_Python doc page for more info on wrapping and running LAMMPS
-from Python.
+from Python via its library interface.
 
 [CMake variables]:
 
@@ -232,7 +228,7 @@ from Python.
 Setting BUILD_EXE=no will not produce an executable.  Setting
 BUILD_LIB=yes will produce a static library named liblammps.a.
 Setting both BUILD_LIB=yes and BUILD_SHARED_LIBS=yes will produce a
-static library named liblammps.so.
+shared library named liblammps.so.
 
 [Traditional make]:
 
@@ -241,8 +237,9 @@ make machine               # build LAMMPS executable lmp_machine
 make mode=lib machine      # build LAMMPS static lib liblammps_machine.a
 make mode=shlib machine    # build LAMMPS shared lib liblammps_machine.so :pre
 
-The two library builds also create generic links liblammps.a and
-liblammps.so which point to the liblammps_machine files.
+The two library builds also create generic soft links, named
+liblammps.a and liblammps.so, which point to the liblammps_machine
+files.
 
 [CMake and make info]:
 
@@ -250,16 +247,16 @@ Note that for a shared library to be usable by a calling program, all
 the auxiliary libraries it depends on must also exist as shared
 libraries.  This will be the case for libraries included with LAMMPS,
 such as the dummy MPI library in src/STUBS or any package libraries in
-lib/packages, since they are always built as shared libraries using
-the -fPIC switch.  However, if a library like MPI or FFTW does not
-exist as a shared library, the shared library build will generate an
-error.  This means you will need to install a shared library version
-of the auxiliary library.  The build instructions for the library
-should tell you how to do this.
+the lib/packages directroy, since they are always built as shared
+libraries using the -fPIC switch.  However, if a library like MPI or
+FFTW does not exist as a shared library, the shared library build will
+generate an error.  This means you will need to install a shared
+library version of the auxiliary library.  The build instructions for
+the library should tell you how to do this.
 
 As an example, here is how to build and install the "MPICH
 library"_mpich, a popular open-source version of MPI, distributed by
-Argonne National Labs, as a shared library in the default
+Argonne National Lab, as a shared library in the default
 /usr/local/lib location:
 
 :link(mpich,http://www-unix.mcs.anl.gov/mpi)
@@ -280,9 +277,10 @@ Build the LAMMPS documentation :h3,link(doc)
 
 -D BUILD_DOC=value       # yes or no (default) :pre
 
-This will create the HTML doc pages within the CMake build dir.  The
-reason to do this is if you want to "install" LAMMPS on a system after
-the CMake build, and include the doc pages in the install.
+This will create the HTML doc pages within the CMake build directory.
+The reason to do this is if you want to "install" LAMMPS on a system
+after the CMake build via "make install", and include the doc pages in
+the install.
 
 [Traditional make]:
 
@@ -291,7 +289,7 @@ make html       # html doc pages
 make pdf        # single Manual.pdf file :pre
 
 This will create a lammps/doc/html dir with the HTML doc pages so that
-you can browse them locally on your system.  Type "make" from the the
+you can browse them locally on your system.  Type "make" from the
 lammps/doc dir to see other options.
 
 :line
@@ -301,8 +299,8 @@ Install LAMMPS after a build :h3,link(install)
 After building LAMMPS, you may wish to copy the LAMMPS executable of
 library, along with other LAMMPS files (library header, doc files) to
 a globally visible place on your system, for others to access.  Note
-that you may need super-user priveleges (e.g. sudo) if the place you
-want to copy files to is protected.
+that you may need super-user priveleges (e.g. sudo) if the directory
+you want to copy files to is protected.
 
 [CMake variable]:
 
@@ -313,5 +311,5 @@ make install                # perform the installation into prefix :pre
 [Traditional make]:
 
 There is no "install" option in the src/Makefile for LAMMPS.  If you
-wish to do this you will need to build, then manually copy the
-desired LAMMPS files to the appopriate system directories.
+wish to do this you will need to first build LAMMPS, then manually
+copy the desired LAMMPS files to the appropriate system directories.
diff --git a/doc/src/Build_cmake.txt b/doc/src/Build_cmake.txt
index 903c92f584..c42bb21c7e 100644
--- a/doc/src/Build_cmake.txt
+++ b/doc/src/Build_cmake.txt
@@ -10,7 +10,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 Build LAMMPS with CMake :h3
 
 This page is a short summary of how to use CMake to build LAMMPS.
-Specific details on CMake variables that enable LAMMPS build options
+Details on CMake variables that enable specific LAMMPS build options
 are given on the pages linked to from the "Build"_Build.html doc page.
 
 Richard Berger (Temple U) has also written a more comprehensive guide
@@ -19,15 +19,17 @@ good place to start:
 
 "Bulding LAMMPS using
 CMake"_https://github.com/lammps/lammps/blob/master/cmake/README.md
+
 :line
 
 Building LAMMPS with CMake is a two-step process.  First you use CMake
-to create a build environment in a new folder.  On Linux systems, this
-will be based on makefiles for use with make.  Then you use the make
-command to build LAMMPS, which uses the created Makefile(s). Example:
+to create a build environment in a new directory.  On Linux systems,
+this will be based on makefiles for use with make.  Then you use the
+make command to build LAMMPS, which uses the created
+Makefile(s). Example:
 
-cd lammps                        # change to the folder with the LAMMPS sources
-mkdir build; cd build            # create a new dir for build          
+cd lammps                        # change to the LAMMPS distribution directory
+mkdir build; cd build            # create a new directory (folder) for build       
 cmake ../cmake \[options ...\]   # configuration with (command-line) cmake
 make                             # compilation :pre
 
@@ -38,12 +40,12 @@ executable called "lmp" and a library called "liblammps.a" in the
 "build" folder.
 
 If your machine has multiple CPU cores (most do these days), using a
-command like "make -jN" (with N being the number of available local CPU
-cores) can be much faster.  If you plan to do development on LAMMPS or
-may need to recompile LAMMPS repeatedly, the installation of the ccache
-(= Compiler Cache) software may speed up compilation even more.
+command like "make -jN" (with N being the number of available local
+CPU cores) can be much faster.  If you plan to do development on
+LAMMPS or need to recompile LAMMPS repeatedly, installation of the
+ccache (= Compiler Cache) software may speed up compilation even more.
 
-After compilation, you optionally, can copy the LAMMPS executable and
+After compilation, you can optionally copy the LAMMPS executable and
 library into your system folders (by default under /usr/local) with:
 
 make install    # optional, copy LAMMPS executable & library elsewhere :pre
@@ -61,26 +63,26 @@ affect how the build is performed and what is included in the LAMMPS
 executable.  Links to pages explaining all the options are listed on
 the "Build"_Build.html doc page.
 
-You must perform the CMake build system generation and compilation in 
-a new directory you create.  It can be anywhere on your local machine;
-in the following, we will assume, that you are building in the folder
-"lammps/build".  You can perform separate builds independently at the
-same time and with different options, for as long as you put each of
-them into a separate directory. There can be as many build directories
-as you like. All the auxiliary files created by the build (executable,
-object files, log files, etc) are stored in that directory or
-sub-directories within it that CMake creates.
-
-NOTE: To perform a CMake build, no packages may be installed or a build
-attempted in the LAMMPS src folder using the "conventional build
-procedure"_Build_make.html.  CMake detects if this is the case and
+You must perform the CMake build system generation and compilation in
+a new directory you create.  It can be anywhere on your local machine.
+In these Build pages we assume that you are building in a directory
+called "lammps/build".  You can perform separate builds independently
+with different options, so long as you perform each of them in a
+separate directory you create.  All the auxiliary files created by one
+build process (executable, object files, log files, etc) are stored in
+this directory or sub-directories within it that CMake creates.
+
+NOTE: To perform a CMake build, no packages can be installed or a
+build been previously attempted in the LAMMPS src directory by using
+"make" commands to "perform a conventional LAMMPS
+build"_Build_make.html.  CMake detects if this is the case and
 generates an error, telling you to type "make no-all purge" in the src
-directory to un-install all packages.  The purge removes all the
-auto-generated *.h files.
+directory to un-install all packages.  The purge removes all the *.h
+files auto-generated by make.
 
-You must have CMake version 2.8 or later on your system to build LAMMPS.
-If you include the GPU or KOKKOS packages, CMake version 3.2 or later is
-required.  Installation instructions for CMake are below.
+You must have CMake version 2.8 or later on your system to build
+LAMMPS.  If you include the GPU or KOKKOS packages, CMake version 3.2
+or later is required.  Installation instructions for CMake are below.
 
 After the initial build, if you edit LAMMPS source files, or add your
 own new files to the source directory, you can just re-type make from
@@ -104,10 +106,10 @@ The argument can be preceeded or followed by various CMake
 command-line options.  Several useful ones are:
 
 -D CMAKE_INSTALL_PREFIX=path  # where to install LAMMPS executable/lib if desired
--D CMAKE_BUILD_TYPE=type     # type = Release or Debug
--G output                 # style of output CMake generates
--DVARIABLE=value          # setting for a LAMMPS feature to enable
--D VARIABLE=value         # ditto, but cannot come after CMakeLists.txt dir
+-D CMAKE_BUILD_TYPE=type      # type = Release or Debug
+-G output                     # style of output CMake generates
+-DVARIABLE=value              # setting for a LAMMPS feature to enable
+-D VARIABLE=value             # ditto, but cannot come after CMakeLists.txt dir :pre
 
 All the LAMMPS-specific -D variables that a LAMMPS build supports are
 described on the pages linked to from the "Build"_Build.html doc page.
@@ -115,17 +117,18 @@ All of these variable names are upper-case and their values are
 lower-case, e.g. -D LAMMPS_SIZES=smallbig.  For boolean values, any of
 these forms can be used: yes/no, on/off, 1/0.
 
-On Unix/Linux CMake generates a Makefile by default to perform the
-LAMMPS build.  Alternate forms of build info can be generated via the 
--G switch, e.g. Visual Studio on a Windows machine, Xcode on MacOS or
-KDevelop on Linux.  Type "cmake --help" to see the "Generator" styles
-of output your system supports.
+On Unix/Linux machines, CMake generates a Makefile by default to
+perform the LAMMPS build.  Alternate forms of build info can be
+generated via the -G switch, e.g. Visual Studio on a Windows machine,
+Xcode on MacOS, or KDevelop on Linux.  Type "cmake --help" to see the
+"Generator" styles of output your system supports.
 
 NOTE: When CMake runs, it prints configuration info to the screen.
 You should review this to verify all the features you requested were
 enabled, including packages.  You can also see what compilers and
-compile options will be used for the build.  Any errors will also be
-flagged, e.g. mis-typed variable names or variable values.
+compile options will be used for the build.  Any errors in CMake
+variable syntax will also be flagged, e.g. mis-typed variable names or
+variable values.
 
 CMake creates a CMakeCache.txt file when it runs.  This stores all the
 settings, so that when running CMake again you can use the current
@@ -135,33 +138,39 @@ settings will be inherited unless the CMakeCache.txt file is removed.
 
 If you later want to change a setting you can rerun cmake in the build
 directory with different setting. Please note that some automatically
-detected variables will not change their value. In these cases it is
-usually better to start with a fresh build directory.
+detected variables will not change their value when you rerun cmake.
+In these cases it is usually better to first remove all the
+files/directories in the build directory, or start with a fresh build
+directory.
+
+:line
 
 [Curses version (terminal-style menu) of CMake]:
 
 ccmake ../cmake :pre
 
 You initiate the configuration and build environment generation steps
-separately. For the first you have to type [c], for the second you have
-to type [g]. You may need to type [c] multiple times, and may be
-required to edit some of the entries of CMake configuration variables in
-between.  Please see the "ccmake
+separately. For the first you have to type [c], for the second you
+have to type [g]. You may need to type [c] multiple times, and may be
+required to edit some of the entries of CMake configuration variables
+in between.  Please see the "ccmake
 manual"_https://cmake.org/cmake/help/latest/manual/ccmake.1.html for
 more information.
 
+:line
+
 [GUI version of CMake]:
 
 cmake-gui ../cmake :pre
 
 You initiate the configuration and build environment generation steps
 separately. For the first you have to click on the [Configure] button,
-for the second you have to click on the [Generate] button.  You may need
-to click on [Configure] multiple times, and may be required to edit some
-of the entries of CMake configuration variables in between.  Please see
-the "cmake-gui
-manual"_https://cmake.org/cmake/help/latest/manual/cmake-gui.1.html for
-more information.
+for the second you have to click on the [Generate] button.  You may
+need to click on [Configure] multiple times, and may be required to
+edit some of the entries of CMake configuration variables in between.
+Please see the "cmake-gui
+manual"_https://cmake.org/cmake/help/latest/manual/cmake-gui.1.html
+for more information.
 
 :line
 
@@ -176,13 +185,13 @@ cmake --version         # what specific version you have :pre
 On clusters or supercomputers which use environment modules to manage
 software packages, do this:
 
-module list            # is a cmake module is already loaded
+module list            # is a cmake module already loaded?
 module avail           # is a cmake module available?
 module load cmake3     # load cmake module with appropriate name :pre
 
-Most Linux distributions offer precompiled cmake packages through their
-package management system. If you do not have CMake or a new enough
-version, you can download the latest version at
-"https://cmake.org/download/"_https://cmake.org/download/.  Instructions
-on how to install it on various platforms can be found
-"here"_https://cmake.org/install/.
+Most Linux distributions offer precompiled cmake packages through
+their package management system. If you do not have CMake or a new
+enough version, you can download the latest version at
+"https://cmake.org/download/"_https://cmake.org/download/.
+Instructions on how to install it on various platforms can be found
+"on this page"_https://cmake.org/install/.
diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
index ad981099cd..b13fe85801 100644
--- a/doc/src/Build_extras.txt
+++ b/doc/src/Build_extras.txt
@@ -10,14 +10,18 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 Packages with extra build options :h3
 
 When building with some packages, additional steps may be required,
-beyond just "-D PKG_NAME=yes" for CMake or "make yes-name" for make,
+in addition to:
+
+-D PKG_NAME=yes    # CMake
+make yes-name      # make :pre
+
 as described on the "Build_package"_Build_package.html doc page.
 
-For a CMake build there may be additional variables that can be set.
-For a build with make, a provided library under the lammps/lib
-directory may need to be built first.  Or an external library may need
-to be downloaded and built, and you may need to tell LAMMPS where it
-is found on your system.
+For a CMake build there may be additional optional or required
+variables to set.  For a build with make, a provided library under the
+lammps/lib directory may need to be built first.  Or an external
+library may need to exist on your system or be downloaded and built.
+You may need to tell LAMMPS where it is found on your system.
 
 This is the list of packages that may require additional steps.
 
@@ -48,7 +52,7 @@ This is the list of packages that may require additional steps.
 :line
 :line
 
-COMPRESS package
+COMPRESS package :h4,link(compress)
 
 To build with this package you must have the zlib compression library
 available on your system.
@@ -70,9 +74,8 @@ name.
 
 GPU package :h4,link(gpu)
 
-To build with this package, you need to choose options for precision
-and which GPU hardware to build for.  To build with make you also need
-to build the library in lib/gpu first.
+To build with this package, you must choose options for precision and
+which GPU hardware to build for.
 
 [CMake build]:
 
@@ -80,9 +83,9 @@ to build the library in lib/gpu first.
 -D GPU_PREC=value     # precision setting
                       # value = single or mixed (default) or double
 -D OCL_TUNE=value     # hardware choice for GPU_API=opencl
-                      # generic (default) or intel (Intel CPU) or phi (Intel Xeon Phi) or fermi (NVIDIA) or kepler (NVIDIA) or cypress (NVIDIA)
+                      # generic (default) or intel (Intel CPU) or phi (Intel Xeon Phi) or fermi, kepler, cypress (NVIDIA)
 -D GPU_ARCH=value     # hardware choice for GPU_API=cuda
-                      # value = sm20 (Fermi) or sm30 or sm (Kepler) or sm50 (Maxwell) or sm60 (Pascal) or sm70 (Volta)
+                      # value = sm20 (Fermi) or sm30 (Kepler) or sm50 (Maxwell) or sm60 (Pascal) or sm70 (Volta)
                       # default is Cuda-compiler dependent, but typically Fermi
 -D CUDPP_OPT=value    # optimization setting for GPU_API=cudea
                       # enables CUDA Performance Primitives Optimizations
@@ -90,12 +93,13 @@ to build the library in lib/gpu first.
 
 [Traditional make]:
 
-You must first build the GPU library in lib/gpu.  You can do this
-manually if you prefer; follow the instructions in lib/gpu/README.
-Note that the GPU library uses MPI calls, so you must use the same MPI
-library (or the STUBS library) settings as the main LAMMPS code.  This
-also applies to the -DLAMMPS_BIGBIG, -DLAMMPS_SMALLBIG, or
--DLAMMPS_SMALLSMALL settings in whichever Makefile you use.
+Before building LAMMPS, you must build the GPU library in lib/gpu.
+You can do this manually if you prefer; follow the instructions in
+lib/gpu/README.  Note that the GPU library uses MPI calls, so you must
+use the same MPI library (or the STUBS library) settings as the main
+LAMMPS code.  This also applies to the -DLAMMPS_BIGBIG,
+-DLAMMPS_SMALLBIG, or -DLAMMPS_SMALLSMALL settings in whichever
+Makefile you use.
 
 You can also build the library in one step from the lammps/src dir,
 using a command like these, which simply invoke the lib/gpu/Install.py
@@ -111,8 +115,8 @@ specified by the "-m" switch.  For your convenience, machine makefiles
 for "mpi" and "serial" are provided, which have the same settings as
 the corresponding machine makefiles in the main LAMMPS source
 folder. In addition you can alter 4 important settings in the
-Makefile.machine you start from, via the -h, -a, -p, -e switches, and
-also save a copy of the new Makefile, if desired:
+Makefile.machine you start from via the -h, -a, -p, -e switches, and
+also save a copy of the new Makefile if desired:
 
 CUDA_HOME = where NVIDIA CUDA software is installed on your system
 CUDA_ARCH = what GPU hardware you have (see help message for details)
@@ -127,10 +131,10 @@ your machine are not correct, the LAMMPS build will fail, and
 lib/gpu/Makefile.lammps may need to be edited.
 
 NOTE: If you re-build the GPU library in lib/gpu, you should always
-un-install the GPU package, then re-install it and re-build LAMMPS.
-This is because the compilation of files in the GPU package use the
-library settings from the lib/gpu/Makefile.machine used to build the
-GPU library.
+un-install the GPU package in lammps/src, then re-install it and
+re-build LAMMPS.  This is because the compilation of files in the GPU
+package uses the library settings from the lib/gpu/Makefile.machine
+used to build the GPU library.
 
 :line
  
@@ -159,14 +163,13 @@ package?" page.
 
 [CMake build]:
 
--D PKG_KIM=on            # enable KIM package
 -D DOWNLOAD_KIM=value    # download OpenKIM API v1 for build, value = off (default) or on
--D KIM_LIBRARY=path      # (only needed if at custom location) path to KIM shared library
--D KIM_INCLUDE_DIR=path  # (only needed if at custom location) path to KIM include directory :pre
+-D KIM_LIBRARY=path      # path to KIM shared library (only needed if a custom location) 
+-D KIM_INCLUDE_DIR=path  # path to KIM include directory (only needed if a custom location) :pre
 
 [Traditional make]:
 
-You can do download and build the KIM library manually if you prefer;
+You can download and build the KIM library manually if you prefer;
 follow the instructions in lib/kim/README.  You can also do it in one
 step from the lammps/src dir, using a command like these, which simply
 invoke the lib/kim/Install.py script with the specified args.
@@ -183,35 +186,34 @@ make lib-kim args="-p /usr/local/kim-api -a EAM_Dynamo_Ackland_W__MO_14162719659
  
 KOKKOS package :h4,link(kokkos)
 
-To build with this package, you have to choose a Kokkos setting for
-either CPU (multi-threading via OpenMP) or KNL (OpenMP) or GPU (Cuda)
-support.
+To build with this package, you must choose which hardware you want to
+build for, either CPUs (multi-threading via OpenMP) or KNLs (OpenMP)
+or GPUs (Cuda).
 
 [CMake build]:
 
-TODO: how to do this, how to select CPU vs KNL vs GPU, and other
-traditional make settings
+TODO: how to do this, how to select CPU vs KNL vs GPU, and specify
+the particular flavor of hardware: e.g. HSW vs BWL
 
 [Traditional make]:
 
-how to choose these 3 things: mode archgpu=N archcpu=SNB
-  mode = omp or cuda or phi (def = KOKKOS_DEVICES setting in Makefile )
-  archgpu = number like 35 (Kepler) or 21 (Fermi) (def = none)
-    sets KOKKOS_ARCH for GPU to appropriate value
-  archcpu = SNB or HSW or BGQ or Power7 or Power8 (def = none)
-    for CPU = SandyBridge, Haswell, BGQ, Power7, Power8
-    sets KOKKOS_ARCH for GPU to appropriate value :pre
-
-For the KOKKOS package, you have 3 choices when building.  You can
-build with either CPU or KNL or GPU support.  Each choice requires
-additional settings in your Makefile.machine for the KOKKOS_DEVICES
-and KOKKOS_ARCH settings.  See the src/MAKE/OPTIONS/Makefile.kokkos*
-files for examples.
+Choose which hardware to support in Makefile.machine via
+KOKKOS_DEVICES and KOKKOS_ARCH settings.  See the
+src/MAKE/OPTIONS/Makefile.kokkos* files for examples.
 
 For multicore CPUs using OpenMP:
 
 KOKKOS_DEVICES = OpenMP
-KOKKOS_ARCH = HSW           # HSW = Haswell, SNB = SandyBridge, BDW = Broadwell, etc :pre
+KOKKOS_ARCH = HSW :pre
+
+Possible values are:
+
+HSW for Intel Haswell
+SNB for Intel SandyBridge
+BDW for Intel Broadwell
+BGQ for IBM BlueGene Q
+Power7 for IBM
+Power8 for IBM :ul
 
 For Intel KNLs using OpenMP:
 
@@ -227,21 +229,13 @@ KOKKOS_ARCH = Kepler37,Power8     # K80 hosted by an IBM Power8, etc :pre
 For GPUs, you also need these 2 lines in your Makefile.machine before
 the CC line is defined, in this case for use with OpenMPI mpicxx.  The
 2 lines define a nvcc wrapper compiler, which will use nvcc for
-compiling CUDA files or use a C++ compiler for non-Kokkos, non-CUDA
+compiling CUDA files and use a C++ compiler for non-Kokkos, non-CUDA
 files.
 
 KOKKOS_ABSOLUTE_PATH = $(shell cd $(KOKKOS_PATH); pwd)
 export OMPI_CXX = $(KOKKOS_ABSOLUTE_PATH)/config/nvcc_wrapper
 CC =		mpicxx :pre
 
-Once you have an appropriate Makefile.machine, you can
-install/un-install the package and build LAMMPS in the usual manner.
-Note that you cannot build one executable to run on multiple hardware
-targets (CPU or KNL or GPU).  You need to build LAMMPS once for each
-hardware target, to produce a separate executable.  Also note that we
-do not recommend building with other acceleration packages installed
-(GPU, OPT, USER-INTEL, USER-OMP) when also building with KOKKOS.
-
 :line
  
 LATTE package :h4,link(latte)
@@ -251,16 +245,16 @@ library.
 
 [CMake build]:
 
--D PKG_LATTE=on            # enable LATTE package
 -D DOWNLOAD_LATTE=value    # download LATTE for build, value = off (default) or on
--D LATTE_LIBRARY=path      # (only needed if at custom location) path to LATTE shared library :pre
+-D LATTE_LIBRARY=path      # path to LATTE shared library (only needed if a custom location) :pre
 
 [Traditional make]:
 
-You can do this manually if you prefer; follow the instructions in
-lib/latte/README.  You can also do it in one step from the lammps/src
-dir, using a command like these, which simply invokes the
-lib/latte/Install.py script with the specified args:
+You can download and build the LATTE library manually if you prefer;
+follow the instructions in lib/latte/README.  You can also do it in
+one step from the lammps/src dir, using a command like these, which
+simply invokes the lib/latte/Install.py script with the specified
+args:
 
 make lib-latte                          # print help message
 make lib-latte args="-b"                # download and build in lib/latte/LATTE-master
@@ -271,7 +265,7 @@ make lib-latte args="-b -m gfortran"    # download and build in lib/latte and
 
 Note that 3 symbolic (soft) links, "includelink" and "liblink" and
 "filelink.o", are created in lib/latte to point into the LATTE home
-dir.  When LAMMPS builds in src it will use these links.  You should
+dir.  When LAMMPS itself is built it will use these links.  You should
 also check that the Makefile.lammps file you create is appropriate for
 the compiler you use on your system to build LATTE.
 
@@ -281,23 +275,23 @@ MEAM package :h4,link(meam)
 
 NOTE: the use of the MEAM package is discouraged, as it has been
 superseded by the USER-MEAMC package, which is a direct translation of
-the Fortran code in the MEAM library to C++. The code in USER-MEAMC is
-functionally completely equivalent, fully supports use in "pair_style
-hybrid"_pair_hybrid.html, and has optimizations (e.g. no translations of
-data structures or neighbor lists are required) that make it
-significantly faster than the MEAM package.
+the Fortran code in the MEAM library to C++. The code in USER-MEAMC
+should be functionally equivalent to the MEAM package, fully supports
+use of "pair_style hybrid"_pair_hybrid.html (the MEAM packaged doesn
+not), and has optimizations that make it significantly faster than the
+MEAM package.
 
 [CMake build]:
 
--D PKG_MEAM=on            # enable MEAM package :pre
+No additional settings are needed besides "-D PKG_MEAM=yes".
 
 [Traditional make]:
 
-Before building LAMMPS with this package, you must first build the
-MEAM library in lib/meam.  You can do this manually if you prefer;
-follow the instructions in lib/meam/README.  You can also do it in one
-step from the lammps/src dir, using a command like these, which simply
-invoke the lib/meam/Install.py script with the specified args:
+Before building LAMMPS, you must build the MEAM library in lib/meam.
+You can build the MEAM library manually if you prefer; follow the
+instructions in lib/meam/README.  You can also do it in one step from
+the lammps/src dir, using a command like these, which simply invoke
+the lib/meam/Install.py script with the specified args:
 
 make lib-meam                  # print help message
 make lib-meam args="-m mpi"    # build with default Fortran compiler compatible with your MPI library
@@ -318,28 +312,24 @@ file.
  
 MSCG package :h4,link(mscg)
 
-Before building LAMMPS with this package, you must first download and
-build the MS-CG library.  
+To build with this package, you must download and build the MS-CG
+library.  Building the MS-CG library and using it from LAMMPS requires
+a C++11 compatible compiler and that the GSL (GNU Scientific Library)
+headers and libraries are installed on your machine.  See the
+lib/mscg/README and MSCG/Install files for more details.
 
 [CMake build]:
 
--D PKG_MSCG=on            # enable MSCG package
 -D DOWNLOAD_MSCG=value    # download MSCG for build, value = off (default) or on
--D MSCG_LIBRARY=path      # (only needed if at custom location) path to MSCG shared library
--D MSCG_INCLUDE_DIR=path  # (only needed if at custom location) path to MSCG include directory :pre
+-D MSCG_LIBRARY=path      # path to MSCG shared library (only needed if a custom location) 
+-D MSCG_INCLUDE_DIR=path  # path to MSCG include directory (only needed if a custom location) :pre
 
 [Traditional make]:
 
-Building the MS-CG library and using it from
-LAMMPS requires a C++11 compatible compiler and that the GSL
-(GNU Scientific Library) headers and libraries are installed on your
-machine.  See the lib/mscg/README and MSCG/Install files for more details.
-
-Assuming these libraries are in place, you can do the download and
-build of MS-CG manually if you prefer; follow the instructions in
-lib/mscg/README.  You can also do it in one step from the lammps/src
-dir, using a command like these, which simply invoke the
-lib/mscg/Install.py script with the specified args:
+You can download and build the MS-CG library manually if you prefer;
+follow the instructions in lib/mscg/README.  You can also do it in one
+step from the lammps/src dir, using a command like these, which simply
+invoke the lib/mscg/Install.py script with the specified args:
 
 make lib-mscg             # print help message
 make lib-mscg args="-b -m serial"   # download and build in lib/mscg/MSCG-release-master
@@ -348,9 +338,10 @@ make lib-mscg args="-b -m mpi"      # download and build in lib/mscg/MSCG-releas
                                     # with the settings compatible with "make mpi"
 make lib-mscg args="-p /usr/local/mscg-release" # use the existing MS-CG installation in /usr/local/mscg-release :pre
 
-Note that 2 symbolic (soft) links, "includelink" and "liblink", will be created in lib/mscg
-to point to the MS-CG src/installation dir.  When LAMMPS is built in src it will use these links.
-You should not need to edit the lib/mscg/Makefile.lammps file.
+Note that 2 symbolic (soft) links, "includelink" and "liblink", will
+be created in lib/mscg to point to the MS-CG src/installation dir.
+When LAMMPS is built in src it will use these links.  You should not
+need to edit the lib/mscg/Makefile.lammps file.
 
 :line
 
@@ -358,16 +349,14 @@ OPT package :h4,link(opt)
 
 [CMake build]:
 
--D PKG_OPT=on            # enable OPT package :pre
+No additional settings are needed besides "-D PKG_OPT=yes".
 
 [Traditional make]:
 
-NOTE: The compile flag "-restrict" must be used to build LAMMPS with
-the OPT package when using Intel compilers.  It should be added to
-the CCFLAGS line of your Makefile.machine.  See Makefile.opt in
-src/MAKE/OPTIONS for an example.
-
-CCFLAGS: add -restrict for Intel compilers :ul
+The compile flag "-restrict" must be used to build LAMMPS with the OPT
+package when using Intel compilers.  It should be added to the CCFLAGS
+line of your Makefile.machine.  See src/MAKE/OPTIONS/Makefile.opt for
+an example.
 
 :line
  
@@ -375,15 +364,15 @@ POEMS package :h4,link(poems)
 
 [CMake build]:
 
--D PKG_POEMS=on            # enable POEMS package :pre
+No additional settings are needed besides "-D PKG_OPT=yes".
 
 [Traditional make]:
 
-Before building LAMMPS with this package, you must first build the
-POEMS library in lib/poems.  You can do this manually if you prefer;
-follow the instructions in lib/poems/README.  You can also do it in
-one step from the lammps/src dir, using a command like these, which
-simply invoke the lib/poems/Install.py script with the specified args:
+Before building LAMMPS, you must build the POEMS library in lib/poems.
+You can do this manually if you prefer; follow the instructions in
+lib/poems/README.  You can also do it in one step from the lammps/src
+dir, using a command like these, which simply invoke the
+lib/poems/Install.py script with the specified args:
 
 make lib-poems                   # print help message
 make lib-poems args="-m serial"  # build with GNU g++ compiler (settings as with "make serial")
@@ -402,47 +391,52 @@ a corresponding Makefile.lammps.machine file.
  
 PYTHON package :h4,link(python)
 
-Building with the PYTHON package assumes you have a Python shared
+Building with the PYTHON package requires you have a Python shared
 library available on your system, which needs to be a Python 2
-version, 2.6 or later.  Python 3 is not yet supported.  See the
+version, 2.6 or later.  Python 3 is not yet supported.  See
 lib/python/README for more details.
 
 [CMake build]:
 
--D PKG_PYTHON=on            # enable PYTHON package
--D PYTHON_EXECUTABLE=path   # path to Python executable which should be used :pre
+-D PYTHON_EXECUTABLE=path   # path to Python executable to use :pre
 
-If you want to use a different Python version other than your system default, you can
-either create a virtualenv, activate it and then run cmake or use the PYTHON_EXECUTABLE
-variable to specify which Python interpreter should be used. Please note that you will
-also need to have the development headers installed, e.g. python2-devel.
+Without this setting, CMake will you your system default Python.  To
+use a different Python version, you can either create a virtualenv,
+activate it and then run cmake.  Or you can set the PYTHON_EXECUTABLE
+variable to specify which Python interpreter should be used.  Note
+note that you will also need to have the development headers installed
+for this version, e.g. python2-devel.
 
 [Traditional make]:
 
 The build uses the lib/python/Makefile.lammps file in the compile/link
-process.  You should only need to create a new Makefile.lammps.* file
-(and copy it to Makefile.lammps) if the LAMMPS build fails.
+process to find Python.  You should only need to create a new
+Makefile.lammps.* file (and copy it to Makefile.lammps) if the LAMMPS
+build fails.
 
 :line
  
 REAX package :h4,link(reax)
 
-NOTE: the use of the REAX package is discouraged, as it is no longer
-maintained. Please use the USER-REAX package instead, and possibly the
-KOKKOS enabled variant of that, which has a more robust memory
-management.
+NOTE: the use of the REAX package and its "pair_style
+reax"_pair_reax.html command is discouraged, as it is no longer
+maintained.  Please use the USER-REAXC package and its "pair_style
+reax/c"_pair_reaxc.html command instead, and possibly its KOKKOS
+enabled variant (pair_style reax/c/kk), which has a more robust memory
+management.  See the "pair_style reax/c"_pair_reaxc.html doc page for
+details.
 
 [CMake build]:
 
--D PKG_REAX=on            # enable REAX package :pre
+No additional settings are needed besides "-D PKG_REAX=yes".
 
 [Traditional make]:
 
-Before building LAMMPS with this package, you must first build the
-REAX library in lib/reax.  You can do this manually if you prefer;
-follow the instructions in lib/reax/README.  You can also do it in one
-step from the lammps/src dir, using a command like these, which simply
-invoke the lib/reax/Install.py script with the specified args:
+Before building LAMMPS, you must build the REAX library in lib/reax.
+You can do this manually if you prefer; follow the instructions in
+lib/reax/README.  You can also do it in one step from the lammps/src
+dir, using a command like these, which simply invoke the
+lib/reax/Install.py script with the specified args:
 
 make lib-reax                    # print help message
 make lib-reax args="-m serial"   # build with GNU Fortran compiler (settings as with "make serial")
@@ -463,17 +457,20 @@ file.
 
 VORONOI package :h4,link(voronoi)
 
+To build with this package, you must download and build the "Voro++
+library"_voro_home.
+
+:link(voro_home,http://math.lbl.gov/voro++)
+
 [CMake build]:
 
--D PKG_VORONOI=on            # enable VORONOI package
--D DOWNLOAD_VORO=value    # download VORO for build, value = off (default) or on
+-D DOWNLOAD_VORO=value    # download Voro++ for build, value = off (default) or on
 -D VORO_LIBRARY=path      # (only needed if at custom location) path to VORO shared library
 -D VORO_INCLUDE_DIR=path  # (only needed if at custom location) path to VORO include directory :pre
 
 [Traditional make]:
 
-Before building LAMMPS with this package, you must first download and
-build the Voro++ library.  You can do this manually if you prefer;
+You can download and build the Voro++ library manually if you prefer;
 follow the instructions in lib/voronoi/README.  You can also do it in
 one step from the lammps/src dir, using a command like these, which
 simply invoke the lib/voronoi/Install.py script with the specified
@@ -494,18 +491,20 @@ the lib/voronoi/Makefile.lammps file.
 
 USER-ATC package :h4,link(user-atc)
 
+The USER-ATC package requires the MANYBODY package also be installed.
+
 [CMake build]:
 
--D PKG_USER-ATC=on            # enable USER-ATC package
--D PKG_MANYBODY=on            # requires MANYBODY package :pre
+No additional settings are needed besides "-D PKG_REAX=yes" and "-D
+PKG_MANYBODY=yes".
 
 [Traditional make]:
 
-Before building LAMMPS with this package, you must first build the ATC
-library in lib/atc.  You can do this manually if you prefer; follow
-the instructions in lib/atc/README.  You can also do it in one step
-from the lammps/src dir, using a command like these, which simply
-invoke the lib/atc/Install.py script with the specified args:
+Before building LAMMPS, you must build the ATC library in lib/atc.
+You can do this manually if you prefer; follow the instructions in
+lib/atc/README.  You can also do it in one step from the lammps/src
+dir, using a command like these, which simply invoke the
+lib/atc/Install.py script with the specified args:
 
 make lib-atc                      # print help message
 make lib-atc args="-m serial"     # build with GNU g++ compiler and MPI STUBS (settings as with "make serial")
@@ -523,30 +522,29 @@ file.
 Note that the Makefile.lammps file has settings for the BLAS and
 LAPACK linear algebra libraries.  As explained in lib/atc/README these
 can either exist on your system, or you can use the files provided in
-lib/linalg.  In the latter case you also need to build the library
-in lib/linalg with a command like these:
+lib/linalg.  In the latter case you also need to build the library in
+lib/linalg with a command like these:
 
 make lib-linalg                     # print help message
 make lib-linalg args="-m serial"    # build with GNU Fortran compiler (settings as with "make serial")
 make lib-linalg args="-m mpi"       # build with default MPI Fortran compiler (settings as with "make mpi")
 make lib-linalg args="-m gfortran"  # build with GNU Fortran compiler :pre
 
-
 :line
 
 USER-AWPMD package :h4,link(user-awpmd)
 
 [CMake build]:
 
--D PKG_USER-AWPMD=on            # enable USER-AWPMD package :pre
+No additional settings are needed besides "-D PKG_USER-AQPMD=yes".
 
 [Traditional make]:
 
-Before building LAMMPS with this package, you must first build the
-AWPMD library in lib/awpmd.  You can do this manually if you prefer;
-follow the instructions in lib/awpmd/README.  You can also do it in
-one step from the lammps/src dir, using a command like these, which
-simply invoke the lib/awpmd/Install.py script with the specified args:
+Before building LAMMPS, you must build the AWPMD library in lib/awpmd.
+You can do this manually if you prefer; follow the instructions in
+lib/awpmd/README.  You can also do it in one step from the lammps/src
+dir, using a command like these, which simply invoke the
+lib/awpmd/Install.py script with the specified args:
 
 make lib-awpmd                   # print help message
 make lib-awpmd args="-m serial"  # build with GNU g++ compiler and MPI STUBS (settings as with "make serial")
@@ -578,16 +576,15 @@ USER-COLVARS package :h4,link(user-colvars)
 
 [CMake build]:
 
--D PKG_USER-COLVARS=on            # enable USER-COLVARS package :pre
+No additional settings are needed besides "-D PKG_USER-COLVARS=yes".
 
 [Traditional make]:
 
-Before building LAMMPS with this package, you must first build the
-COLVARS library in lib/colvars.  You can do this manually if you
-prefer; follow the instructions in lib/colvars/README.  You can also
-do it in one step from the lammps/src dir, using a command like these,
-which simply invoke the lib/colvars/Install.py script with the
-specified args:
+Before building LAMMPS, you must build the COLVARS library in
+lib/colvars.  You can do this manually if you prefer; follow the
+instructions in lib/colvars/README.  You can also do it in one step
+from the lammps/src dir, using a command like these, which simply
+invoke the lib/colvars/Install.py script with the specified args:
 
 make lib-colvars                      # print help message
 make lib-colvars args="-m serial"     # build with GNU g++ compiler (settings as with "make serial")
@@ -606,25 +603,27 @@ a corresponding Makefile.lammps.machine file.
 
 USER-H5MD package :h4,link(user-h5md)
 
+To build with this package you must have the HDF5 software package
+installed on your system, which should include the h5cc compiler and
+the HDF5 library.
+
 [CMake build]:
 
--D PKG_USER-H5MD=on            # enable USER-H5MD package :pre
+No additional settings are needed besides "-D PKG_USER-H5MD=yes".
 
-This will autodetect the H5MD library if it is installed on your system at standard locations.
-Several advanced H5MD options exist if you need to specify where it was installed. Run with
-ccmake to see these options.
+This should autodetect the H5MD library on your system.  Several
+advanced CMake H5MD options exist if you need to specify where it is
+installed.  Use the ccmake (terminal window) or cmake-gui (graphical)
+tools to see these options and set them interactively from their user
+interfaces.
 
 [Traditional make]:
 
-Note that to follow these steps to compile and link to the CH5MD
-library, you need the standard HDF5 software package installed on your
-system, which should include the h5cc compiler and the HDF5 library.
-
-Before building LAMMPS with this package, you must first build the
-CH5MD library in lib/h5md.  You can do this manually if you prefer;
-follow the instructions in lib/h5md/README.  You can also do it in one
-step from the lammps/src dir, using a command like these, which simply
-invoke the lib/h5md/Install.py script with the specified args:
+Before building LAMMPS, you must build the CH5MD library in lib/h5md.
+You can do this manually if you prefer; follow the instructions in
+lib/h5md/README.  You can also do it in one step from the lammps/src
+dir, using a command like these, which simply invoke the
+lib/h5md/Install.py script with the specified args:
 
 make lib-h5md                     # print help message
 make lib-hm5d args="-m h5cc"      # build with h5cc compiler :pre
@@ -641,84 +640,79 @@ file.
 
 USER-INTEL package :h4,link(user-intel)
 
+To build with this package, you must choose which hardware you want to
+build for, either Intel CPUs or Intel KNLs.  You should also typically
+install the USER-OMP package, as it can be used in tandem with the
+USER-INTEL package to good effect, as explained on the "Speed
+intel"_Speed_intel.html doc page.
+
 [CMake build]:
 
-TODO: how to choose CPU vs KNL ??
+TODO: How do you choose CPU vs KKL, so that CMake knows
+which flags to add to CCFLAGS ??
 
 [Traditional make]:
 
-For the USER-INTEL package, you have 2 choices when building.  You can
-build with either CPU or KNL support.  Each choice requires additional
-settings in your Makefile.machine for CCFLAGS and LINKFLAGS and
-optimized malloc libraries.  See the
-src/MAKE/OPTIONS/Makefile.intel_cpu and src/MAKE/OPTIONS/Makefile.knl
-files for examples.
+Choose which hardware to compile for in Makefile.machine via the
+following settings.  See src/MAKE/OPTIONS/Makefile.intel_cpu* and
+Makefile.knl files for examples.
 
 For CPUs:
 
-OPTFLAGS =      -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits
+OPTFLAGS =      -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -qopt-zmm-usage=high
 CCFLAGS =	-g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload \
--fno-alias -ansi-alias -restrict $(OPTFLAGS)
+                -fno-alias -ansi-alias -restrict $(OPTFLAGS)
 LINKFLAGS =	-g -qopenmp $(OPTFLAGS)
-LIB =           -ltbbmalloc -ltbbmalloc_proxy :pre
+LIB =           -ltbbmalloc :pre
 
 For KNLs:
 
 OPTFLAGS =      -xMIC-AVX512 -O2 -fp-model fast=2 -no-prec-div -qoverride-limits
 CCFLAGS =	-g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload \
--fno-alias -ansi-alias -restrict $(OPTFLAGS)
+                -fno-alias -ansi-alias -restrict $(OPTFLAGS)
 LINKFLAGS =	-g -qopenmp $(OPTFLAGS)
 LIB =           -ltbbmalloc :pre
 
-Once you have an appropriate Makefile.machine, you can
-install/un-install the package and build LAMMPS in the usual manner.
-Note that you cannot build one executable to run on multiple hardware
-targets (Intel CPUs or KNL).  You need to build LAMMPS once for each
-hardware target, to produce a separate executable.
-
-You should also typically install the USER-OMP package, as it can be
-used in tandem with the USER-INTEL package to good effect, as
-explained on the "Speed intel"_Speed_intel.html doc page.
-
 :line
 
 USER-MOLFILE package :h4,link(user-molfile)
 
 [CMake build]:
 
--D PKG_USER-MOLFILE=on            # enable USER-MOLFILE package :pre
+No additional settings are needed besides "-D PKG_USER-MOLFILE=yes".
 
 [Traditional make]:
 
-Note that the lib/molfile/Makefile.lammps file has a setting for a
-dynamic loading library libdl.a that should is typically present on
-all systems, which is required for LAMMPS to link with this package.
-If the setting is not valid for your system, you will need to edit the
-Makefile.lammps file.  See lib/molfile/README and
-lib/molfile/Makefile.lammps for details.
+The lib/molfile/Makefile.lammps file has a setting for a dynamic
+loading library libdl.a that is typically present on all systems.  It
+is required for LAMMPS to link with this package.  If the setting is
+not valid for your system, you will need to edit the Makefile.lammps
+file.  See lib/molfile/README and lib/molfile/Makefile.lammps for
+details.
 
 :line
 
 USER-NETCDF package :h4,link(user-netcdf)
 
+To build with this package you must have the NetCDF library installed
+on your system.
+
 [CMake build]:
 
--D PKG_USER-NETCDF=on            # enable USER-NETCDF package :pre
+No additional settings are needed besides "-D PKG_USER-NETCDF=yes".
 
-This will autodetect the NETCDF library if it is installed on your
-system at standard locations. Several advanced NETCDF options exist,
-for example if you need to specify where it was installed. Best use
-the ccmake (console) or cmake-gui (graphical) tools to see these
-options and set them interactively from their user interfaces.
+This should autodetect the NETCDF library if it is installed on your
+system at standard locations.  Several advanced CMake NETCDF options
+exist if you need to specify where it was installed.  Use the ccmake
+(terminal window) or cmake-gui (graphical) tools to see these options
+and set them interactively from their user interfaces.
 
 [Traditional make]:
 
-Note that to follow these steps, you need the standard NetCDF software
-package installed on your system.  The lib/netcdf/Makefile.lammps file
-has settings for NetCDF include and library files that LAMMPS needs to
-compile and linkk with this package.  If the settings are not valid
-for your system, you will need to edit the Makefile.lammps file.  See
-lib/netcdf/README for details.
+The lib/netcdf/Makefile.lammps file has settings for NetCDF include
+and library files which LAMMPS needs to build with this package.  If
+the settings are not valid for your system, you will need to edit the
+Makefile.lammps file.  See lib/netcdf/README for details.
 
 :line
 
@@ -726,47 +720,53 @@ USER-OMP package :h4,link(user-omp)
 
 [CMake build]:
 
--D PKG_USER-OMP=on            # enable USER-OMP package
--D BUILD_OMP=on               # enable OpenMP support :pre
+No additional settings are needed besides "-D PKG_USER-OMP=yes".
+
+TODO: Is "-D BUILD_OMP=yes" also needed?  Or is it enabled
+if PKG_USER-OMP is set?
 
 [Traditional make]:
 
-CCFLAGS: add -fopenmp (or -qopenmp -restrict when using Intel compilers on Linux)
-LINKFLAGS: add -fopenmp (or -qopenmp when using Intel compilers on Linux) :ul
+These compile and link flags must be added to your Makefile.machine file.
+See src/MAKE/OPTIONS/Makefile.omp for an example.
 
-For other platforms and compilers, please consult the documentation for the
-corresponding compiler.
+CCFLAGS: -fopenmp
+CCFLAGS: -qopenmp -restrict     # for Intel compilers on Linux
+LINKFLAGS: -fopenmp
+LINKFLAGS: -qopenmp             # for Intel compilers on Linux :pre
+
+For other platforms and compilers, consult the OpenMP documentation
+for the compiler.
 
 :line
 
 USER-QMMM package :h4,link(user-qmmm)
 
-The LAMMPS executable these steps produce is not yet functional for a
-QM/MM simulation.  You must also build Quantum ESPRESSO and create a
-new executable which links LAMMPS and Quantum ESPRESSO together.
-These are steps 3 and 4 described in the lib/qmmm/README file.
-Unfortunately, the Quantum ESPRESSO developers keep breaking the
-interface that the QM/MM code in LAMMPS is using, so that currently
-(Summer 2018) using this feature requires either correcting the
-library interface feature in recent Quantum ESPRESSO releases, or
-using an outdated version of QE. The last version of Quantum ESPRESSO
-known to work with this QM/MM interface in LAMMPS was version 5.4.1
-from 2016.
+NOTE: The LAMMPS executable these steps produce is not yet functional
+for a QM/MM simulation.  You must also build Quantum ESPRESSO and
+create a new executable (pwqmmm.x) which links LAMMPS and Quantum
+ESPRESSO together.  These are steps 3 and 4 described in the
+lib/qmmm/README file.  Unfortunately, the Quantum ESPRESSO developers
+keep breaking the interface that the QM/MM code in LAMMPS is using, so
+that currently (summer 2018) using this feature requires either
+correcting the library interface feature in recent Quantum ESPRESSO
+releases, or using an outdated version of QE. The last version of
+Quantum ESPRESSO known to work with this QM/MM interface in LAMMPS was
+version 5.4.1 from 2016.
 
 [CMake build]:
 
-The CMake build system currently does not support building the
-full, QM/MM capable hybrid executable of LAMMPS and QE called
-pwqmmm.x. Please use the traditional make procedure.
+The CMake build system currently does not support building the full
+QM/MM-capable hybrid executable of LAMMPS and QE called pwqmmm.x.  You
+must use the traditional make build for this package.
 
 [Traditional make]:
 
-Before building LAMMPS with this package, you must first build the
-QMMM library in lib/qmmm.  You can do this manually if you prefer;
-follow the first two steps explained in lib/qmmm/README.  You can
-also do it in one step from the lammps/src dir, using a command like
-these, which simply invoke the lib/qmmm/Install.py script with the
-specified args:
+Before building LAMMPS, you must build the QMMM library in lib/qmmm.
+You can do this manually if you prefer; follow the first two steps
+explained in lib/qmmm/README.  You can also do it in one step from the
+lammps/src dir, using a command like these, which simply invoke the
+lib/qmmm/Install.py script with the specified args:
 
 make lib-qmmm                      # print help message
 make lib-qmmm args="-m serial"     # build with GNU Fortran compiler (settings as in "make serial")
@@ -781,89 +781,95 @@ necessary, you can edit/create a new lib/qmmm/Makefile.machine file
 for your system, which should define an EXTRAMAKE variable to specify
 a corresponding Makefile.lammps.machine file.
 
-You can then install/un-install the package and build LAMMPS in the
-usual manner. After completing the LAMMPS build and compiling Quantum
-ESPRESSO with external library support, you can go back to the lib/qmmm
-folder and follow the instructions on the README file to build the
-combined LAMMPS/QE QM/MM executable, pwqmmm.x in the lib/qmmm folder.
+You can then install QMMM package and build LAMMPS in the usual
+manner.  After completing the LAMMPS build and compiling Quantum
+ESPRESSO with external library support, go back to the lib/qmmm folder
+and follow the instructions on the README file to build the combined
+LAMMPS/QE QM/MM executable (pwqmmm.x) in the lib/qmmm folder.
 
 :line
 
 USER-QUIP package :h4,link(user-quip)
 
+To build with this package, you must download and build the QUIP
+library.  It can be obtained from GitHub.  For support of GAP
+potentials, additional files with specific licensing conditions need
+to be downloaded and configured.  See step 1 and step 1.1 in the
+lib/quip/README file for details on how to do this.
+
 [CMake build]:
 
--D PKG_USER-QUIP=on                  # enable USER-QUIP package
--D QUIP_LIBRARIES=/path/to/libquip.a # set the location of the quip library :pre
+-D QUIP_LIBRARIES=path    # path to libquip.a (only needed if a custom location) 
 
-This will include the USER-QUIP package and tell the build system where
-to find the quip library. You have to first follow the steps to compile
-and install the QUIP library in the same was as for the traditional
-make build process (see below).
+CMake will not download and build the QUIP library.  But once you have
+done that, a CMake build of LAMMPS with "-D PKG_USER-QUIP=yes" should
+work.  Set QUIP_LIBRARIES if CMake cannot find the QUIP library.
 
 [Traditional make]:
 
-Note that to follow these steps to compile and link to the QUIP
-library, you must first download and build QUIP on your systems.  It
-can be obtained from GitHub. For support of GAP potentials, additional
-files, with specific licensing conditions need to be downloaded and
-configured. See step 1 and step 1.1 in the lib/quip/README file for
-details on how to do this.  Note that it requires setting two
-environment variables, QUIP_ROOT and QUIP_ARCH, which will be accessed
-by the lib/quip/Makefile.lammps file which is used when you compile and
-link LAMMPS with this package.  You should only need to edit this file
-if the LAMMPS build can not use its settings to successfully build on
-your system.
+The download/build procedure for the QUIP library, described in
+lib/quip/README file requires setting two environment variables,
+QUIP_ROOT and QUIP_ARCH.  These are accessed by the
+lib/quip/Makefile.lammps file which is used when you compile and link
+LAMMPS with this package.  You should only need to edit
+Makefile.lammps if the LAMMPS build can not use its settings to
+successfully build on your system.
 
 :line
 
 USER-SMD package :h4,link(user-smd)
 
+To build with this package, you must download the Eigen library.
+Eigen is a template library, so you do not need to build it.
+
 [CMake build]:
 
--D PKG_USER-SMD=on            # enable USER-SMD package
--D EIGEN3_INCLUDE_DIR=path    # path to include directory of Eigen library :pre
+-D EIGEN3_INCLUDE_DIR=path    # path to Eigen library :pre
+
+TODO: there is no download option for the Eigen lib?
+
+CMake will not download the Eigen library.  But once you have done
+that, a CMake build of LAMMPS with "-D PKG_USER-SMD=yes" should work.
+Set EIGEN3_INCLUDE_DIR if CMake cannot find the Eigen library.
 
 [Traditional make]:
 
-Before building LAMMPS with this package, you must first download the
-Eigen library.  Eigen is a template library, so you do not need to
-build it, just download it.  You can do this manually if you prefer;
-follow the instructions in lib/smd/README.  You can also do it in one
-step from the lammps/src dir, using a command like these, which simply
-invoke the lib/smd/Install.py script with the specified args:
+You can download the Eigen library manually if you prefer; follow the
+instructions in lib/smd/README.  You can also do it in one step from
+the lammps/src dir, using a command like these, which simply invoke
+the lib/smd/Install.py script with the specified args:
 
 make lib-smd                         # print help message
-make lib-smd args="-b"               # download and build in default lib/smd/eigen-eigen-...
+make lib-smd args="-b"               # download to lib/smd/eigen3
 make lib-smd args="-p /usr/include/eigen3"    # use existing Eigen installation in /usr/include/eigen3 :pre
 
 Note that a symbolic (soft) link named "includelink" is created in
 lib/smd to point to the Eigen dir.  When LAMMPS builds it will use
-this link.  You should not need to edit the lib/smd/Makefile.lammps file.
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
+this link.  You should not need to edit the lib/smd/Makefile.lammps
+file.
 
 :line
 
 USER-VTK package :h4,link(user-vtk)
 
+To build with this package you must have the VTK library installed on
+your system.
+
 [CMake build]:
 
--D PKG_USER-VTK=on            # enable USER-VTK package :pre
+No additional settings are needed besides "-D PKG_USER-VTK=yes".
 
-This will autodetect the VTK library if it is installed on your system at standard locations.
-Several advanced VTK options exist if you need to specify where it was installed. Run with
-ccmake to see these options.
+This should autodetect the VTK library if it is installed on your
+system at standard locations.  Several advanced VTK options exist if
+you need to specify where it was installed.  Use the ccmake (terminal
+window) or cmake-gui (graphical) tools to see these options and set
+them interactively from their user interfaces.
 
 [Traditional make]:
 
 The lib/vtk/Makefile.lammps file has settings for accessing VTK files
-and its library, which are required for LAMMPS to build and link with
-this package.  If the settings are not valid for your system, check if
-one of the other lib/vtk/Makefile.lammps.* files is compatible and
-copy it to Makefile.lammps.  If none of the provided files work, you
-will need to edit the Makefile.lammps file.
-
-You can then install/un-install the package and build LAMMPS in the
-usual manner:
+and its library, which LAMMPS needs to build with this package.  If
+the settings are not valid for your system, check if one of the other
+lib/vtk/Makefile.lammps.* files is compatible and copy it to
+Makefile.lammps.  If none of the provided files work, you will need to
+edit the Makefile.lammps file.  See lib/vtk/README for details.
diff --git a/doc/src/Build_make.txt b/doc/src/Build_make.txt
index e8926df6ad..c00ce1f420 100644
--- a/doc/src/Build_make.txt
+++ b/doc/src/Build_make.txt
@@ -9,17 +9,18 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 Build LAMMPS with make :h3
 
-Building LAMMPS with traditional makefiles requires, that you have a
-Makefile."machine" file in the src/MAKE, src/MAKE/MACHINES,
-src/MAKE/OPTIONS, or src/MAKE/MINE directory, which is appropriate
-for your system (see below).  It can list various options for
-customizing your LAMMPS build with a number of global compilation
-options and features.  To include LAMMPS packages (i.e. optional
-commands and styles) you must install them first, as discussed on
-the "Build package"_Build_package.html doc page.  If the packages
-use provided or external libraries, you must build those libraries
-before building LAMMPS.  Building "LAMMPS with CMake"_Build_cmake.html
-can automate all of this for many types of machines, especially
+Building LAMMPS with traditional makefiles requires that you have a
+Makefile."machine" file appropriate for your system in the src/MAKE,
+src/MAKE/MACHINES, src/MAKE/OPTIONS, or src/MAKE/MINE directory (see
+below).  It can include various options for customizing your LAMMPS
+build with a number of global compilation options and features.
+
+To include LAMMPS packages (i.e. optional commands and styles) you
+must install them first, as discussed on the "Build
+package"_Build_package.html doc page.  If the packages require
+provided or external libraries, you must build those libraries before
+building LAMMPS.  Building "LAMMPS with CMake"_Build_cmake.html can
+automate all of this for many types of machines, especially
 workstations, desktops and laptops, so we suggest you try it first.
 
 These commands perform a default LAMMPS build, producing the LAMMPS
@@ -31,19 +32,23 @@ make mpi        # build a parallel LAMMPS executable with MPI
 make            # see a variety of make options :pre
 
 This initial compilation can take a long time, since LAMMPS is a large
-project with many features. If your machine has multiple CPU cores (most
-do these days), using a command like "make -jN mpi" (with N being to the
-number of available local CPU cores) can be much faster. If you plan to
-do development on LAMMPS or may need to recompile LAMMPS repeatedly, the
+project with many features. If your machine has multiple CPU cores
+(most do these days), using a command like "make -jN mpi" (with N =
+the number of available CPU cores) can be much faster.  If you plan to
+do development on LAMMPS or need to recompile LAMMPS repeatedly, the
 installation of the ccache (= Compiler Cache) software may speed up
 compilation even more.
 
-After the initial build, whenever you edit LAMMPS source files, or 
-add or remove new files to the source directory (e.g. by installing or
-uninstalling packages), you must recompile and relink the LAMMPS executable
-with the same command line, but the makefiles will make certain, that
-only files that need to be recompiled will be compiled (because they
-were changed or depend on files, that were changed). 
+After the initial build, whenever you edit LAMMPS source files, or add
+or remove new files to the source directory (e.g. by installing or
+uninstalling packages), you must recompile and relink the LAMMPS
+executable with the same "make" command.  This makefiles dependencies
+should insure that only the subset of files that need to be are
+recompiled.
+
+NOTE: When you build LAMMPS for the first time, a long list of *.d
+files will be printed out rapidly.  This is not an error; it is the
+Makefile doing its normal creation of dependencies.
 
 :line
 
@@ -57,17 +62,17 @@ MACHINES     # Makefiles for specific machines
 MINE         # customized Makefiles you create (you may need to create this folder) :pre
 
 Typing "make" lists all the available Makefile.machine files.  A file
-with the same name can appear in multiple dirs (not a good idea).  The
-order the dirs are searched is as follows: src/MAKE/MINE, src/MAKE,
-src/MAKE/OPTIONS, src/MAKE/MACHINES.  This gives preference to a
-customized file you put in src/MAKE/MINE.
+with the same name can appear in multiple folders (not a good idea).
+The order the dirs are searched is as follows: src/MAKE/MINE,
+src/MAKE, src/MAKE/OPTIONS, src/MAKE/MACHINES.  This gives preference
+to a customized file you put in src/MAKE/MINE.
 
 Makefiles you may wish to try include these (some require a package
 first be installed).  Many of these include specific compiler flags
-for optimized performance.  Please note, however, that most of these
-customized machine Makefile are contributed and since both, compilers
-and also OS configs, as well as LAMMPS itself keep changing all the
-time, some of these settings and recommendations may be outdated:
+for optimized performance.  Please note, however, that some of these
+customized machine Makefile are contributed by users.  Since both
+compilers, OS configs, and LAMMPS itself keep changing, their settings
+may become outdated:
 
 make mac             # build serial LAMMPS on a Mac
 make mac_mpi         # build parallel LAMMPS on a Mac
diff --git a/doc/src/Build_package.txt b/doc/src/Build_package.txt
index e59bf2b9d6..cfaa39f331 100644
--- a/doc/src/Build_package.txt
+++ b/doc/src/Build_package.txt
@@ -14,8 +14,9 @@ features.  For example, force fields for molecular systems or
 rigid-body constraints are in packages.  In the src directory, each
 package is a sub-directory with the package name in capital letters.
 
-A complete list of packages with brief overviews of each are on the
-"Packages details"_Packages_details.html doc page.
+An overview of packages is given on the "Packages"_Packages.html doc
+page.  Brief overviews of each package are on the "Packages
+details"_Packages_details.html doc page.
 
 When building LAMMPS, you can choose to include or exclude each
 package.  In general there is no need to include a package if you
@@ -23,13 +24,10 @@ never plan to use its features.
 
 If you get a run-time error that a LAMMPS command or style is
 "Unknown", it is often because the command is contained in a package,
-and your build did not include the package.  Running LAMMPS with the
+and your build did not include that package.  Running LAMMPS with the
 "-h command-line switch"_Run_options.html will print all the included
 packages and commands for that executable.
 
-The mechanism for including packages is different for CMake versus a
-traditional make.
-
 For the majority of packages, if you follow the single step below to
 include it, you can then build LAMMPS exactly the same as you would
 without any packages installed.  A few packages may require additional
@@ -62,6 +60,9 @@ packages:
 "USER-SMD"_Build_extras.html#user-smd,
 "USER-VTK"_Build_extras.html#user-vtk :tb(c=6,ea=c)
 
+The mechanism for including packages is simple but different for CMake
+versus make.
+
 [CMake variables]:
 
 -D PKG_NAME=value          # yes or no (default) :pre
@@ -75,6 +76,9 @@ All standard and user packages are included the same way.  Note that
 USER packages have a hyphen between USER and the rest of the package
 name, not an underscore.
 
+See the shortcut section below for how to install many packages at
+once with CMake.
+
 NOTE: If you toggle back and forth between building with CMake vs
 make, no packages in the src directory can be installed when you
 invoke cmake.  CMake will give an error if that is not the case,
@@ -95,6 +99,9 @@ make yes-user-intel :pre
 
 All standard and user packages are included the same way.
 
+See the shortcut section below for how to install many packages at
+once with make.
+
 NOTE: You must always re-build LAMMPS (via make) after installing or
 un-installing a package, for the action to take effect.
 
@@ -114,14 +121,6 @@ right thing.  Individual files are only included if their dependencies
 are already included.  Likewise, if a package is excluded, other files
 dependent on that package are also excluded.
 
-NOTE: The one exception is that for a build via make (ok via CMake),
-we do not recommend building with the KOKKOS package installed along
-with any of the other acceleration packages (GPU, OPT, USER-INTEL,
-USER-OMP) also installed.  This is because of how Kokkos sometimes
-builds using a wrapper compiler which can make it difficult to invoke
-all the compile/link flags correctly for both Kokkos and non-Kokkos
-files.
-
 When you download a LAMMPS tarball, three packages are pre-installed
 in the src directory: KSPACE, MANYBODY, MOLECULE.  This is because
 they are so commonly used.  When you download LAMMPS source files from
@@ -129,9 +128,19 @@ the Git or SVN repositories, no packages are pre-installed.
 
 :line
 
-The following make commands are useful for managing package source
-files and their installation when building LAMMPS via traditional
-make.  Just type "make" in lammps/src to see a one-line summary.
+[CMake shortcuts for installing many packages]:
+
+TODO: brief discussion of the cmake command line options with presets
+that Axel or Richard enabled to install sets of packages at once?
+Are these just for cmake, or also ccmake and cmake-gui?
+
+:line
+
+[Make shortcuts for installing many packages]:
+
+The following commands are useful for managing package source files
+and their installation when building LAMMPS via traditional make.
+Just type "make" in lammps/src to see a one-line summary.
 
 These commands install/un-install sets of packages:
 
diff --git a/doc/src/Build_settings.txt b/doc/src/Build_settings.txt
index 3adabac768..6959937241 100644
--- a/doc/src/Build_settings.txt
+++ b/doc/src/Build_settings.txt
@@ -10,13 +10,13 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 Optional build settings :h3
 
 LAMMPS can be built with several optional settings.  Each sub-section
-explain how to do this for either a CMake build or traditional make.
+explain how to do this for building both with CMake and make.
 
-"FFT library"_#fft for use with "kspace_style pppm"_kspace_style.html command
+"FFT library"_#fft for use with the "kspace_style pppm"_kspace_style.html command
 "Size of LAMMPS data types"_#size
 "Read or write compressed files"_#compress
-"Output of JPG and PNG files"_#graphics via "dump image"_dump_image.html command
-"Output of movie files"_#graphics via "dump_movie"_dump_image.html command
+"Output of JPG and PNG files"_#graphics via the "dump image"_dump_image.html command
+"Output of movie files"_#graphics via the "dump_movie"_dump_image.html command
 "Memory allocation alignment"_#align
 "Workaround for long long integers"_#longlong
 "Error handling exceptions"_#exceptions when using LAMMPS as a library :all(b)
@@ -29,21 +29,12 @@ FFT library :h3,link(fft)
 When the KSPACE package is included in a LAMMPS build, the
 "kspace_style pppm"_kspace_style.html command performs 3d FFTs which
 require use of an FFT library to compute 1d FFTs.  The KISS FFT
-library is included with LAMMPS but other libraries can be faster
-(typically up to 20%), and LAMMPS can use them, if they are
-available on your system. Since the use of FFTs is usually only part
-of the total computation done by LAMMPS, however, the total
-performance difference for typical cases is in the range of 2-5%.
-Thus it is safe to use KISS FFT and look into using other FFT
-libraries when optimizing for maximum performance.   See details
-on enabling the use of other FFT libraries below.
+library is included with LAMMPS but other libraries can be faster.
+LAMMPS can use them if they are available on your system.
 
-NOTE: FFTW2 has not been updated since 1999 and has been declared
-obsolete by its developers.
- 
 [CMake variables]:
 
--D FFT=value              # KISSFFT or FFTW3 or FFTW2 or MKL, default is FFTW3 if found, else KISSFFT
+-D FFT=value              # kiss or fftw3 or fftw2 or mkl, default is fftw3 if found, else kiss
 -D FFT_SINGLE=value       # yes or no (default), no = double precision
 -D FFT_PACK=value         # array (default) or pointer or memcpy :pre
 
@@ -64,8 +55,6 @@ FFT_INC = -DFFT_FFTW3         # -DFFT_FFTW3, -DFFT_FFTW2, -DFFT_FFTW (same as -D
 FFT_INC = -DFFT_SINGLE        # do not specify for double precision
 FFT_INC = -DFFT_PACK_ARRAY    # or -DFFT_PACK_POINTER or -DFFT_PACK_MEMCPY :pre
 
-TODO: change code to use FFT_PACK_OPTION
-
 FFT_INC =    	-I/usr/local/include
 FFT_PATH =      -L/usr/local/lib
 FFT_LIB =	-lfftw3             # FFTW3 double precision
@@ -82,38 +71,45 @@ FFT_LIB with the appropriate FFT libraries to include in the link.
 [CMake and make info]:
 
 The "KISS FFT library"_http://kissfft.sf.net is included in the LAMMPS
-distribution, so not FFT_LIB setting is required.  It is portable
-across all platforms.
+distribution.  It is portable across all platforms.  Depending on the
+size of the FFTs and the number of processors used, the other
+libraries listed here can be faster.  
+
+However, note that long-range Coulombics are only a portion of the
+per-timestep CPU cost, FFTs are only a portion of long-range
+Coulombics, and 1d FFTs are only a portion of the FFT cost (parallel
+communication can be costly).  A breakdown of these timings is printed
+to the screen at the end of a run using the "kspace_style
+pppm"_kspace_style.html command.  The "Run output"_doc page gives more
+details.
 
 FFTW is a fast, portable FFT library that should also work on any
 platform and can be faster than KISS FFT.  You can download it from
 "www.fftw.org"_http://www.fftw.org.  Both the (obsolete) legacy version
-2.1.X and the newer 3.X versions are supported.  Building FFTW for your
-box should be as simple as ./configure; make; make install.  The install
-command typically requires root privileges (e.g. invoke it via sudo),
-unless you specify a local directory with the "--prefix" option of
-configure.  Type "./configure --help" to see various options.
-The total impact on the performance of LAMMPS by KISS FFT versus 
-other FFT libraries is for many case rather small (since FFTs are only
-a small to moderate part of the total computation). Thus if FFTW is
-not detected on your system, it is usually safe to continue with
-KISS FFT and look into installing FFTW only when optimizing LAMMPS
-for maximum performance.
+2.1.X and the newer 3.X versions are supported.  
 
+NOTE: FFTW2 has not been updated since 1999 and has been declared
+obsolete by its developers.
+ 
+Building FFTW for your box should be as simple as ./configure; make;
+make install.  The install command typically requires root privileges
+(e.g. invoke it via sudo), unless you specify a local directory with
+the "--prefix" option of configure.  Type "./configure --help" to see
+various options. 
 
 The Intel MKL math library is part of the Intel compiler suite.  It
 can be used with the Intel or GNU compiler (see FFT_LIB setting above).
 
 Performing 3d FFTs in parallel can be time consuming due to data
-access and required communication.  This cost can be reduced
-by performing single-precision FFTs instead of double precision.
-Single precision means the real and imaginary parts of a complex datum
-are 4-byte floats.  Double precesion means they are 8-byte doubles.
-Note that Fourier transform and related PPPM operations are somewhat
-less sensitive to floating point truncation errors and thus the resulting
+access and required communication.  This cost can be reduced by
+performing single-precision FFTs instead of double precision.  Single
+precision means the real and imaginary parts of a complex datum are
+4-byte floats.  Double precesion means they are 8-byte doubles.  Note
+that Fourier transform and related PPPM operations are somewhat less
+sensitive to floating point truncation errors and thus the resulting
 error is less than the difference in precision. Using the -DFFT_SINGLE
-setting trades off a little accuracy for reduced memory use and parallel
-communication costs for transposing 3d FFT data.
+setting trades off a little accuracy for reduced memory use and
+parallel communication costs for transposing 3d FFT data.
 
 When using -DFFT_SINGLE with FFTW3 or FFTW2, you may need to build the
 FFTW library a second time with support for single-precision.
diff --git a/doc/src/Speed_tips.txt b/doc/src/Speed_tips.txt
index 7c950779d5..858b1d493f 100644
--- a/doc/src/Speed_tips.txt
+++ b/doc/src/Speed_tips.txt
@@ -9,7 +9,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 General tips :h3
 
-NOTE: this section 5.2 is still a work in progress
+NOTE: this page is still a work in progress
 
 Here is a list of general ideas for improving simulation performance.
 Most of them are only applicable to certain models and certain
@@ -20,13 +20,8 @@ problem size, number of processors used, and your machine.  There is
 no substitute for identifying performance bottlenecks, and trying out
 various options.
 
-make individual pages for these, or one for PPPM
-one for timestepping, etc
-one for balancing 
-or proc layout
-
 rRESPA
-2-FFT PPPM
+Two-FFT PPPM
 Staggered PPPM
 single vs double PPPM
 partial charge PPPM
@@ -34,12 +29,13 @@ verlet/split run style
 processor command for proc layout and numa layout
 load-balancing: balance and fix balance :ul
 
-2-FFT PPPM, also called {analytic differentiation} or {ad} PPPM, uses
-2 FFTs instead of the 4 FFTs used by the default {ik differentiation}
-PPPM. However, 2-FFT PPPM also requires a slightly larger mesh size to
-achieve the same accuracy as 4-FFT PPPM. For problems where the FFT
-cost is the performance bottleneck (typically large problems running
-on many processors), 2-FFT PPPM may be faster than 4-FFT PPPM.
+Two-FFT PPPM, also called {analytic differentiation} or {ad} PPPM,
+uses 2 FFTs instead of the 4 FFTs used by the default {ik
+differentiation} PPPM. However, 2-FFT PPPM also requires a slightly
+larger mesh size to achieve the same accuracy as 4-FFT PPPM. For
+problems where the FFT cost is the performance bottleneck (typically
+large problems running on many processors), 2-FFT PPPM may be faster
+than 4-FFT PPPM.
 
 Staggered PPPM performs calculations using two different meshes, one
 shifted slightly with respect to the other.  This can reduce force
-- 
GitLab


From e01185c28386a8dc426b91204abf14708a2a8d1a Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Sun, 12 Aug 2018 16:44:26 +0200
Subject: [PATCH 188/243] correct some errors and misconceptions about zlib and
 USER-OMP

---
 doc/src/Build_extras.txt   | 33 +++++++++++++++++----------------
 doc/src/Build_settings.txt | 12 ++++++------
 doc/src/Speed_omp.txt      | 32 +++++++++++++++++---------------
 3 files changed, 40 insertions(+), 37 deletions(-)

diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
index b13fe85801..16f0a0d07f 100644
--- a/doc/src/Build_extras.txt
+++ b/doc/src/Build_extras.txt
@@ -62,7 +62,7 @@ available on your system.
 If CMake cannot find the library, you can set these variables:
 
 -D ZLIB_INCLUDE_DIR=path    # path to zlib.h header file 
--D ZLIB_LIBRARIES=path      # path to libzlib.a (.so) file :pre
+-D ZLIB_LIBRARIES=path      # path to libz.a (.so) file :pre
 
 [Traditional make]:
 
@@ -720,23 +720,24 @@ USER-OMP package :h4,link(user-omp)
 
 [CMake build]:
 
-No additional settings are needed besides "-D PKG_USER-OMP=yes".
-
-TODO: Is "-D BUILD_OMP=yes" also needed?  Or is it enabled
-if PKG_USER-OMP is set?
+No additional settings are required besides "-D PKG_USER-OMP=yes".  If
+CMake detects OpenMP support, the USER-OMP code will be compiled with
+multi-threading support enabled, otherwise as optimized serial code.
 
 [Traditional make]:
 
-These compile and link flags must be added to your Makefile.machine file.
+To enable multi-threading support in the USER-OMP package (and other
+styles supporting OpenMP) the following compile and link flags must
+be added to your Makefile.machine file.
 See src/MAKE/OPTIONS/Makefile.omp for an example.
 
-CCFLAGS: -fopenmp
+CCFLAGS: -fopenmp               # for GNU Compilers
 CCFLAGS: -qopenmp -restrict     # for Intel compilers on Linux
-LINKFLAGS: -fopenmp
+LINKFLAGS: -fopenmp             # for GNU Compilers
 LINKFLAGS: -qopenmp             # for Intel compilers on Linux :pre
 
-For other platforms and compilers, consult the OpenMP documentation
-for the compiler.
+For other platforms and compilers, please consult the documentation
+about OpenMP support for your compiler.
 
 :line
 
@@ -747,18 +748,18 @@ for a QM/MM simulation.  You must also build Quantum ESPRESSO and
 create a new executable (pwqmmm.x) which links LAMMPS and Quantum
 ESPRESSO together.  These are steps 3 and 4 described in the
 lib/qmmm/README file.  Unfortunately, the Quantum ESPRESSO developers
-keep breaking the interface that the QM/MM code in LAMMPS is using, so
-that currently (summer 2018) using this feature requires either
+have been breaking the interface that the QM/MM code in LAMMPS is using,
+so that currently (Summer 2018) using this feature requires either
 correcting the library interface feature in recent Quantum ESPRESSO
 releases, or using an outdated version of QE. The last version of
-Quantum ESPRESSO known to work with this QM/MM interface in LAMMPS was
-version 5.4.1 from 2016.
+Quantum ESPRESSO known to work with this QM/MM interface was version
+5.4.1 from 2016.
 
 [CMake build]:
 
 The CMake build system currently does not support building the full
-QM/MM-capable hybrid executable of LAMMPS and QE called pwqmmm.x.  You
-must use the traditional make build for this package.
+QM/MM-capable hybrid executable of LAMMPS and QE called pwqmmm.x.  
+You must use the traditional make build for this package.
 
 [Traditional make]:
 
diff --git a/doc/src/Build_settings.txt b/doc/src/Build_settings.txt
index 6959937241..87818322fa 100644
--- a/doc/src/Build_settings.txt
+++ b/doc/src/Build_settings.txt
@@ -14,7 +14,7 @@ explain how to do this for building both with CMake and make.
 
 "FFT library"_#fft for use with the "kspace_style pppm"_kspace_style.html command
 "Size of LAMMPS data types"_#size
-"Read or write compressed files"_#compress
+"Read or write compressed files"_#gzip
 "Output of JPG and PNG files"_#graphics via the "dump image"_dump_image.html command
 "Output of movie files"_#graphics via the "dump_movie"_dump_image.html command
 "Memory allocation alignment"_#align
@@ -223,7 +223,7 @@ variables:
 -D PNG_INCLUDE_DIR=path     # path to png.h header file 
 -D PNG_LIBRARIES=path       # path to libpng.a (.so) file 
 -D ZLIB_INCLUDE_DIR=path    # path to zlib.h header file 
--D ZLIB_LIBRARIES=path      # path to libzlib.a (.so) file 
+-D ZLIB_LIBRARIES=path      # path to libz.a (.so) file 
 -D FFMPEG_EXECUTABLE=path   # path to ffmpeg executable :pre
 
 [Makefile.machine settings]:
@@ -233,8 +233,8 @@ LMP_INC = -DLAMMPS_PNG
 LMP_INC = -DLAMMPS_FFMPEG :pre
 
 JPG_INC = -I/usr/local/include   # path to jpeglib.h, png.h, zlib.h header files if make cannot find them
-JPG_PATH = -L/usr/lib            # paths to libjpeg.a, libpng.a, libzlib.a (.so) files if make cannot find them
-JPG_LIB = -ljpeg -lpng -lzlib    # library names :pre
+JPG_PATH = -L/usr/lib            # paths to libjpeg.a, libpng.a, libz.a (.so) files if make cannot find them
+JPG_LIB = -ljpeg -lpng -lz       # library names :pre
 
 As with CMake, you do not need to set JPG_INC or JPG_PATH, if make can
 find the graphics header and library files.  You must specify JPG_LIB
@@ -254,7 +254,7 @@ crash.
 
 :line
 
-Read or write compressed files :h3,link(compress)
+Read or write compressed files :h3,link(gzip)
 
 If this option is enabled, large files can be read or written with
 gzip compression by several LAMMPS commands, including
@@ -281,7 +281,7 @@ library calls (required by popen()) can interfere with the fast
 communication library and lead to simulations using compressed output
 or input to hang or crash. For selected operations, compressed file
 I/O is also available using a compression library instead, which is
-what the "COMPRESS package"_Packages.html enables.
+what the "COMPRESS package"_Packages_details.html#PKG-COMPRESS enables.
 
 :line
 
diff --git a/doc/src/Speed_omp.txt b/doc/src/Speed_omp.txt
index e788d3300c..cd85b06192 100644
--- a/doc/src/Speed_omp.txt
+++ b/doc/src/Speed_omp.txt
@@ -10,28 +10,29 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 USER-OMP package :h3
 
 The USER-OMP package was developed by Axel Kohlmeyer at Temple
-University.  It provides multi-threaded versions of most pair styles,
-nearly all bonded styles (bond, angle, dihedral, improper), several
-Kspace styles, and a few fix styles.  The package currently uses the
-OpenMP interface for multi-threading.
+University.  It provides optimized and multi-threaded versions
+of many pair styles, nearly all bonded styles (bond, angle, dihedral,
+improper), several Kspace styles, and a few fix styles.  It uses
+the OpenMP interface for multi-threading, but can also be compiled
+without OpenMP support, providing optimized serial styles in that case.
 
 Here is a quick overview of how to use the USER-OMP package, assuming
 one or more 16-core nodes.  More details follow.
 
-use -fopenmp with CCFLAGS and LINKFLAGS in Makefile.machine
 make yes-user-omp
-make mpi                                   # build with USER-OMP package, if settings added to Makefile.mpi
-make omp                                   # or Makefile.omp already has settings :pre
+make omp                                   # Makefile.omp already has OpenMP settings for GNU compilers
+make mpi                                   # or build with USER-OMP package without OpenMP :pre
 
-lmp_mpi -sf omp -pk omp 16 < in.script                         # 1 MPI task, 16 threads
-mpirun -np 4 lmp_mpi -sf omp -pk omp 4 -in in.script           # 4 MPI tasks, 4 threads/task
-mpirun -np 32 -ppn 4 lmp_mpi -sf omp -pk omp 4 -in in.script   # 8 nodes, 4 MPI tasks/node, 4 threads/task :pre
+env OMP_NUM_THREADS=16 lmp_omp -sf omp -in in.script           # 1 MPI task, 16 threads according to OMP_NUM_THREADS
+lmp_mpi -sf omp -in in.script                                  # 1 MPI task, no threads, optimized kernels
+mpirun -np 4 lmp_omp -sf omp -pk omp 4 -in in.script           # 4 MPI tasks, 4 threads/task
+mpirun -np 32 -ppn 4 lmp_omp -sf omp -pk omp 4 -in in.script   # 8 nodes, 4 MPI tasks/node, 4 threads/task :pre
 
 [Required hardware/software:]
 
-Your compiler must support the OpenMP interface.  You should have one
-or more multi-core CPUs so that multiple threads can be launched by
-each MPI task running on a CPU.
+To enable multi-threading, your compiler must support the OpenMP interface.
+You should have one or more multi-core CPUs, as multiple threads can only be
+launched by each MPI task on the local node (using shared memory).
 
 [Building LAMMPS with the USER-OMP package:]
 
@@ -41,8 +42,9 @@ one command as described on the "Packages
 details"_Packages_details.html#USER-OMP doc page.
 
 Note that the CCFLAGS and LINKFLAGS settings in Makefile.machine must
-include "-fopenmp".  Likewise, if you use an Intel compiler, the
-CCFLAGS setting must include "-restrict".
+include "-fopenmp" for the GNU compilers.  If you use an Intel compiler,
+the corresponding flag is "-qopenmp" and the CCFLAGS setting must also
+include "-restrict".
 
 [Run with the USER-OMP package from the command line:]
 
-- 
GitLab


From 11f04fde5c0b66e9fd2dc79b1c0b75930dc70988 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Sun, 12 Aug 2018 16:44:31 +0200
Subject: [PATCH 189/243] fix typo

---
 doc/src/compute_pair_local.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/src/compute_pair_local.txt b/doc/src/compute_pair_local.txt
index 7588e92527..edffddf332 100644
--- a/doc/src/compute_pair_local.txt
+++ b/doc/src/compute_pair_local.txt
@@ -62,7 +62,7 @@ pair styles do not define any additional quantities, so N = 0.  An
 example of ones that do are the "granular pair styles"_pair_gran.html
 which calculate the tangential force between two particles and return
 its components and magnitude acting on atom I for N = 1,2,3,4.  See
-individual pair styles for detils.
+individual pair styles for details.
 
 The value {dist} will be in distance "units"_units.html.  The value
 {eng} will be in energy "units"_units.html.  The values {force}, {fx},
-- 
GitLab


From 6e8a68a420bf62e745f7080744d1b728b354ebad Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Sun, 12 Aug 2018 17:16:24 +0200
Subject: [PATCH 190/243] fix a bunch of typos and broken links as detected by
 ebook-convert

---
 doc/src/Howto_coreshell.txt         | 8 ++++----
 doc/src/Howto_granular.txt          | 2 +-
 doc/src/Speed_kokkos.txt            | 2 +-
 doc/src/compute_pair_local.txt      | 2 +-
 doc/src/create_bonds.txt            | 4 ++--
 doc/src/fix_latte.txt               | 4 ++--
 doc/src/fix_nve_asphere_noforce.txt | 2 +-
 doc/src/fix_rigid.txt               | 2 +-
 8 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/doc/src/Howto_coreshell.txt b/doc/src/Howto_coreshell.txt
index 4f1cd64384..7503fa1ebe 100644
--- a/doc/src/Howto_coreshell.txt
+++ b/doc/src/Howto_coreshell.txt
@@ -119,7 +119,7 @@ the core/shell pair, which is an imaginary degree of freedom, from the
 real physical system.  To do that, the "compute
 temp/cs"_compute_temp_cs.html command can be used, in conjunction with
 any of the thermostat fixes, such as "fix nvt"_fix_nh.html or "fix
-langevin"_fix_langevin.  This compute uses the center-of-mass velocity
+langevin"_fix_langevin.html.  This compute uses the center-of-mass velocity
 of the core/shell pairs to calculate a temperature, and insures that
 velocity is what is rescaled for thermostatting purposes.  This
 compute also works for a system with both core/shell pairs and
@@ -150,9 +150,9 @@ The pressure for the core/shell system is computed via the regular
 LAMMPS convention by "treating the cores and shells as individual
 particles"_#MitchellFincham2. For the thermo output of the pressure
 as well as for the application of a barostat, it is necessary to
-use an additional "pressure"_compute_pressure compute based on the
-default "temperature"_compute_temp and specifying it as a second
-argument in "fix modify"_fix_modify.html and
+use an additional "pressure"_compute_pressure.html compute based on
+the default "temperature"_compute_temp.html and specifying it as a
+second argument in "fix modify"_fix_modify.html and
 "thermo_modify"_thermo_modify.html resulting in:
 
 (...)
diff --git a/doc/src/Howto_granular.txt b/doc/src/Howto_granular.txt
index 8027369501..758b1cebee 100644
--- a/doc/src/Howto_granular.txt
+++ b/doc/src/Howto_granular.txt
@@ -53,5 +53,5 @@ computations between frozen atoms by using this command:
 NOTE: By default, for 2d systems, granular particles are still modeled
 as 3d spheres, not 2d discs (circles), meaning their moment of inertia
 will be the same as in 3d.  If you wish to model granular particles in
-2d as 2d discs, see the note on this topic on the "Howto 2d"_Howto_2d
+2d as 2d discs, see the note on this topic on the "Howto 2d"_Howto_2d.html
 doc page, where 2d simulations are discussed.
diff --git a/doc/src/Speed_kokkos.txt b/doc/src/Speed_kokkos.txt
index 5f90885fe6..306bc398af 100644
--- a/doc/src/Speed_kokkos.txt
+++ b/doc/src/Speed_kokkos.txt
@@ -265,7 +265,7 @@ supports.
 
 [Running on GPUs:]
 
-Use the "-k" "command-line switch"_Run_options.thml to
+Use the "-k" "command-line switch"_Run_options.html to
 specify the number of GPUs per node. Typically the -np setting of the
 mpirun command should set the number of MPI tasks/node to be equal to
 the number of physical GPUs on the node.  You can assign multiple MPI
diff --git a/doc/src/compute_pair_local.txt b/doc/src/compute_pair_local.txt
index edffddf332..1460ba18a5 100644
--- a/doc/src/compute_pair_local.txt
+++ b/doc/src/compute_pair_local.txt
@@ -76,7 +76,7 @@ command for the types of the two atoms is used.  For the {radius}
 setting, the sum of the radii of the two particles is used as a
 cutoff.  For example, this is appropriate for granular particles which
 only interact when they are overlapping, as computed by "granular pair
-styles"_pair_gran.txt.  Note that if a granular model defines atom
+styles"_pair_gran.html.  Note that if a granular model defines atom
 types such that all particles of a specific type are monodisperse
 (same diameter), then the two settings are effectively identical.
 
diff --git a/doc/src/create_bonds.txt b/doc/src/create_bonds.txt
index 8596cab51d..fbf741d914 100644
--- a/doc/src/create_bonds.txt
+++ b/doc/src/create_bonds.txt
@@ -132,7 +132,7 @@ between 1 and the number of bond types defined.
 The {single/angle} style creates a single angle of type {atype}
 between three atoms with IDs {aatom1}, {aatom2}, and {aatom3}.  The
 ordering of the atoms is the same as in the {Angles} section of a data
-file read by the "read_data"_read_data command.  I.e. the 3 atoms are
+file read by the "read_data"_read_data.html command.  I.e. the 3 atoms are
 ordered linearly within the angle; the central atom is {aatom2}.
 {Atype} must be a value between 1 and the number of angle types
 defined.
@@ -140,7 +140,7 @@ defined.
 The {single/dihedral} style creates a single dihedral of type {btype}
 between two atoms with IDs {batom1} and {batom2}.  The ordering of the
 atoms is the same as in the {Dihedrals} section of a data file read by
-the "read_data"_read_data command.  I.e. the 4 atoms are ordered
+the "read_data"_read_data.html command.  I.e. the 4 atoms are ordered
 linearly within the dihedral.  {Dtype} must be a value between 1 and
 the number of dihedral types defined.
 
diff --git a/doc/src/fix_latte.txt b/doc/src/fix_latte.txt
index 17beb67206..bd61e29dcb 100644
--- a/doc/src/fix_latte.txt
+++ b/doc/src/fix_latte.txt
@@ -139,8 +139,8 @@ This fix is part of the LATTE package.  It is only enabled if LAMMPS
 was built with that package.  See the "Build
 package"_Build_package.html doc page for more info.
 
-You must use metal units, as set by the "units"_units command to use
-this fix.
+You must use metal units, as set by the "units"_units.html command to
+use this fix.
 
 LATTE does not currently compute per-atom energy or per-atom virial
 contributions.  So they will not show up as part of the calculations
diff --git a/doc/src/fix_nve_asphere_noforce.txt b/doc/src/fix_nve_asphere_noforce.txt
index 94b627bf1b..c0598e8839 100644
--- a/doc/src/fix_nve_asphere_noforce.txt
+++ b/doc/src/fix_nve_asphere_noforce.txt
@@ -29,7 +29,7 @@ angular momenta are used to update their positions and orientation.
 
 This is useful as an implicit time integrator for Fast Lubrication
 Dynamics, since the velocity and angular momentum are updated by the
-"pair_style lubricuteU"_pair_lubricateU.txt command.
+"pair_style lubricuteU"_pair_lubricateU.html command.
 
 :line
 
diff --git a/doc/src/fix_rigid.txt b/doc/src/fix_rigid.txt
index af4b51948e..d489762e80 100644
--- a/doc/src/fix_rigid.txt
+++ b/doc/src/fix_rigid.txt
@@ -244,7 +244,7 @@ includes atoms you want to be part of rigid bodies.
 Bodystyle {custom} is similar to bodystyle {molecule} except that it
 is more flexible in using other per-atom properties to define the sets
 of atoms that form rigid bodies.  An integer vector defined by the
-"fix property/atom"_fix_property_atom.txt command can be used.  Or an
+"fix property/atom"_fix_property_atom.html command can be used.  Or an
 "atom-style or atomfile-style variable"_variable.html can be used; the
 floating-point value produced by the variable is rounded to an
 integer.  As with bondstyle {molecule}, each set of atoms in the fix
-- 
GitLab


From fef2b8260bb28de39c26ac36cc28fa4678bea3b1 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Mon, 13 Aug 2018 11:46:46 -0400
Subject: [PATCH 191/243] Correct CMake FFT settings in docs

The upper or lowercase matters. It won't work with lower case.
---
 doc/src/Build_settings.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/src/Build_settings.txt b/doc/src/Build_settings.txt
index 87818322fa..736e9b9f0e 100644
--- a/doc/src/Build_settings.txt
+++ b/doc/src/Build_settings.txt
@@ -34,7 +34,7 @@ LAMMPS can use them if they are available on your system.
 
 [CMake variables]:
 
--D FFT=value              # kiss or fftw3 or fftw2 or mkl, default is fftw3 if found, else kiss
+-D FFT=value              # KISS or FFTW3 or FFTW2 or MKL, default is FFTW3 if found, else KISS
 -D FFT_SINGLE=value       # yes or no (default), no = double precision
 -D FFT_PACK=value         # array (default) or pointer or memcpy :pre
 
-- 
GitLab


From 8634301b53463613031774230cad7d2fa82fb950 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Mon, 13 Aug 2018 11:48:32 -0400
Subject: [PATCH 192/243] Limit depth of howto tocs

---
 doc/src/Howto.txt | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/doc/src/Howto.txt b/doc/src/Howto.txt
index 6e434552e7..fc7329aad5 100644
--- a/doc/src/Howto.txt
+++ b/doc/src/Howto.txt
@@ -22,12 +22,14 @@ also show how to setup and run various kinds of simulations.
 <!-- RST
 
 .. toctree::
+   :maxdepth: 1
 
    Howto_github
    Howto_pylammps
    Howto_bash
 
 .. toctree::
+   :maxdepth: 1
 
    Howto_restart
    Howto_viz
@@ -37,11 +39,13 @@ also show how to setup and run various kinds of simulations.
    Howto_couple
 
 .. toctree::
+   :maxdepth: 1
 
    Howto_output
    Howto_chunk
 
 .. toctree::
+   :maxdepth: 1
 
    Howto_2d
    Howto_triclinic
@@ -52,6 +56,7 @@ also show how to setup and run various kinds of simulations.
    Howto_dispersion
 
 .. toctree::
+   :maxdepth: 1
 
    Howto_temperature
    Howto_thermostat
@@ -62,6 +67,7 @@ also show how to setup and run various kinds of simulations.
    Howto_diffusion
 
 .. toctree::
+   :maxdepth: 1
 
    Howto_bioFF
    Howto_tip3p
@@ -69,6 +75,7 @@ also show how to setup and run various kinds of simulations.
    Howto_spc
 
 .. toctree::
+   :maxdepth: 1
 
    Howto_body
    Howto_polarizable
-- 
GitLab


From afbfaf0a8f20ed56754059820e44b11b59a5e6c9 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Mon, 13 Aug 2018 15:53:50 -0400
Subject: [PATCH 193/243] Change LAMMPS_SIZE_LIMIT to LAMMPS_SIZES and use
 lower case values

---
 cmake/CMakeLists.txt | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index fda46a6e6f..91ea7f10d7 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -133,10 +133,11 @@ else()
   list(APPEND LAMMPS_LINK_LIBS mpi_stubs)
 endif()
 
-set(LAMMPS_SIZE_LIMIT "LAMMPS_SMALLBIG" CACHE STRING "Lammps size limit")
-set_property(CACHE LAMMPS_SIZE_LIMIT PROPERTY STRINGS LAMMPS_SMALLBIG LAMMPS_BIGBIG LAMMPS_SMALLSMALL)
-add_definitions(-D${LAMMPS_SIZE_LIMIT})
-set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -D${LAMMPS_SIZE_LIMIT}")
+set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS size limit")
+set_property(CACHE LAMMPS_SIZES PROPERTY STRINGS smallbig bigbig smallsmall)
+string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES_DEFINE)
+add_definitions(-DLAMMPS_${LAMMPS_SIZES_DEFINE})
+set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -DLAMMPS_${LAMMPS_SIZES_DEFINE}")
 
 # posix_memalign is not available on Windows
 if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
@@ -218,10 +219,10 @@ if(PKG_KSPACE)
   if(${FFTW}_FOUND)
     set(FFT "${FFTW}" CACHE STRING "FFT library for KSPACE package")
   else()
-    set(FFT "KISSFFT" CACHE STRING "FFT library for KSPACE package")
+    set(FFT "KISS" CACHE STRING "FFT library for KSPACE package")
   endif()
-  set_property(CACHE FFT PROPERTY STRINGS KISSFFT ${FFTW} MKL)
-  if(NOT FFT STREQUAL "KISSFFT")
+  set_property(CACHE FFT PROPERTY STRINGS KISS ${FFTW} MKL)
+  if(NOT FFT STREQUAL "KISS")
     find_package(${FFT} REQUIRED)
     if(NOT FFT STREQUAL "FFTW3F")
       add_definitions(-DFFT_FFTW)
@@ -231,12 +232,13 @@ if(PKG_KSPACE)
     include_directories(${${FFT}_INCLUDE_DIRS})
     list(APPEND LAMMPS_LINK_LIBS ${${FFT}_LIBRARIES})
   else()
-    add_definitions(-DFFT_KISSFFT)
+    add_definitions(-DFFT_KISS)
   endif()
-  set(PACK_OPTIMIZATION "PACK_ARRAY" CACHE STRING "Optimization for FFT")
-  set_property(CACHE PACK_OPTIMIZATION PROPERTY STRINGS PACK_ARRAY PACK_POINTER PACK_MEMCPY)
-  if(NOT PACK_OPTIMIZATION STREQUAL "PACK_ARRAY")
-    add_definitions(-D${PACK_OPTIMIZATION})
+  set(FFT_PACK "array" CACHE STRING "Optimization for FFT")
+  set_property(CACHE PACK_OPTIMIZATION PROPERTY STRINGS array pointer memcpy)
+  if(NOT FFT_PACK STREQUAL "array")
+    string(TOUPPER ${FFT_PACK} FFT_PACK_DEFINE)
+    add_definitions(-DFFT_PACK_${FFT_PACK_DEFINE})
   endif()
 endif()
 
-- 
GitLab


From 13bb02b100e0a1e9d20469d63f42551102b06011 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Mon, 13 Aug 2018 19:51:06 -0400
Subject: [PATCH 194/243] Updated CMake build for USER-INTEL

- Removed differences between MAKE/OPTIONS/Makefile.intel_cpu/coprocessor and
  CMake compilation and added INTEL_ARCH to select between CPU and KNL.
- Added some sanity checks for requirements
- Added FindTBB
---
 cmake/CMakeLists.txt        | 49 +++++++++++++++++++++++++------------
 cmake/Modules/FindTBB.cmake | 46 ++++++++++++++++++++++++++++++++++
 doc/src/Build_extras.txt    |  5 ++--
 3 files changed, 83 insertions(+), 17 deletions(-)
 create mode 100644 cmake/Modules/FindTBB.cmake

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 91ea7f10d7..29f7b640d2 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -106,8 +106,6 @@ if(NOT BUILD_EXE AND NOT BUILD_LIB)
   message(FATAL_ERROR "You need to at least enable one of two following options: BUILD_LIB or BUILD_EXE")
 endif()
 
-option(DEVELOPER_MODE "Enable developer mode" OFF)
-mark_as_advanced(DEVELOPER_MODE)
 option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF)
 include(GNUInstallDirs)
 
@@ -728,33 +726,54 @@ if(PKG_OPT)
 endif()
 
 if(PKG_USER-INTEL)
-    if(NOT DEVELOPER_MODE)
-      if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
-        message(FATAL_ERROR "USER-INTEL is only useful together with intel compiler")
-      endif()
-      if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
+    find_package(TBB REQUIRED)
+    find_package(MKL REQUIRED)
+
+    if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+      message(FATAL_ERROR "USER-INTEL is only useful together with intel compiler")
+    endif()
+
+    if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
         message(FATAL_ERROR "USER-INTEL is needed at least 2016 intel compiler, found ${CMAKE_CXX_COMPILER_VERSION}")
-      endif()
     endif()
-    option(INJECT_KNL_FLAG "Inject flags for KNL build" OFF)
-    if(INJECT_KNL_FLAG)
-      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xMIC-AVX512")
+
+    if(NOT BUILD_OMP)
+        message(FATAL_ERROR "USER-INTEL requires OpenMP")
+    endif()
+
+    if(NOT ${LAMMPS_MEMALIGN} STREQUAL "64")
+        message(FATAL_ERROR "USER-INTEL is only useful with LAMMPS_MEMALIGN=64")
     endif()
-    option(INJECT_INTEL_FLAG "Inject OMG fast flags for USER-INTEL" ON)
-    if(INJECT_INTEL_FLAG AND CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+
+    set(INTEL_ARCH "cpu" CACHE STRING "Architectures used by USER-INTEL (cpu or knl)")
+    set_property(CACHE INTEL_ARCH PROPERTY STRINGS cpu knl)
+
+
+
+    if(INTEL_ARCH STREQUAL "knl")
+      set(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} -xHost -qopenmp -qoffload")
+      set(MIC_OPTIONS "-qoffload-option,mic,compiler,\"-fp-model fast=2 -mGLOB_default_function_attrs=\\\"gather_scatter_loop_unroll=4\\\"\"")
+      add_compile_options(-xMIC-AVX512 -qoffload -fno-alias -ansi-alias -restrict -qoverride-limits ${MIC_OPTIONS})
+      add_definitions(-DLMP_INTEL_OFFLOAD)
+    else()
       if(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.3 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.4)
         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xCOMMON-AVX512")
       else()
         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xHost")
       endif()
       include(CheckCXXCompilerFlag)
-      foreach(_FLAG -qopenmp -qno-offload -fno-alias -ansi-alias -restrict -DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG -O2 "-fp-model fast=2" -no-prec-div -qoverride-limits -qopt-zmm-usage=high)
+      foreach(_FLAG -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -qopt-zmm-usage=high -qno-offload -fno-alias -ansi-alias -restrict)
         check_cxx_compiler_flag("${__FLAG}" COMPILER_SUPPORTS${_FLAG})
         if(COMPILER_SUPPORTS${_FLAG})
-          set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_FLAG}")
+          add_compile_options(${_FLAG})
         endif()
       endforeach()
     endif()
+
+    add_definitions(-DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG)
+
+    list(APPEND LAMMPS_LINK_LIBS ${TBB_MALLOC_LIBRARIES} ${MKL_LIBRARIES})
+
     set(USER-INTEL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-INTEL)
     set(USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/intel_preprocess.h
                            ${USER-INTEL_SOURCES_DIR}/intel_buffers.h
diff --git a/cmake/Modules/FindTBB.cmake b/cmake/Modules/FindTBB.cmake
new file mode 100644
index 0000000000..8cc050817e
--- /dev/null
+++ b/cmake/Modules/FindTBB.cmake
@@ -0,0 +1,46 @@
+# - Find parts of TBB
+# Find the native TBB headers and libraries.
+#
+#  TBB_INCLUDE_DIRS - where to find tbb.h, etc.
+#  TBB_LIBRARIES    - List of libraries when using tbb.
+#  TBB_FOUND        - True if tbb found.
+#
+
+########################################################
+# TBB
+
+# TODO use more generic FindTBB
+
+find_path(TBB_INCLUDE_DIR NAMES tbb/tbb.h PATHS $ENV{TBBROOT}/include)
+find_library(TBB_LIBRARY NAMES tbb PATHS $ENV{TBBROOT}/lib/intel64/gcc4.7
+                                         $ENV{TBBROOT}/lib/intel64/gcc4.4
+                                         $ENV{TBBROOT}/lib/intel64/gcc4.1)
+set(TBB_LIBRARIES ${TBB_LIBRARY})
+set(TBB_INCLUDE_DIRS ${TBB_INCLUDE_DIR})
+
+include(FindPackageHandleStandardArgs)
+# handle the QUIETLY and REQUIRED arguments and set TBB_FOUND to TRUE
+# if all listed variables are TRUE
+
+find_package_handle_standard_args(TBB DEFAULT_MSG TBB_LIBRARY TBB_INCLUDE_DIR)
+
+mark_as_advanced(TBB_INCLUDE_DIR TBB_LIBRARY )
+
+########################################################
+# TBB Malloc
+
+find_path(TBB_MALLOC_INCLUDE_DIR NAMES tbb/tbb.h PATHS $ENV{TBBROOT}/include)
+find_library(TBB_MALLOC_LIBRARY NAMES tbbmalloc PATHS $ENV{TBBROOT}/lib/intel64/gcc4.7
+                                                      $ENV{TBBROOT}/lib/intel64/gcc4.4
+                                                      $ENV{TBBROOT}/lib/intel64/gcc4.1)
+
+set(TBB_MALLOC_LIBRARIES ${TBB_MALLOC_LIBRARY})
+set(TBB_MALLOC_INCLUDE_DIRS ${TBB_MALLOC_INCLUDE_DIR})
+
+include(FindPackageHandleStandardArgs)
+# handle the QUIETLY and REQUIRED arguments and set TBB_MALLOC_FOUND to TRUE
+# if all listed variables are TRUE
+
+find_package_handle_standard_args(TBB_MALLOC DEFAULT_MSG TBB_MALLOC_LIBRARY TBB_MALLOC_INCLUDE_DIR)
+
+mark_as_advanced(TBB_MALLOC_INCLUDE_DIR TBB_MALLOC_LIBRARY )
diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
index 16f0a0d07f..14f17aa981 100644
--- a/doc/src/Build_extras.txt
+++ b/doc/src/Build_extras.txt
@@ -648,8 +648,9 @@ intel"_Speed_intel.html doc page.
 
 [CMake build]:
 
-TODO: How do you choose CPU vs KKL, so that CMake knows
-which flags to add to CCFLAGS ??
+-D INTEL_ARCH=value     # value = cpu (default) or knl :pre
+
+Requires an Intel compiler, Intel TBB and MKL and has to be built with "-D BUILD_OMP=on".
 
 [Traditional make]:
 
-- 
GitLab


From 3384c683dfa636a3a97a65b045a3e9dc05918d04 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Tue, 14 Aug 2018 11:41:22 -0400
Subject: [PATCH 195/243] Correct FFT_PACK in CMakeLists.txt

---
 cmake/CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 29f7b640d2..4ff160f010 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -233,7 +233,7 @@ if(PKG_KSPACE)
     add_definitions(-DFFT_KISS)
   endif()
   set(FFT_PACK "array" CACHE STRING "Optimization for FFT")
-  set_property(CACHE PACK_OPTIMIZATION PROPERTY STRINGS array pointer memcpy)
+  set_property(CACHE FFT_PACK PROPERTY STRINGS array pointer memcpy)
   if(NOT FFT_PACK STREQUAL "array")
     string(TOUPPER ${FFT_PACK} FFT_PACK_DEFINE)
     add_definitions(-DFFT_PACK_${FFT_PACK_DEFINE})
-- 
GitLab


From 7ab11488d06505c53ecfab87974d8c3ffeb9ac7f Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Tue, 14 Aug 2018 11:51:37 -0400
Subject: [PATCH 196/243] Added brief discussion on how to use presets files
 with CMake

---
 doc/src/Build_package.txt | 32 +++++++++++++++++++++++++++++---
 1 file changed, 29 insertions(+), 3 deletions(-)

diff --git a/doc/src/Build_package.txt b/doc/src/Build_package.txt
index cfaa39f331..3244e0f94a 100644
--- a/doc/src/Build_package.txt
+++ b/doc/src/Build_package.txt
@@ -130,9 +130,35 @@ the Git or SVN repositories, no packages are pre-installed.
 
 [CMake shortcuts for installing many packages]:
 
-TODO: brief discussion of the cmake command line options with presets
-that Axel or Richard enabled to install sets of packages at once?
-Are these just for cmake, or also ccmake and cmake-gui?
+Instead of specifying all the CMake options via the command-line, CMake allows
+initializing the variable cache using script files. These are regular CMake
+files which can manipulate and set variables, and can also contain control flow
+constructs.
+
+LAMMPS includes several of these files to define configuration "presets",
+similar to the options that exist for the Make based system. Using these files
+you can enable/disable portions of the available packages in LAMMPS. If you need a
+custom preset you can take one of them as a starting point and customize it to your
+needs.
+
+cmake -C ../cmake/presets/all_on.cmake \[OPTIONS\] ../cmake | enable all packages
+cmake -C ../cmake/presets/all_off.cmake \[OPTIONS\] ../cmake | disable all packages
+cmake -C ../cmake/presets/std.cmake \[OPTIONS\] ../cmake | enable standard packages
+cmake -C ../cmake/presets/user.cmake \[OPTIONS\] ../cmake | enable user packages
+cmake -C ../cmake/presets/std_nolib.cmake \[OPTIONS\] ../cmake | enable standard packages that do not require extra libraries
+cmake -C ../cmake/presets/nolib.cmake \[OPTIONS\] ../cmake | disable all packages that do not require extra libraries
+cmake -C ../cmake/presets/manual_selection.cmake \[OPTIONS\] ../cmake | example of how to create a manual selection of packages :tb(s=|,a=l)
+
+NOTE: Running cmake this way manipulates the variable cache in your current
+build directory. You can combine presets and options with multiple cmake runs.
+
+[Example:]
+
+# build LAMMPS with all "standard" packages which don't
+# use libraries and enable GPU package
+mkdir build
+cd build
+cmake -C ../cmake/presets/std_nolib.cmake -D PKG_GPU=on ../cmake :pre
 
 :line
 
-- 
GitLab


From 64d539d9d2709fd80b50273552d8982f1bd1e56a Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Tue, 14 Aug 2018 11:56:57 -0400
Subject: [PATCH 197/243] Disable sin/cos check in CMakeLists.txt since it
 breaks KOKKOS CUDA support

---
 cmake/CMakeLists.txt | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 4ff160f010..58311928d9 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -496,12 +496,13 @@ include(CheckLibraryExists)
 if (CMAKE_VERSION VERSION_LESS "3.4")
   enable_language(C) # check_library_exists isn't supported without a c compiler before v3.4
 endif()
-foreach(FUNC sin cos)
-  check_library_exists(${MATH_LIBRARIES} ${FUNC} "" FOUND_${FUNC}_${MATH_LIBRARIES})
-  if(NOT FOUND_${FUNC}_${MATH_LIBRARIES})
-    message(FATAL_ERROR "Could not find needed math function - ${FUNC}")
-  endif(NOT FOUND_${FUNC}_${MATH_LIBRARIES})
-endforeach(FUNC)
+# RB: disabled this check because it breaks with KOKKOS CUDA enabled
+#foreach(FUNC sin cos)
+#  check_library_exists(${MATH_LIBRARIES} ${FUNC} "" FOUND_${FUNC}_${MATH_LIBRARIES})
+#  if(NOT FOUND_${FUNC}_${MATH_LIBRARIES})
+#    message(FATAL_ERROR "Could not find needed math function - ${FUNC}")
+#  endif(NOT FOUND_${FUNC}_${MATH_LIBRARIES})
+#endforeach(FUNC)
 list(APPEND LAMMPS_LINK_LIBS ${MATH_LIBRARIES})
 
 ######################################
-- 
GitLab


From 7ec52784cb34e80704ce1e7d9f19e4b1f059c973 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Tue, 14 Aug 2018 15:44:25 -0600
Subject: [PATCH 198/243] more changes to doc pages and CMakeLists.txt

---
 cmake/CMakeLists.txt                          |  49 +++---
 doc/src/Build.txt                             |   3 +
 doc/src/Build_basics.txt                      |   1 -
 doc/src/Build_extras.txt                      | 125 ++++++++++------
 doc/src/Build_package.txt                     |  23 +--
 doc/src/Build_settings.txt                    |  21 ++-
 doc/src/Commands.txt                          |   2 +
 doc/src/Errors.txt                            |   1 +
 doc/src/Install.txt                           |   1 +
 doc/src/Install_linux.txt                     |   1 -
 doc/src/Intro.txt                             |   1 +
 doc/src/Intro_authors.txt                     |   3 +-
 doc/src/Manual.txt                            |   2 +-
 .../{Build_manual.txt => Manual_build.txt}    |   1 -
 doc/src/Modify.txt                            |   4 +
 doc/src/Packages.txt                          |   1 +
 doc/src/Packages_details.txt                  |   2 -
 doc/src/Python.txt                            |   3 +
 doc/src/Run.txt                               |   1 +
 doc/src/Run_options.txt                       |   1 -
 doc/src/Speed.txt                             |   3 +
 doc/src/Speed_gpu.txt                         |  83 +----------
 doc/src/Speed_intel.txt                       |  30 ++--
 doc/src/Speed_kokkos.txt                      | 140 +++---------------
 doc/src/Speed_omp.txt                         |  30 ++--
 doc/src/Speed_opt.txt                         |  25 +---
 doc/src/Tools.txt                             |   1 -
 doc/src/compute_chunk_atom.txt                |   3 -
 doc/src/dump_modify.txt                       |   3 -
 doc/src/fix_box_relax.txt                     |   2 -
 lib/gpu/Install.py                            |  11 +-
 src/KSPACE/fft3d.cpp                          |   4 +-
 src/KSPACE/fft3d.h                            |  13 +-
 src/KSPACE/kissfft.h                          |   1 +
 src/pack.h                                    |  11 +-
 35 files changed, 232 insertions(+), 374 deletions(-)
 rename doc/src/{Build_manual.txt => Manual_build.txt} (99%)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 58311928d9..1bd9eb22b1 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -371,8 +371,8 @@ if(PKG_USER-NETCDF)
 endif()
 
 if(PKG_USER-SMD)
-  option(DOWNLOAD_Eigen3 "Download Eigen3 (instead of using the system's one)" OFF)
-  if(DOWNLOAD_Eigen3)
+  option(DOWNLOAD_EIGEN3 "Download Eigen3 (instead of using the system's one)" OFF)
+  if(DOWNLOAD_EIGEN3)
     include(ExternalProject)
     ExternalProject_Add(Eigen3_build
       URL http://bitbucket.org/eigen/eigen/get/3.3.4.tar.gz 
@@ -385,7 +385,7 @@ if(PKG_USER-SMD)
   else()
     find_package(Eigen3)
     if(NOT Eigen3_FOUND)
-      message(FATAL_ERROR "Eigen3 not found, help CMake to find it by setting EIGEN3_INCLUDE_DIR, or set DOWNLOAD_Eigen3=ON to download it")
+      message(FATAL_ERROR "Eigen3 not found, help CMake to find it by setting EIGEN3_INCLUDE_DIR, or set DOWNLOAD_EIGEN3=ON to download it")
     endif()
   endif()
   include_directories(${EIGEN3_INCLUDE_DIR})
@@ -807,16 +807,26 @@ if(PKG_GPU)
                     ${GPU_SOURCES_DIR}/fix_gpu.h
                     ${GPU_SOURCES_DIR}/fix_gpu.cpp)
 
-    set(GPU_API "OpenCL" CACHE STRING "API used by GPU package")
-    set_property(CACHE GPU_API PROPERTY STRINGS OpenCL CUDA)
+    set(GPU_API "opencl" CACHE STRING "API used by GPU package")
+    set_property(CACHE GPU_API PROPERTY STRINGS opencl cuda)
+    string(TOUPPER ${GPU_API} GPU_API_DEFINE)
 
-    set(GPU_PREC "SINGLE_DOUBLE" CACHE STRING "LAMMPS GPU precision size")
-    set_property(CACHE GPU_PREC PROPERTY STRINGS SINGLE_DOUBLE SINGLE_SINGLE DOUBLE_DOUBLE)
+    set(GPU_PREC "mixed" CACHE STRING "LAMMPS GPU precision")
+    set_property(CACHE GPU_PREC PROPERTY STRINGS double mixed single)
+    string(TOUPPER ${GPU_PREC} GPU_PREC_DEFINE)
+
+    if(GPU_PREC_DEFINE STREQUAL "DOUBLE")
+      set(GPU_PREC_SETTING "DOUBLE_DOUBLE")
+    elseif(GPU_PREC_DEFINE STREQUAL "MIXED")
+      set(GPU_PREC_SETTING "SINGLE_DOUBLE")
+    elseif(GPU_PREC_DEFINE STREQUAL "SINGLE")
+      set(GPU_PREC_SETTING "SINGLE_SINGLE")
+    endif()
 
     file(GLOB GPU_LIB_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/*.cpp)
     file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu)
 
-    if(GPU_API STREQUAL "CUDA")
+    if(GPU_API_DEFINE STREQUAL "CUDA")
       find_package(CUDA REQUIRED)
       find_program(BIN2C bin2c)
       if(NOT BIN2C)
@@ -824,7 +834,7 @@ if(PKG_GPU)
       endif()
       option(CUDPP_OPT "Enable CUDPP_OPT" ON)
 
-      set(GPU_ARCH "sm_30" CACHE STRING "LAMMPS GPU CUDA SM architecture (e.g.  sm_60)")
+      set(GPU_ARCH "30" CACHE STRING "LAMMPS GPU CUDA SM architecture (e.g. 60)")
 
       file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/*.cu)
       list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu)
@@ -838,10 +848,10 @@ if(PKG_GPU)
       endif()
 
       cuda_compile_cubin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS
-                   -DUNIX -O3 -Xptxas -v --use_fast_math -DNV_KERNEL -DUCL_CUDADR -arch=${GPU_ARCH} -D_${GPU_PREC})
+                   -DUNIX -O3 -Xptxas -v --use_fast_math -DNV_KERNEL -DUCL_CUDADR -arch=sm_${GPU_ARCH} -D_${GPU_PREC_SETTING})
 
       cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS $<$<BOOL:${BUILD_SHARED_LIBS}>:-Xcompiler=-fPIC>
-                   -DUNIX -O3 -Xptxas -v --use_fast_math -DUCL_CUDADR -arch=${GPU_ARCH} -D_${GPU_PREC})
+                   -DUNIX -O3 -Xptxas -v --use_fast_math -DUCL_CUDADR -arch=sm_${GPU_ARCH} -D_${GPU_PREC_SETTING})
 
       foreach(CU_OBJ ${GPU_GEN_OBJS})
         get_filename_component(CU_NAME ${CU_OBJ} NAME_WE)
@@ -858,7 +868,7 @@ if(PKG_GPU)
       add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS})
       target_link_libraries(gpu ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
       target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS})
-      target_compile_definitions(gpu PRIVATE -D_${GPU_PREC} -DMPI_GERYON -DUCL_NO_EXIT)
+      target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT)
       if(CUDPP_OPT)
         target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini)
         target_compile_definitions(gpu PRIVATE -DUSE_CUDPP)
@@ -872,10 +882,11 @@ if(PKG_GPU)
       target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS})
 
 
-    elseif(GPU_API STREQUAL "OpenCL")
+    elseif(GPU_API_DEFINE STREQUAL "OPENCL")
       find_package(OpenCL REQUIRED)
-      set(OCL_TUNE "GENERIC" CACHE STRING "OpenCL Device Tuning")
-      set_property(CACHE OCL_TUNE PROPERTY STRINGS INTEL FERMI KEPLER CYPRESS GENERIC)
+      set(OCL_TUNE "generic" CACHE STRING "OpenCL Device Tuning")
+      set_property(CACHE OCL_TUNE PROPERTY STRINGS intel fermi kepler cypress generic)
+      string(TOUPPER ${OCL_TUNE} OCL_TUNE_DEFINE)
 
       include(OpenCLUtils)
       set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h)
@@ -897,7 +908,7 @@ if(PKG_GPU)
       add_library(gpu STATIC ${GPU_LIB_SOURCES})
       target_link_libraries(gpu ${OpenCL_LIBRARIES})
       target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu ${OpenCL_INCLUDE_DIRS})
-      target_compile_definitions(gpu PRIVATE -D_${GPU_PREC} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT)
+      target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE_DEFINE}_OCL -DMPI_GERYON -DUCL_NO_EXIT)
       target_compile_definitions(gpu PRIVATE -DUSE_OPENCL)
 
       list(APPEND LAMMPS_LINK_LIBS gpu)
@@ -1148,9 +1159,9 @@ if(BUILD_MPI)
 endif()
 if(PKG_GPU)
   message(STATUS "GPU Api: ${GPU_API}")
-  if(GPU_API STREQUAL "CUDA")
-    message(STATUS "GPU Arch: ${GPU_ARCH}")
-  elseif(GPU_API STREQUAL "OpenCL")
+  if(GPU_API_DEFINE STREQUAL "CUDA")
+    message(STATUS "GPU Arch: sm_${GPU_ARCH}")
+  elseif(GPU_API_DEFINE STREQUAL "OPENCL")
     message(STATUS "OCL Tune: ${OCL_TUNE}")
   endif()
   message(STATUS "GPU Precision: ${GPU_PREC}")
diff --git a/doc/src/Build.txt b/doc/src/Build.txt
index 76aa95de55..218664897f 100644
--- a/doc/src/Build.txt
+++ b/doc/src/Build.txt
@@ -19,18 +19,21 @@ as described on the "Install"_Install.html doc page.
 <!-- RST
 
 .. toctree::
+   :maxdepth: 1
 
    Build_cmake
    Build_make
    Build_link
 
 .. toctree::
+   :maxdepth: 1
 
    Build_basics
    Build_settings
    Build_package
 
 .. toctree::
+   :maxdepth: 1
 
    Build_extras
 
diff --git a/doc/src/Build_basics.txt b/doc/src/Build_basics.txt
index 806144256c..79c22d8fe4 100644
--- a/doc/src/Build_basics.txt
+++ b/doc/src/Build_basics.txt
@@ -18,7 +18,6 @@ CMake and make:
 "Build the LAMMPS documentation"_#doc
 "Install LAMMPS after a build"_#install :ul
 
-:line
 :line
 
 Serial vs parallel build :h3,link(serial)
diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
index 14f17aa981..69f65a451f 100644
--- a/doc/src/Build_extras.txt
+++ b/doc/src/Build_extras.txt
@@ -49,7 +49,6 @@ This is the list of packages that may require additional steps.
 "USER-SMD"_#user-smd,
 "USER-VTK"_#user-vtk :tb(c=6,ea=c)
 
-:line
 :line
 
 COMPRESS package :h4,link(compress)
@@ -81,15 +80,15 @@ which GPU hardware to build for.
 
 -D GPU_API=value      # value = opencl (default) or cuda
 -D GPU_PREC=value     # precision setting
-                      # value = single or mixed (default) or double
+                      # value = double or mixed (default) or single
 -D OCL_TUNE=value     # hardware choice for GPU_API=opencl
-                      # generic (default) or intel (Intel CPU) or phi (Intel Xeon Phi) or fermi, kepler, cypress (NVIDIA)
+                      # generic (default) or intel (Intel CPU) or fermi, kepler, cypress (NVIDIA)
 -D GPU_ARCH=value     # hardware choice for GPU_API=cuda
-                      # value = sm20 (Fermi) or sm30 (Kepler) or sm50 (Maxwell) or sm60 (Pascal) or sm70 (Volta)
+                      # value = 20 (Fermi) or 30 (Kepler) or 50 (Maxwell) or 60 (Pascal) or 70 (Volta)
                       # default is Cuda-compiler dependent, but typically Fermi
 -D CUDPP_OPT=value    # optimization setting for GPU_API=cudea
                       # enables CUDA Performance Primitives Optimizations
-                      # on (default) or off :pre
+                      # yes (default) or no :pre
 
 [Traditional make]:
 
@@ -119,7 +118,7 @@ Makefile.machine you start from via the -h, -a, -p, -e switches, and
 also save a copy of the new Makefile if desired:
 
 CUDA_HOME = where NVIDIA CUDA software is installed on your system
-CUDA_ARCH = what GPU hardware you have (see help message for details)
+CUDA_ARCH = what GPU hardware you have (same as CMake, see help message for details)
 CUDA_PRECISION = precision (double, mixed, single)
 EXTRAMAKE = which Makefile.lammps.* file to copy to Makefile.lammps :ul
 
@@ -163,7 +162,7 @@ package?" page.
 
 [CMake build]:
 
--D DOWNLOAD_KIM=value    # download OpenKIM API v1 for build, value = off (default) or on
+-D DOWNLOAD_KIM=value    # download OpenKIM API v1 for build, value = no (default) or yes
 -D KIM_LIBRARY=path      # path to KIM shared library (only needed if a custom location) 
 -D KIM_INCLUDE_DIR=path  # path to KIM include directory (only needed if a custom location) :pre
 
@@ -183,17 +182,65 @@ make lib-kim args="-p /usr/local/kim-api" # use an existing KIM API installation
 make lib-kim args="-p /usr/local/kim-api -a EAM_Dynamo_Ackland_W__MO_141627196590_002" # ditto but add one model or driver :pre
 
 :line
- 
+
 KOKKOS package :h4,link(kokkos)
 
 To build with this package, you must choose which hardware you want to
 build for, either CPUs (multi-threading via OpenMP) or KNLs (OpenMP)
-or GPUs (Cuda).
+or GPUs (NVIDIA Cuda).
+
+For a CMake or make build, these are the possible choices for the
+KOKKOS_ARCH settings described below.  Note that for CMake, these are
+really Kokkos variables, not LAMMPS variables.  Hence you must use
+case-sensitive values, e.g. BDW, not bdw.
+
+ARMv80 = ARMv8.0 Compatible CPU
+ARMv81 = ARMv8.1 Compatible CPU
+ARMv8-ThunderX = ARMv8 Cavium ThunderX CPU
+BGQ = IBM Blue Gene/Q CPUs
+Power8 = IBM POWER8 CPUs
+Power9 = IBM POWER9 CPUs
+SNB = Intel Sandy/Ivy Bridge CPUs
+HSW = Intel Haswell CPUs
+BDW = Intel Broadwell Xeon E-class CPUs
+SKX = Intel Sky Lake Xeon E-class HPC CPUs (AVX512)
+KNC = Intel Knights Corner Xeon Phi
+KNL = Intel Knights Landing Xeon Phi
+Kepler30 = NVIDIA Kepler generation CC 3.0
+Kepler32 = NVIDIA Kepler generation CC 3.2
+Kepler35 = NVIDIA Kepler generation CC 3.5
+Kepler37 = NVIDIA Kepler generation CC 3.7
+Maxwell50 = NVIDIA Maxwell generation CC 5.0
+Maxwell52 = NVIDIA Maxwell generation CC 5.2
+Maxwell53 = NVIDIA Maxwell generation CC 5.3
+Pascal60 = NVIDIA Pascal generation CC 6.0
+Pascal61 = NVIDIA Pascal generation CC 6.1 :ul
 
 [CMake build]:
 
-TODO: how to do this, how to select CPU vs KNL vs GPU, and specify
-the particular flavor of hardware: e.g. HSW vs BWL
+For multicore CPUs using OpenMP, set these 2 variables.
+
+-D KOKKOS_ARCH=archCPU         # archCPU = CPU from list above :pre
+-D KOKKOS_ENABLE_OPENMP=yes :pre
+
+For Intel KNLs using OpenMP, set these 2 variables:
+
+-D KOKKOS_ARCH=KNL
+-D KOKKOS_ENABLE_OPENMP=yes :pre
+
+For NVIDIA GPUs using CUDA, set these 4 variables:
+
+-D KOKKOS_ARCH="archCPU;archGPU"   # archCPU = CPU from list above that is hosting the GPU
+                                   # archGPU = GPU from list above
+-D KOKKOS_ENABLE_CUDA=yes
+-D KOKKOS_ENABLE_OPENMP=yes 
+-D CMAKE_CXX_COMPILER=wrapper      # wrapper = full path to Cuda nvcc wrapper :pre
+
+The wrapper value is the Cuda nvcc compiler wrapper provided in the
+Kokkos library: lib/kokkos/bin/nvcc_wrapper.  The setting should
+include the full path name to the wrapper, e.g.
+
+-D CMAKE_CXX_COMPILER=/home/username/lammps/lib/kokkos/bin/nvcc_wrapper :pre
 
 [Traditional make]:
 
@@ -204,16 +251,7 @@ src/MAKE/OPTIONS/Makefile.kokkos* files for examples.
 For multicore CPUs using OpenMP:
 
 KOKKOS_DEVICES = OpenMP
-KOKKOS_ARCH = HSW :pre
-
-Possible values are:
-
-HSW for Intel Haswell
-SNB for Intel SandyBridge
-BDW for Intel Broadwell
-BGQ for IBM BlueGene Q
-Power7 for IBM
-Power8 for IBM :ul
+KOKKOS_ARCH = archCPU      # archCPU = CPU from list above :pre
 
 For Intel KNLs using OpenMP:
 
@@ -223,8 +261,8 @@ KOKKOS_ARCH = KNL :pre
 For NVIDIA GPUs using CUDA:
 
 KOKKOS_DEVICES = Cuda
-KOKKOS_ARCH = Pascal60,Power8     # P100 hosted by an IBM Power8, etc
-KOKKOS_ARCH = Kepler37,Power8     # K80 hosted by an IBM Power8, etc :pre
+KOKKOS_ARCH = archCPU,archGPU    # archCPU = CPU from list above that is hosting the GPU
+                                 # archGPU = GPU from list above :pre
 
 For GPUs, you also need these 2 lines in your Makefile.machine before
 the CC line is defined, in this case for use with OpenMPI mpicxx.  The
@@ -245,7 +283,7 @@ library.
 
 [CMake build]:
 
--D DOWNLOAD_LATTE=value    # download LATTE for build, value = off (default) or on
+-D DOWNLOAD_LATTE=value    # download LATTE for build, value = no (default) or yes
 -D LATTE_LIBRARY=path      # path to LATTE shared library (only needed if a custom location) :pre
 
 [Traditional make]:
@@ -320,7 +358,7 @@ lib/mscg/README and MSCG/Install files for more details.
 
 [CMake build]:
 
--D DOWNLOAD_MSCG=value    # download MSCG for build, value = off (default) or on
+-D DOWNLOAD_MSCG=value    # download MSCG for build, value = no (default) or yes
 -D MSCG_LIBRARY=path      # path to MSCG shared library (only needed if a custom location) 
 -D MSCG_INCLUDE_DIR=path  # path to MSCG include directory (only needed if a custom location) :pre
 
@@ -400,12 +438,12 @@ lib/python/README for more details.
 
 -D PYTHON_EXECUTABLE=path   # path to Python executable to use :pre
 
-Without this setting, CMake will you your system default Python.  To
-use a different Python version, you can either create a virtualenv,
-activate it and then run cmake.  Or you can set the PYTHON_EXECUTABLE
-variable to specify which Python interpreter should be used.  Note
-note that you will also need to have the development headers installed
-for this version, e.g. python2-devel.
+Without this setting, CMake will ues the default Python on your
+system.  To use a different Python version, you can either create a
+virtualenv, activate it and then run cmake.  Or you can set the
+PYTHON_EXECUTABLE variable to specify which Python interpreter should
+be used.  Note note that you will also need to have the development
+headers installed for this version, e.g. python2-devel.
 
 [Traditional make]:
 
@@ -464,7 +502,7 @@ library"_voro_home.
 
 [CMake build]:
 
--D DOWNLOAD_VORO=value    # download Voro++ for build, value = off (default) or on
+-D DOWNLOAD_VORO=value    # download Voro++ for build, value = no (default) or yes
 -D VORO_LIBRARY=path      # (only needed if at custom location) path to VORO shared library
 -D VORO_INCLUDE_DIR=path  # (only needed if at custom location) path to VORO include directory :pre
 
@@ -486,7 +524,6 @@ created in lib/voronoi to point to the Voro++ src dir.  When LAMMPS
 builds in src it will use these links.  You should not need to edit
 the lib/voronoi/Makefile.lammps file.
 
-:line
 :line
 
 USER-ATC package :h4,link(user-atc)
@@ -642,15 +679,16 @@ USER-INTEL package :h4,link(user-intel)
 
 To build with this package, you must choose which hardware you want to
 build for, either Intel CPUs or Intel KNLs.  You should also typically
-install the USER-OMP package, as it can be used in tandem with the
-USER-INTEL package to good effect, as explained on the "Speed
+"install the USER-OMP package"_#user-omp, as it can be used in tandem
+with the USER-INTEL package to good effect, as explained on the "Speed
 intel"_Speed_intel.html doc page.
 
 [CMake build]:
 
 -D INTEL_ARCH=value     # value = cpu (default) or knl :pre
+-D BUILD_OMP=yes        # also required to build with the USER-INTEl package :pre
 
-Requires an Intel compiler, Intel TBB and MKL and has to be built with "-D BUILD_OMP=on".
+Requires an Intel compiler as well as the Intel TBB and MKL libraries.
 
 [Traditional make]:
 
@@ -821,22 +859,19 @@ successfully build on your system.
 
 USER-SMD package :h4,link(user-smd)
 
-To build with this package, you must download the Eigen library.
-Eigen is a template library, so you do not need to build it.
+To build with this package, you must download the Eigen3 library.
+Eigen3 is a template library, so you do not need to build it.
 
 [CMake build]:
 
--D EIGEN3_INCLUDE_DIR=path    # path to Eigen library :pre
-
-TODO: there is no download option for the Eigen lib?
+-D DOWNLOAD_EIGEN3            # download Eigen3, value = no (default) or yes
+-D EIGEN3_INCLUDE_DIR=path    # path to Eigen library (only needed if a custom location) :pre
 
-CMake will not download the Eigen library.  But once you have done
-that, a CMake build of LAMMPS with "-D PKG_USER-SMD=yes" should work.
-Set EIGEN3_INCLUDE_DIR if CMake cannot find the Eigen library.
+Set EIGEN3_INCLUDE_DIR if CMake cannot find the Eigen3 library.
 
 [Traditional make]:
 
-You can download the Eigen library manually if you prefer; follow the
+You can download the Eigen3 library manually if you prefer; follow the
 instructions in lib/smd/README.  You can also do it in one step from
 the lammps/src dir, using a command like these, which simply invoke
 the lib/smd/Install.py script with the specified args:
diff --git a/doc/src/Build_package.txt b/doc/src/Build_package.txt
index 3244e0f94a..45626dbbae 100644
--- a/doc/src/Build_package.txt
+++ b/doc/src/Build_package.txt
@@ -130,16 +130,16 @@ the Git or SVN repositories, no packages are pre-installed.
 
 [CMake shortcuts for installing many packages]:
 
-Instead of specifying all the CMake options via the command-line, CMake allows
-initializing the variable cache using script files. These are regular CMake
-files which can manipulate and set variables, and can also contain control flow
-constructs.
+Instead of specifying all the CMake options via the command-line,
+CMake allows initializing the variable cache using script files. These
+are regular CMake files which can manipulate and set variables, and
+can also contain control flow constructs.
 
-LAMMPS includes several of these files to define configuration "presets",
-similar to the options that exist for the Make based system. Using these files
-you can enable/disable portions of the available packages in LAMMPS. If you need a
-custom preset you can take one of them as a starting point and customize it to your
-needs.
+LAMMPS includes several of these files to define configuration
+"presets", similar to the options that exist for the Make based
+system. Using these files you can enable/disable portions of the
+available packages in LAMMPS. If you need a custom preset you can take
+one of them as a starting point and customize it to your needs.
 
 cmake -C ../cmake/presets/all_on.cmake \[OPTIONS\] ../cmake | enable all packages
 cmake -C ../cmake/presets/all_off.cmake \[OPTIONS\] ../cmake | disable all packages
@@ -149,8 +149,9 @@ cmake -C ../cmake/presets/std_nolib.cmake \[OPTIONS\] ../cmake | enable standard
 cmake -C ../cmake/presets/nolib.cmake \[OPTIONS\] ../cmake | disable all packages that do not require extra libraries
 cmake -C ../cmake/presets/manual_selection.cmake \[OPTIONS\] ../cmake | example of how to create a manual selection of packages :tb(s=|,a=l)
 
-NOTE: Running cmake this way manipulates the variable cache in your current
-build directory. You can combine presets and options with multiple cmake runs.
+NOTE: Running cmake this way manipulates the variable cache in your
+current build directory. You can combine presets and options with
+multiple cmake runs.
 
 [Example:]
 
diff --git a/doc/src/Build_settings.txt b/doc/src/Build_settings.txt
index 736e9b9f0e..45a0827210 100644
--- a/doc/src/Build_settings.txt
+++ b/doc/src/Build_settings.txt
@@ -21,7 +21,6 @@ explain how to do this for building both with CMake and make.
 "Workaround for long long integers"_#longlong
 "Error handling exceptions"_#exceptions when using LAMMPS as a library :all(b)
 
-:line
 :line
  
 FFT library :h3,link(fft)
@@ -38,6 +37,10 @@ LAMMPS can use them if they are available on your system.
 -D FFT_SINGLE=value       # yes or no (default), no = double precision
 -D FFT_PACK=value         # array (default) or pointer or memcpy :pre
 
+NOTE: The values for the FFT variable must be in upper-case.
+This is an exception to the rule that all CMake variables can
+be specified with lower-case values.
+
 Usually these settings are all that is needed.  If CMake cannot find
 the FFT library, you can set these variables:
 
@@ -50,10 +53,11 @@ the FFT library, you can set these variables:
 
 [Makefile.machine settings]:
 
-FFT_INC = -DFFT_FFTW3         # -DFFT_FFTW3, -DFFT_FFTW2, -DFFT_FFTW (same as -DFFT_FFTW3), -DFFT_MKL, or -DFFT_KISSFFT
+FFT_INC = -DFFT_FFTW3         # -DFFT_FFTW3, -DFFT_FFTW2, -DFFT_FFTW (same as -DFFT_FFTW3), -DFFT_MKL, or -DFFT_KISS
                               # default is KISS if not specified
 FFT_INC = -DFFT_SINGLE        # do not specify for double precision
 FFT_INC = -DFFT_PACK_ARRAY    # or -DFFT_PACK_POINTER or -DFFT_PACK_MEMCPY :pre
+                              # default is FFT_PACK_ARRAY if not specified
 
 FFT_INC =    	-I/usr/local/include
 FFT_PATH =      -L/usr/local/lib
@@ -84,9 +88,10 @@ pppm"_kspace_style.html command.  The "Run output"_doc page gives more
 details.
 
 FFTW is a fast, portable FFT library that should also work on any
-platform and can be faster than KISS FFT.  You can download it from
-"www.fftw.org"_http://www.fftw.org.  Both the (obsolete) legacy version
-2.1.X and the newer 3.X versions are supported.  
+platform and can be faster than the KISS FFT library.  You can
+download it from "www.fftw.org"_http://www.fftw.org.  Both the
+(obsolete) legacy version 2.1.X and the newer 3.X versions are
+supported.
 
 NOTE: FFTW2 has not been updated since 1999 and has been declared
 obsolete by its developers.
@@ -148,7 +153,7 @@ adequate.
 [Makefile.machine setting]:
 
 LMP_INC = -DLAMMPS_SMALLBIG    # or -DLAMMPS_BIGBIG or -DLAMMPS_SMALLSMALL :pre
-
+                               # default is LAMMMPS_SMALLBIG if not specified
 [CMake and make info]:
 
 The default "smallbig" setting allows for simulations with:
@@ -298,10 +303,10 @@ aligned on 64-byte boundaries.
 
 [CMake variable]:
 
--D LAMMPS_MEMALIGN=value            # 8, 16, 32, 64 (default) :pre
+-D LAMMPS_MEMALIGN=value            # 0, 8, 16, 32, 64 (default) :pre
 
 Use a LAMMPS_MEMALIGN value of 0 to disable using posix_memalign()
-and revert to using the malloc() C-library function instead. When
+and revert to using the malloc() C-library function instead.  When
 compiling LAMMPS for Windows systems, malloc() will always be used
 and this setting ignored.
 
diff --git a/doc/src/Commands.txt b/doc/src/Commands.txt
index 30e3343bd2..84eac285f7 100644
--- a/doc/src/Commands.txt
+++ b/doc/src/Commands.txt
@@ -16,6 +16,7 @@ commands in it are used to define a LAMMPS simulation.
 <!-- RST
 
 .. toctree::
+   :maxdepth: 1
 
    Commands_input
    Commands_parse
@@ -23,6 +24,7 @@ commands in it are used to define a LAMMPS simulation.
    Commands_category
 
 .. toctree::
+   :maxdepth: 1
 
    Commands_all
    Commands_fix
diff --git a/doc/src/Errors.txt b/doc/src/Errors.txt
index 1b6206c780..a8d8d3a18e 100644
--- a/doc/src/Errors.txt
+++ b/doc/src/Errors.txt
@@ -19,6 +19,7 @@ additional details for many of them.
 <!-- RST
 
 .. toctree::
+   :maxdepth: 1
 
    Errors_common
    Errors_bugs
diff --git a/doc/src/Install.txt b/doc/src/Install.txt
index d59c23d319..0a2e870a5d 100644
--- a/doc/src/Install.txt
+++ b/doc/src/Install.txt
@@ -20,6 +20,7 @@ need the source code.
 <!-- RST
 
 .. toctree::
+   :maxdepth: 1
 
    Install_linux
    Install_mac
diff --git a/doc/src/Install_linux.txt b/doc/src/Install_linux.txt
index cddec0c069..cc15ac0ae0 100644
--- a/doc/src/Install_linux.txt
+++ b/doc/src/Install_linux.txt
@@ -15,7 +15,6 @@ Binaries are available for many different versions of Linux:
 "Pre-built Ubuntu Linux executables"_#ubuntu
 "Pre-built Gentoo Linux executable"_#gentoo :all(b)
 
-:line
 :line
 
 Pre-built binary RPMs for Fedora/RedHat/CentOS/openSUSE :h4,link(rpm)
diff --git a/doc/src/Intro.txt b/doc/src/Intro.txt
index 4defbed8c4..c8725e0085 100644
--- a/doc/src/Intro.txt
+++ b/doc/src/Intro.txt
@@ -15,6 +15,7 @@ These pages provide a brief introduction to LAMMPS.
 <!-- RST
 
 .. toctree::
+   :maxdepth: 1
 
    Intro_overview
    Manual_version
diff --git a/doc/src/Intro_authors.txt b/doc/src/Intro_authors.txt
index ce418d0ce1..8bb0fa9c22 100644
--- a/doc/src/Intro_authors.txt
+++ b/doc/src/Intro_authors.txt
@@ -58,7 +58,6 @@ Terry Stouch (Lexicon Pharmaceuticals, formerly at Bristol Myers Squibb)
 Steve Lustig (Dupont)
 Jim Belak and Roy Pollock (LLNL) :ul
 
-:line
 :line
 
 Here is a timeline for when various individuals contributed to a new
@@ -239,7 +238,7 @@ Aug11 : angle_style cosine/shift and cosine/shift/exp : Carsten Svaneborg
 Aug11 : dihedral_style cosine/shift/exp : Carsten Svaneborg
 Aug11 : pair_style dipole/sf : Mario Orsi
 Aug11 : fix addtorque and compute temp/rotate : Laurent Joly (U Lyon)
-Aug11 : FFT support via FFTW3, MKL, ACML, KISSFFT libraries : \
+Aug11 : FFT support via FFTW3, MKL, ACML, KISS FFT libraries : \
   Axel Kohlmeyer (Temple U)
 Jun11 : pair_style adp : Chris Weinberger (Sandia), Stephen Foiles (Sandia), \
   Chandra Veer Singh (Cornell)
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index 49fd8d4db2..0f0bd8f14e 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -84,7 +84,7 @@ every LAMMPS command.
    Modify
    Python
    Errors
-   Build_manual
+   Manual_build
 
 .. toctree::
    :caption: Index
diff --git a/doc/src/Build_manual.txt b/doc/src/Manual_build.txt
similarity index 99%
rename from doc/src/Build_manual.txt
rename to doc/src/Manual_build.txt
index 695ac21a13..2be4b98960 100644
--- a/doc/src/Build_manual.txt
+++ b/doc/src/Manual_build.txt
@@ -122,4 +122,3 @@ software installed. "http://calibre-ebook.com/"_http://calibre-ebook.com/
 You first create the ePUB file with 'make epub' and then do:
 
 ebook-convert LAMMPS.epub LAMMPS.mobi :pre
-
diff --git a/doc/src/Modify.txt b/doc/src/Modify.txt
index f828bd5d74..6189b9ba3e 100644
--- a/doc/src/Modify.txt
+++ b/doc/src/Modify.txt
@@ -24,11 +24,13 @@ contribute"_Modify_contribute.html doc page.
 <!-- RST
 
 .. toctree::
+   :maxdepth: 1
 
    Modify_overview
    Modify_contribute
 
 .. toctree::
+   :maxdepth: 1
 
    Modify_atom
    Modify_pair
@@ -38,6 +40,7 @@ contribute"_Modify_contribute.html doc page.
    Modify_command
 
 .. toctree::
+   :maxdepth: 1
 
    Modify_dump
    Modify_kspace
@@ -46,6 +49,7 @@ contribute"_Modify_contribute.html doc page.
    Modify_body
 
 .. toctree::
+   :maxdepth: 1
 
    Modify_thermo
    Modify_variable
diff --git a/doc/src/Packages.txt b/doc/src/Packages.txt
index e48c947be3..231c8528e9 100644
--- a/doc/src/Packages.txt
+++ b/doc/src/Packages.txt
@@ -23,6 +23,7 @@ LAMMPS build process.
 <!-- RST
 
 .. toctree::
+   :maxdepth: 1
 
    Packages_standard
    Packages_user
diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt
index 46948a88b7..ff0ce7844c 100644
--- a/doc/src/Packages_details.txt
+++ b/doc/src/Packages_details.txt
@@ -99,7 +99,6 @@ as contained in the file name.
 "USER-UEF"_#PKG-USER-UEF,
 "USER-VTK"_#PKG-USER-VTK :tb(c=6,ea=c)
 
-:line
 :line
 
 ASPHERE package :link(PKG-ASPHERE),h4
@@ -1007,7 +1006,6 @@ lib/voronoi/README
 "compute voronoi/atom"_compute_voronoi_atom.html
 examples/voronoi :ul
 
-:line
 :line
 
 USER-ATC package :link(PKG-USER-ATC),h4
diff --git a/doc/src/Python.txt b/doc/src/Python.txt
index 2c9c6872bb..b5d33c5daa 100644
--- a/doc/src/Python.txt
+++ b/doc/src/Python.txt
@@ -16,10 +16,12 @@ used together.
 <!-- RST
 
 .. toctree::
+   :maxdepth: 1
 
    Python_overview
 
 .. toctree::
+   :maxdepth: 1
 
    Python_run
    Python_shlib
@@ -31,6 +33,7 @@ used together.
    Python_examples
 
 .. toctree::
+   :maxdepth: 1
 
    Python_call
 
diff --git a/doc/src/Run.txt b/doc/src/Run.txt
index 68c3f1e295..5e2c0fe235 100644
--- a/doc/src/Run.txt
+++ b/doc/src/Run.txt
@@ -19,6 +19,7 @@ they can contain.
 <!-- RST
 
 .. toctree::
+   :maxdepth: 1
 
    Run_basics
    Run_options
diff --git a/doc/src/Run_options.txt b/doc/src/Run_options.txt
index 64c16517d6..0704e3b619 100644
--- a/doc/src/Run_options.txt
+++ b/doc/src/Run_options.txt
@@ -34,7 +34,6 @@ For example, the lmp_mpi executable might be launched as follows:
 mpirun -np 16 lmp_mpi -v f tmp.out -l my.log -sc none -i in.alloy
 mpirun -np 16 lmp_mpi -var f tmp.out -log my.log -screen none -in in.alloy :pre
 
-:line
 :line
 
 [-echo style] :link(echo)
diff --git a/doc/src/Speed.txt b/doc/src/Speed.txt
index 091657082a..7eac11ffa5 100644
--- a/doc/src/Speed.txt
+++ b/doc/src/Speed.txt
@@ -31,15 +31,18 @@ hardware platforms.
 <!-- RST
 
 .. toctree::
+   :maxdepth: 1
 
    Speed_bench
    Speed_measure
 
 .. toctree::
+   :maxdepth: 1
 
    Speed_tips
 
 .. toctree::
+   :maxdepth: 1
 
    Speed_packages
    Speed_compare
diff --git a/doc/src/Speed_gpu.txt b/doc/src/Speed_gpu.txt
index cd81c03ba0..3ae4639dc2 100644
--- a/doc/src/Speed_gpu.txt
+++ b/doc/src/Speed_gpu.txt
@@ -43,89 +43,22 @@ same functionality can eventually be supported on a variety of GPU
 hardware. :l
 :ule
 
-Here is a quick overview of how to enable and use the GPU package:
-
-build the library in lib/gpu for your GPU hardware with the desired precision settings
-install the GPU package and build LAMMPS as usual
-use the mpirun command to set the number of MPI tasks/node which determines the number of MPI tasks/GPU
-specify the # of GPUs per node
-use GPU styles in your input script :ul
-
-The latter two steps can be done using the "-pk gpu" and "-sf gpu"
-"command-line switches"_Run_options.html respectively.  Or the effect
-of the "-pk" or "-sf" switches can be duplicated by adding the
-"package gpu"_package.html or "suffix gpu"_suffix.html commands
-respectively to your input script.
-
 [Required hardware/software:]
 
 To use this package, you currently need to have an NVIDIA GPU and
 install the NVIDIA CUDA software on your system:
 
-Check if you have an NVIDIA GPU: cat /proc/driver/nvidia/gpus/0/information
-Go to http://www.nvidia.com/object/cuda_get.html
-Install a driver and toolkit appropriate for your system (SDK is not necessary)
-Run lammps/lib/gpu/nvc_get_devices (after building the GPU library, see below) to list supported devices and properties :ul
+Check if you have an NVIDIA GPU: cat
+/proc/driver/nvidia/gpus/0/information Go to
+http://www.nvidia.com/object/cuda_get.html Install a driver and
+toolkit appropriate for your system (SDK is not necessary) Run
+lammps/lib/gpu/nvc_get_devices (after building the GPU library, see
+below) to list supported devices and properties :ul
 
 [Building LAMMPS with the GPU package:]
 
-This requires two steps (a,b): build the GPU library, then build
-LAMMPS with the GPU package.  You can do both these steps in one line
-as described on the "Packages details"_Packages_details.html#GPU doc
-page.
-
-Or you can follow these two (a,b) steps:
-
-(a) Build the GPU library
-
-The GPU library is in lammps/lib/gpu.  Select a Makefile.machine (in
-lib/gpu) appropriate for your system.  You should pay special
-attention to 3 settings in this makefile.
-
-CUDA_HOME = needs to be where NVIDIA CUDA software is installed on your system
-CUDA_ARCH = needs to be appropriate to your GPUs
-CUDA_PREC = precision (double, mixed, single) you desire :ul
-
-See lib/gpu/Makefile.linux.double for examples of the ARCH settings
-for different GPU choices, e.g. Fermi vs Kepler.  It also lists the
-possible precision settings:
-
-CUDA_PREC = -D_SINGLE_SINGLE  # single precision for all calculations
-CUDA_PREC = -D_DOUBLE_DOUBLE  # double precision for all calculations
-CUDA_PREC = -D_SINGLE_DOUBLE  # accumulation of forces, etc, in double :pre
-
-The last setting is the mixed mode referred to above.  Note that your
-GPU must support double precision to use either the 2nd or 3rd of
-these settings.
-
-To build the library, type:
-
-make -f Makefile.machine :pre
-
-If successful, it will produce the files libgpu.a and Makefile.lammps.
-
-The latter file has 3 settings that need to be appropriate for the
-paths and settings for the CUDA system software on your machine.
-Makefile.lammps is a copy of the file specified by the EXTRAMAKE
-setting in Makefile.machine.  You can change EXTRAMAKE or create your
-own Makefile.lammps.machine if needed.
-
-Note that to change the precision of the GPU library, you need to
-re-build the entire library.  Do a "clean" first, e.g. "make -f
-Makefile.linux clean", followed by the make command above.
-
-(b) Build LAMMPS with the GPU package
-
-cd lammps/src
-make yes-gpu
-make machine :pre
-
-No additional compile/link flags are needed in Makefile.machine.
-
-Note that if you change the GPU library precision (discussed above)
-and rebuild the GPU library, then you also need to re-install the GPU
-package and re-build LAMMPS, so that all affected files are
-re-compiled and linked to the new GPU library.
+See the "Build extras"_Build_extras.html#gpu doc page for
+instructions.
 
 [Run with the GPU package from the command line:]
 
diff --git a/doc/src/Speed_intel.txt b/doc/src/Speed_intel.txt
index 2b29ec3b0f..ef876a7d42 100644
--- a/doc/src/Speed_intel.txt
+++ b/doc/src/Speed_intel.txt
@@ -203,16 +203,12 @@ cat /proc/cpuinfo :pre
 
 [Building LAMMPS with the USER-INTEL package:]
 
-NOTE: See the src/USER-INTEL/README file for additional flags that
-might be needed for best performance on Intel server processors
-code-named "Skylake".
-
-The USER-INTEL package must be installed into the source directory:
-
-make yes-user-intel :pre
+See the "Build extras"_Build_extras.html#user-intel doc page for
+instructions.  Some additional details are covered here.
 
-Several example Makefiles for building with the Intel compiler are
-included with LAMMPS in the src/MAKE/OPTIONS/ directory:
+For building with make, several example Makefiles for building with
+the Intel compiler are included with LAMMPS in the src/MAKE/OPTIONS/
+directory:
 
 Makefile.intel_cpu_intelmpi # Intel Compiler, Intel MPI, No Offload
 Makefile.knl                # Intel Compiler, Intel MPI, No Offload
@@ -221,20 +217,16 @@ Makefile.intel_cpu_openpmi  # Intel Compiler, OpenMPI, No Offload
 Makefile.intel_coprocessor  # Intel Compiler, Intel MPI, Offload :pre
 
 Makefile.knl is identical to Makefile.intel_cpu_intelmpi except that
-it explicitly specifies that vectorization should be for Intel
-Xeon Phi x200 processors making it easier to cross-compile. For
-users with recent installations of Intel Parallel Studio, the
-process can be as simple as:
+it explicitly specifies that vectorization should be for Intel Xeon
+Phi x200 processors making it easier to cross-compile. For users with
+recent installations of Intel Parallel Studio, the process can be as
+simple as:
 
 make yes-user-intel
 source /opt/intel/parallel_studio_xe_2016.3.067/psxevars.sh
 # or psxevars.csh for C-shell
 make intel_cpu_intelmpi :pre
 
-Alternatively this can be done as a single command with suitable make
-command invocations, as described on the "Packages
-details"_Packages_details.html#USER-INTEL doc page.
-
 Note that if you build with support for a Phi coprocessor, the same
 binary can be used on nodes with or without coprocessors installed.
 However, if you do not have coprocessors on your system, building
@@ -253,6 +245,10 @@ required for CCFLAGS and "-qoffload" is required for LINKFLAGS. Other
 recommended CCFLAG options for best performance are "-O2 -fno-alias
 -ansi-alias -qoverride-limits fp-model fast=2 -no-prec-div".
 
+NOTE: See the src/USER-INTEL/README file for additional flags that
+might be needed for best performance on Intel server processors
+code-named "Skylake".
+
 NOTE: The vectorization and math capabilities can differ depending on
 the CPU. For Intel compilers, the "-x" flag specifies the type of
 processor for which to optimize. "-xHost" specifies that the compiler
diff --git a/doc/src/Speed_kokkos.txt b/doc/src/Speed_kokkos.txt
index 306bc398af..eb787df5d6 100644
--- a/doc/src/Speed_kokkos.txt
+++ b/doc/src/Speed_kokkos.txt
@@ -37,101 +37,29 @@ task). These are Serial (MPI-only for CPUs and Intel Phi), OpenMP
 GPUs). You choose the mode at build time to produce an executable
 compatible with specific hardware.
 
-[Building LAMMPS with the KOKKOS package:]
-
 NOTE: Kokkos support within LAMMPS must be built with a C++11 compatible
 compiler. This means GCC version 4.7.2 or later, Intel 14.0.4 or later, or
 Clang 3.5.2 or later is required.
 
-The recommended method of building the KOKKOS package is to start with
-the provided Kokkos Makefiles in /src/MAKE/OPTIONS/. You may need to
-modify the KOKKOS_ARCH variable in the Makefile to match your specific
-hardware. For example:
-
-for Sandy Bridge CPUs, set KOKKOS_ARCH=SNB
-for Broadwell CPUs, set KOKKOS_ARCH=BWD
-for K80 GPUs, set KOKKOS_ARCH=Kepler37
-for P100 GPUs and Power8 CPUs, set KOKKOS_ARCH=Pascal60,Power8 :ul
-
-See the [Advanced Kokkos Options] section below for a listing of all
-KOKKOS_ARCH options.
-
-[Compile for CPU-only (MPI only, no threading):]
-
-use a C++11 compatible compiler and set KOKKOS_ARCH variable in
-/src/MAKE/OPTIONS/Makefile.kokkos_mpi_only as described above. Then do the
-following:
-
-cd lammps/src
-make yes-kokkos
-make kokkos_mpi_only :pre
-
-[Compile for CPU-only (MPI plus OpenMP threading):]
-
-NOTE: To build with Kokkos support for OpenMP threading, your compiler
-must support the OpenMP interface. You should have one or more
-multi-core CPUs so that multiple threads can be launched by each MPI
-task running on a CPU.
-
-Use a C++11 compatible compiler and set KOKKOS_ARCH variable in
-/src/MAKE/OPTIONS/Makefile.kokkos_omp as described above.  Then do the
-following:
-
-cd lammps/src
-make yes-kokkos
-make kokkos_omp :pre
-
-[Compile for Intel KNL Xeon Phi (Intel Compiler, OpenMPI):]
-
-use a C++11 compatible compiler and do the following:
-
-cd lammps/src
-make yes-kokkos
-make kokkos_phi :pre
-
-[Compile for CPUs and GPUs (with OpenMPI or MPICH):]
-
 NOTE: To build with Kokkos support for NVIDIA GPUs, NVIDIA CUDA
 software version 7.5 or later must be installed on your system. See
 the discussion for the "GPU package"_Speed_gpu.html for details of how
 to check and do this.
 
 NOTE: Kokkos with CUDA currently implicitly assumes, that the MPI
-library is CUDA-aware and has support for GPU-direct. This is not always
-the case, especially when using pre-compiled MPI libraries provided by
-a Linux distribution. This is not a problem when using only a single
-GPU and a single MPI rank on a desktop. When running with multiple
-MPI ranks, you may see segmentation faults without GPU-direct support.
-These can be avoided by adding the flags
-"-pk kokkos gpu/direct off"_Run_options.html
-to the LAMMPS command line or by using the command
-"package kokkos gpu/direct off"_package.html in the input file.
-
-Use a C++11 compatible compiler and set KOKKOS_ARCH variable in
-/src/MAKE/OPTIONS/Makefile.kokkos_cuda_mpi for both GPU and CPU as
-described above.  Then do the following:
-
-cd lammps/src
-make yes-kokkos
-make kokkos_cuda_mpi :pre
-
-[Alternative Methods of Compiling:]
-
-Alternatively, the KOKKOS package can be built by specifying Kokkos variables
-on the make command line. For example:
-
-make mpi KOKKOS_DEVICES=OpenMP KOKKOS_ARCH=SNB     # set the KOKKOS_DEVICES and KOKKOS_ARCH variable explicitly
-make kokkos_cuda_mpi KOKKOS_ARCH=Pascal60,Power8   # set the KOKKOS_ARCH variable explicitly :pre
-
-Setting the KOKKOS_DEVICES and KOKKOS_ARCH variables on the make
-command line requires a GNU-compatible make command. Try "gmake" if
-your system's standard make complains.
-
-NOTE: If you build using make line variables and re-build LAMMPS twice
-with different KOKKOS options and the *same* target, then you *must*
-perform a "make clean-all" or "make clean-machine" before each
-build. This is to force all the KOKKOS-dependent files to be
-re-compiled with the new options.
+library is CUDA-aware and has support for GPU-direct. This is not
+always the case, especially when using pre-compiled MPI libraries
+provided by a Linux distribution. This is not a problem when using
+only a single GPU and a single MPI rank on a desktop. When running
+with multiple MPI ranks, you may see segmentation faults without
+GPU-direct support.  These can be avoided by adding the flags "-pk
+kokkos gpu/direct off"_Run_options.html to the LAMMPS command line or
+by using the command "package kokkos gpu/direct off"_package.html in
+the input file.
+
+[Building LAMMPS with the KOKKOS package:]
+
+See the "Build extras"_Build_extras.html#kokkos doc page for instructions.
 
 [Running LAMMPS with the KOKKOS package:]
 
@@ -411,50 +339,18 @@ hardware.
 [Advanced Kokkos options:]
 
 There are other allowed options when building with the KOKKOS package.
-As above, they can be set either as variables on the make command line
-or in Makefile.machine. This is the full list of options, including
-those discussed above. Each takes a value shown below. The default
-value is listed, which is set in the /lib/kokkos/Makefile.kokkos file.
+As explained on the "Build extras"_Build_extras.html#kokkos doc page,
+they can be set either as variables on the make command line or in
+Makefile.machine, or they can be specified as CMake variables.  Each
+takes a value shown below.  The default value is listed, which is set
+in the lib/kokkos/Makefile.kokkos file.
 
-KOKKOS_DEVICES, values = {Serial}, {OpenMP}, {Pthreads}, {Cuda}, default = {OpenMP}
-KOKKOS_ARCH, values = {KNC}, {SNB}, {HSW}, {Kepler30}, {Kepler32}, {Kepler35}, {Kepler37}, {Maxwell50}, {Maxwell52}, {Maxwell53}, {Pascal60}, {Pascal61}, {ARMv80}, {ARMv81}, {ARMv81}, {ARMv8-ThunderX}, {BGQ}, {Power7}, {Power8}, {Power9}, {KNL}, {BDW}, {SKX}, default = {none}
 KOKKOS_DEBUG, values = {yes}, {no}, default = {no}
 KOKKOS_USE_TPLS, values = {hwloc}, {librt}, {experimental_memkind}, default = {none}
 KOKKOS_CXX_STANDARD, values = {c++11}, {c++1z}, default = {c++11}
 KOKKOS_OPTIONS, values = {aggressive_vectorization}, {disable_profiling}, default = {none}
 KOKKOS_CUDA_OPTIONS, values = {force_uvm}, {use_ldg}, {rdc}, {enable_lambda}, default = {enable_lambda} :ul
 
-KOKKOS_DEVICES sets the parallelization method used for Kokkos code
-(within LAMMPS). KOKKOS_DEVICES=Serial means that no threading will be used.
-KOKKOS_DEVICES=OpenMP means that OpenMP threading will be
-used. KOKKOS_DEVICES=Pthreads means that pthreads will be used.
-KOKKOS_DEVICES=Cuda means an NVIDIA GPU running CUDA will be used.
-
-KOKKOS_ARCH enables compiler switches needed when compiling for a
-specific hardware:
-
-ARMv80 = ARMv8.0 Compatible CPU
-ARMv81 = ARMv8.1 Compatible CPU
-ARMv8-ThunderX = ARMv8 Cavium ThunderX CPU
-SNB = Intel Sandy/Ivy Bridge CPUs
-HSW = Intel Haswell CPUs
-BDW = Intel Broadwell Xeon E-class CPUs
-SKX = Intel Sky Lake Xeon E-class HPC CPUs (AVX512)
-KNC = Intel Knights Corner Xeon Phi
-KNL = Intel Knights Landing Xeon Phi
-Kepler30 = NVIDIA Kepler generation CC 3.0
-Kepler32 = NVIDIA Kepler generation CC 3.2
-Kepler35 = NVIDIA Kepler generation CC 3.5
-Kepler37 = NVIDIA Kepler generation CC 3.7
-Maxwell50 = NVIDIA Maxwell generation CC 5.0
-Maxwell52 = NVIDIA Maxwell generation CC 5.2
-Maxwell53 = NVIDIA Maxwell generation CC 5.3
-Pascal60 = NVIDIA Pascal generation CC 6.0
-Pascal61 = NVIDIA Pascal generation CC 6.1
-BGQ = IBM Blue Gene/Q CPUs
-Power8 = IBM POWER8 CPUs
-Power9 = IBM POWER9 CPUs :ul
-
 KOKKOS_USE_TPLS=hwloc binds threads to hardware cores, so they do not
 migrate during a simulation. KOKKOS_USE_TPLS=hwloc should always be
 used if running with KOKKOS_DEVICES=Pthreads for pthreads. It is not
diff --git a/doc/src/Speed_omp.txt b/doc/src/Speed_omp.txt
index cd85b06192..0abf54430e 100644
--- a/doc/src/Speed_omp.txt
+++ b/doc/src/Speed_omp.txt
@@ -16,18 +16,6 @@ improper), several Kspace styles, and a few fix styles.  It uses
 the OpenMP interface for multi-threading, but can also be compiled
 without OpenMP support, providing optimized serial styles in that case.
 
-Here is a quick overview of how to use the USER-OMP package, assuming
-one or more 16-core nodes.  More details follow.
-
-make yes-user-omp
-make omp                                   # Makefile.omp already has OpenMP settings for GNU compilers
-make mpi                                   # or build with USER-OMP package without OpenMP :pre
-
-env OMP_NUM_THREADS=16 lmp_omp -sf omp -in in.script           # 1 MPI task, 16 threads according to OMP_NUM_THREADS
-lmp_mpi -sf omp -in in.script                                  # 1 MPI task, no threads, optimized kernels
-mpirun -np 4 lmp_omp -sf omp -pk omp 4 -in in.script           # 4 MPI tasks, 4 threads/task
-mpirun -np 32 -ppn 4 lmp_omp -sf omp -pk omp 4 -in in.script   # 8 nodes, 4 MPI tasks/node, 4 threads/task :pre
-
 [Required hardware/software:]
 
 To enable multi-threading, your compiler must support the OpenMP interface.
@@ -36,18 +24,18 @@ launched by each MPI task on the local node (using shared memory).
 
 [Building LAMMPS with the USER-OMP package:]
 
-The lines above illustrate how to include/build with the USER-OMP
-package in two steps, using the "make" command.  Or how to do it with
-one command as described on the "Packages
-details"_Packages_details.html#USER-OMP doc page.
-
-Note that the CCFLAGS and LINKFLAGS settings in Makefile.machine must
-include "-fopenmp" for the GNU compilers.  If you use an Intel compiler,
-the corresponding flag is "-qopenmp" and the CCFLAGS setting must also
-include "-restrict".
+See the "Build extras"_Build_extras.html#user-omp doc page for
+instructions.
 
 [Run with the USER-OMP package from the command line:]
 
+These example asume one or more 16-core nodes.
+
+env OMP_NUM_THREADS=16 lmp_omp -sf omp -in in.script           # 1 MPI task, 16 threads according to OMP_NUM_THREADS
+lmp_mpi -sf omp -in in.script                                  # 1 MPI task, no threads, optimized kernels
+mpirun -np 4 lmp_omp -sf omp -pk omp 4 -in in.script           # 4 MPI tasks, 4 threads/task
+mpirun -np 32 -ppn 4 lmp_omp -sf omp -pk omp 4 -in in.script   # 8 nodes, 4 MPI tasks/node, 4 threads/task :pre
+
 The mpirun or mpiexec command sets the total number of MPI tasks used
 by LAMMPS (one or multiple per compute node) and the number of MPI
 tasks used per node.  E.g. the mpirun command in MPICH does this via
diff --git a/doc/src/Speed_opt.txt b/doc/src/Speed_opt.txt
index bb0bcd255c..7dd83a84bf 100644
--- a/doc/src/Speed_opt.txt
+++ b/doc/src/Speed_opt.txt
@@ -15,34 +15,21 @@ Technologies).  It contains a handful of pair styles whose compute()
 methods were rewritten in C++ templated form to reduce the overhead
 due to if tests and other conditional code.
 
-Here is a quick overview of how to use the OPT package.  More details
-follow.
-
-make yes-opt
-make mpi                               # build with the OPT package :pre
-
-lmp_mpi -sf opt -in in.script                # run in serial
-mpirun -np 4 lmp_mpi -sf opt -in in.script   # run in parallel :pre
-
 [Required hardware/software:]
 
 None.
 
 [Building LAMMPS with the OPT package:]
 
-The lines above illustrate how to build LAMMPS with the OPT package in
-two steps, using the "make" command.  Or how to do it with one command
-as described on the "Packages details"_Packages_details.html#OPT doc
-page.
-
-Note that if you use an Intel compiler to build with the OPT package,
-the CCFLAGS setting in your Makefile.machine must include "-restrict".
+See the "Build extras"_Build_extras.html#opt doc page for instructions.
 
 [Run with the OPT package from the command line:]
 
-As in the lines above, use the "-sf opt" "command-line
-switch"_Run_options.html, which will automatically append "opt" to
-styles that support it.
+lmp_mpi -sf opt -in in.script                # run in serial
+mpirun -np 4 lmp_mpi -sf opt -in in.script   # run in parallel :pre
+
+Use the "-sf opt" "command-line switch"_Run_options.html, which will
+automatically append "opt" to styles that support it.
 
 [Or run with the OPT package by editing an input script:]
 
diff --git a/doc/src/Tools.txt b/doc/src/Tools.txt
index aa4adb7dc1..8b4e779cbe 100644
--- a/doc/src/Tools.txt
+++ b/doc/src/Tools.txt
@@ -74,7 +74,6 @@ own sub-directories with their own Makefiles and/or README files.
 "vim"_#vim
 "xmgrace"_#xmgrace :ul
 
-:line
 :line
 
 amber2lmp tool :h3,link(amber)
diff --git a/doc/src/compute_chunk_atom.txt b/doc/src/compute_chunk_atom.txt
index 95e6e6c010..e76b51e6ec 100644
--- a/doc/src/compute_chunk_atom.txt
+++ b/doc/src/compute_chunk_atom.txt
@@ -134,7 +134,6 @@ timesteps it specifies, while it accumulates per-chunk averages.
 
 The details are described below.
 
-:line
 :line
 
 The different chunk styles operate as follows.  For each style, how it
@@ -294,7 +293,6 @@ invoke other computes, fixes, or variables when they are evaluated, so
 this is a very general means of generating per-atom quantities to
 treat as a chunk ID.
 
-:line
 :line
 
 Normally, {Nchunk} = the number of chunks, is re-calculated every time
@@ -322,7 +320,6 @@ the same compute chunk/atom compute.  However, the time windows they
 induce for holding {Nchunk} constant must be identical, else an error
 will be generated.
 
-:line
 :line
 
 The various optional keywords operate as follows.  Note that some of
diff --git a/doc/src/dump_modify.txt b/doc/src/dump_modify.txt
index 73107d07f7..98bcbc5e55 100644
--- a/doc/src/dump_modify.txt
+++ b/doc/src/dump_modify.txt
@@ -133,7 +133,6 @@ dump_modify option below is valid for the {atom} style, it is also
 valid for the {atom/mpiio} style, and similarly for the other styles
 which allow for use of MPI-IO.
 
-:line
 :line
 
 These keywords apply to various dump styles, including the "dump
@@ -629,7 +628,6 @@ the coordinate would be if it had not been wrapped back into the
 periodic box.  Note that these coordinates may thus be far outside the
 box size stored with the snapshot.
 
-:line
 :line
 
 These keywords apply only to the "dump image"_dump_image.html and
@@ -894,7 +892,6 @@ frame rate higher than 24 is not recommended, as it will result in
 simply dropping the rendered images. It is more efficient to dump
 images less frequently.
 
-:line
 :line
 
 [Restrictions:] none
diff --git a/doc/src/fix_box_relax.txt b/doc/src/fix_box_relax.txt
index 8e21ec2c74..29ebeaeef3 100644
--- a/doc/src/fix_box_relax.txt
+++ b/doc/src/fix_box_relax.txt
@@ -126,8 +126,6 @@ minimizer from the new adjusted box size/shape, since that creates a
 new objective function valid for the new box size/shape.  Repeat as
 necessary until the box size/shape has reached its new equilibrium.
 
-:line
-:line
 :line
 
 The {couple} keyword allows two or three of the diagonal components of
diff --git a/lib/gpu/Install.py b/lib/gpu/Install.py
index 13d7ad157e..3b12db5091 100644
--- a/lib/gpu/Install.py
+++ b/lib/gpu/Install.py
@@ -26,12 +26,13 @@ optionally copies Makefile.auto to a new Makefile.osuffix
   -h = set CUDA_HOME variable in Makefile.auto to hdir
        hdir = path to NVIDIA Cuda software, e.g. /usr/local/cuda
   -a = set CUDA_ARCH variable in Makefile.auto to arch
-       use arch = 20 for Tesla C2050/C2070 (Fermi) (deprecated as of CUDA 8.0)
+       use arch = 20 for Fermi (C2050/C2070, deprecated as of CUDA 8.0)
                      or GeForce GTX 580 or similar
-       use arch = 30 for Tesla K10 (Kepler)
-       use arch = 35 for Tesla K40 (Kepler) or GeForce GTX Titan or similar
-       use arch = 37 for Tesla dual K80 (Kepler)
-       use arch = 60 for Tesla P100 (Pascal)
+       use arch = 30 for Kepler (K10)
+       use arch = 35 for Kepler (K40) or GeForce GTX Titan or similar
+       use arch = 37 for Kepler (dual K80)
+       use arch = 60 for Pascal (P100)
+       use arch = 70 for Volta
   -p = set CUDA_PRECISION variable in Makefile.auto to precision
        use precision = double or mixed or single
   -e = set EXTRAMAKE variable in Makefile.auto to Makefile.lammps.esuffix
diff --git a/src/KSPACE/fft3d.cpp b/src/KSPACE/fft3d.cpp
index 6da7f197ee..db44feabcc 100644
--- a/src/KSPACE/fft3d.cpp
+++ b/src/KSPACE/fft3d.cpp
@@ -14,7 +14,7 @@
 /* ----------------------------------------------------------------------
    Contributing authors: Jim Shepherd (GA Tech) added SGI SCSL support
                          Axel Kohlmeyer (Temple U) added support for
-                         FFTW3, KISSFFT, Dfti/MKL, and ACML.
+                         FFTW3, KISS FFT, Dfti/MKL, and ACML.
                          Phil Blood (PSC) added single precision FFT.
                          Paul Coffman (IBM) added MPI collectives remap
 ------------------------------------------------------------------------- */
@@ -26,7 +26,7 @@
 #include "fft3d.h"
 #include "remap.h"
 
-#ifdef FFT_KISSFFT
+#ifdef FFT_KISS
 /* include kissfft implementation */
 #include "kissfft.h"
 #endif
diff --git a/src/KSPACE/fft3d.h b/src/KSPACE/fft3d.h
index 9a9caaef26..ab3bca8358 100644
--- a/src/KSPACE/fft3d.h
+++ b/src/KSPACE/fft3d.h
@@ -24,8 +24,8 @@ typedef float FFT_SCALAR;
 typedef double FFT_SCALAR;
 #endif
 
-
 // set default fftw library. switch to FFT_FFTW3 when convenient.
+
 #ifdef FFT_FFTW
 #define FFT_FFTW3
 #endif
@@ -57,8 +57,9 @@ typedef fftwf_complex FFT_DATA;
 #else
 
 /* use a stripped down version of kiss fft as default fft */
-#ifndef FFT_KISSFFT
-#define FFT_KISSFFT
+
+#ifndef FFT_KISS
+#define FFT_KISS
 #endif
 #define kiss_fft_scalar float
 typedef struct {
@@ -97,8 +98,8 @@ typedef fftw_complex FFT_DATA;
 #else
 
 /* use a stripped down version of kiss fft as default fft */
-#ifndef FFT_KISSFFT
-#define FFT_KISSFFT
+#ifndef FFT_KISS
+#define FFT_KISS
 #endif
 #define kiss_fft_scalar double
 typedef struct {
@@ -152,7 +153,7 @@ struct fft_plan_3d {
   FFTW_API(plan) plan_mid_backward;
   FFTW_API(plan) plan_slow_forward;
   FFTW_API(plan) plan_slow_backward;
-#elif defined(FFT_KISSFFT)
+#elif defined(FFT_KISS)
   kiss_fft_cfg cfg_fast_forward;
   kiss_fft_cfg cfg_fast_backward;
   kiss_fft_cfg cfg_mid_forward;
diff --git a/src/KSPACE/kissfft.h b/src/KSPACE/kissfft.h
index 4e15f494a9..c95b648dcb 100644
--- a/src/KSPACE/kissfft.h
+++ b/src/KSPACE/kissfft.h
@@ -13,6 +13,7 @@
 
    changes 2008-2011 by Axel Kohlmeyer <akohlmey@gmail.com>
 */
+
 #ifndef LMP_FFT_KISSFFT
 #define LMP_FFT_KISSFFT
 
diff --git a/src/pack.h b/src/pack.h
index 066535f5c9..837c33d14b 100644
--- a/src/pack.h
+++ b/src/pack.h
@@ -22,9 +22,8 @@ struct pack_plan_3d {
   int nqty;                  // # of values/element
 };
 
-
-#if !defined(PACK_POINTER) && !defined(PACK_MEMCPY)
-#define PACK_ARRAY
+#if !defined(FFT_PACK_POINTER) && !defined(FFT_PACK_MEMCPY)
+#define FFT_PACK_ARRAY
 #endif
 
 #ifndef PACK_DATA
@@ -47,7 +46,7 @@ struct pack_plan_3d {
    pack/unpack with array indices
 ------------------------------------------------------------------------- */
 
-#ifdef PACK_ARRAY
+#ifdef FFT_PACK_ARRAY
 
 /* ----------------------------------------------------------------------
    pack from data -> buf
@@ -274,7 +273,7 @@ static void unpack_3d_permute2_n(PACK_DATA *buf, PACK_DATA *data, struct pack_pl
    pack/unpack with pointers
 ------------------------------------------------------------------------- */
 
-#ifdef PACK_POINTER
+#ifdef FFT_PACK_POINTER
 
 /* ----------------------------------------------------------------------
    pack from data -> buf
@@ -523,7 +522,7 @@ static void unpack_3d_permute2_n(PACK_DATA *buf, PACK_DATA *data, struct pack_pl
      just use PACK_POINTER versions
 ------------------------------------------------------------------------- */
 
-#ifdef PACK_MEMCPY
+#ifdef FFT_PACK_MEMCPY
 
 /* ----------------------------------------------------------------------
    pack from data -> buf
-- 
GitLab


From 63f57bbece04ea87164ec75f3f3f98700e109af2 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Tue, 14 Aug 2018 16:07:04 -0600
Subject: [PATCH 199/243] small tweak on USER-INTEL section

---
 doc/src/Build_extras.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
index 69f65a451f..b55efa02a7 100644
--- a/doc/src/Build_extras.txt
+++ b/doc/src/Build_extras.txt
@@ -685,7 +685,7 @@ intel"_Speed_intel.html doc page.
 
 [CMake build]:
 
--D INTEL_ARCH=value     # value = cpu (default) or knl :pre
+-D INTEL_ARCH=value     # value = cpu (default) or knl
 -D BUILD_OMP=yes        # also required to build with the USER-INTEl package :pre
 
 Requires an Intel compiler as well as the Intel TBB and MKL libraries.
-- 
GitLab


From 9526db44ce641e0308e2685f20485e0439ba6a2b Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Tue, 14 Aug 2018 22:10:08 -0400
Subject: [PATCH 200/243] Fix lammps.book and broken link

---
 doc/src/Manual.txt  | 2 +-
 doc/src/lammps.book | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index 0f0bd8f14e..ad2a41d6bc 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -49,7 +49,7 @@ all LAMMPS development is coordinated.
 
 The content for this manual is part of the LAMMPS distribution.
 You can build a local copy of the Manual as HTML pages or a PDF file,
-by following the steps on the "this page"_Build_manual.html.
+by following the steps on the "this page"_Manual_build.html.
 
 There is also a "Developer.pdf"_Developer.pdf document which gives
 a brief description of the basic code structure of LAMMPS.
diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index 3e04c54d28..66b3217561 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -127,7 +127,7 @@ Errors_common.html
 Errors_bugs.html
 Errors_messages.html
 Errors_warnings.html
-Build_manual.html
+Manual_build.html
 
 lammps_commands.html
 atom_modify.html
-- 
GitLab


From b72048097c830f1a2813c29bf7f4f494d4d951a7 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Tue, 14 Aug 2018 22:17:40 -0400
Subject: [PATCH 201/243] Correct Build_settings.txt

---
 doc/src/Build_settings.txt | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/doc/src/Build_settings.txt b/doc/src/Build_settings.txt
index 45a0827210..6c36420f77 100644
--- a/doc/src/Build_settings.txt
+++ b/doc/src/Build_settings.txt
@@ -212,11 +212,11 @@ following settings:
 
 [CMake variables]:
 
--D LAMMPS_JPEG=value      # yes or no
+-D WITH_JPEG=value      # yes or no
                           # default = yes if CMake finds JPEG files, else no
--D LAMMPS_PNG=value       # yes or no
+-D WITH_PNG=value       # yes or no
                           # default = yes if CMake finds PNG and ZLIB files, else no
--D LAMMPS_FFMPEG=value    # yes or no
+-D WITH_FFMPEG=value    # yes or no
                           # default = yes if CMake can find ffmpeg, else no :pre
 
 Usually these settings are all that is needed.  If CMake cannot find
@@ -267,7 +267,7 @@ gzip compression by several LAMMPS commands, including
 
 [CMake variables]:
 
--D LAMMPS_GZIP=value     # yes or no
+-D WITH_GZIP=value       # yes or no
                          # default is yes if CMake can find gzip, else no
 -D GZIP_EXECUTABLE=path  # path to gzip executable if CMake cannot find it :pre
 
-- 
GitLab


From ad9126f30e767942c15175bd1c780d7fcf4c10f4 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Tue, 14 Aug 2018 22:19:20 -0400
Subject: [PATCH 202/243] Kokkos bugfix for building with cmake

---
 lib/kokkos/cmake/kokkos_settings.cmake | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/kokkos/cmake/kokkos_settings.cmake b/lib/kokkos/cmake/kokkos_settings.cmake
index 21c9d75a96..58b30ba24d 100644
--- a/lib/kokkos/cmake/kokkos_settings.cmake
+++ b/lib/kokkos/cmake/kokkos_settings.cmake
@@ -158,7 +158,7 @@ if (NOT "${KOKKOS_INTERNAL_PATHS}" STREQUAL "")
   set(KOKKOS_SETTINGS ${KOKKOS_SETTINGS} ${KOKKOS_INTERNAL_PATHS})
 endif()
 if (NOT "${KOKKOS_INTERNAL_ADDTOPATH}" STREQUAL "")
-  set(KOKKOS_SETTINGS ${KOKKOS_SETTINGS} "PATH=\"${KOKKOS_INTERNAL_ADDTOPATH}:$ENV{PATH}\"")
+  set(KOKKOS_SETTINGS ${KOKKOS_SETTINGS} "PATH=${KOKKOS_INTERNAL_ADDTOPATH}:$ENV{PATH}")
 endif()
 
 if (CMAKE_CXX_STANDARD)
-- 
GitLab


From 9c3748e07cdde3014530936a7ad7158f57eb69c2 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 15 Aug 2018 07:31:31 -0600
Subject: [PATCH 203/243] change Python.txt to Python_head.txt, adapt GPU
 package syntax

---
 doc/src/Build_basics.txt                |  7 ++++---
 doc/src/Build_extras.txt                | 23 +++++++++++++++++------
 doc/src/Errors.txt                      |  2 +-
 doc/src/Howto_couple.txt                |  6 +++---
 doc/src/Howto_library.txt               |  6 +++---
 doc/src/Intro_nonfeatures.txt           |  4 ++--
 doc/src/Manual.txt                      | 11 ++++++-----
 doc/src/Manual_build.txt                |  2 +-
 doc/src/Modify.txt                      |  2 +-
 doc/src/Packages_details.txt            |  6 +++---
 doc/src/Python_call.txt                 |  4 ++--
 doc/src/Python_examples.txt             |  4 ++--
 doc/src/{Python.txt => Python_head.txt} |  0
 doc/src/Python_install.txt              |  4 ++--
 doc/src/Python_library.txt              |  4 ++--
 doc/src/Python_mpi.txt                  |  4 ++--
 doc/src/Python_pylammps.txt             |  4 ++--
 doc/src/Python_run.txt                  |  4 ++--
 doc/src/Python_shlib.txt                |  4 ++--
 doc/src/Python_test.txt                 |  4 ++--
 doc/src/fix_external.txt                |  2 +-
 doc/src/python.txt                      |  6 +++---
 lib/gpu/Install.py                      | 19 ++++++++++---------
 lib/gpu/Makefile.linux                  |  4 ++--
 24 files changed, 75 insertions(+), 61 deletions(-)
 rename doc/src/{Python.txt => Python_head.txt} (100%)

diff --git a/doc/src/Build_basics.txt b/doc/src/Build_basics.txt
index 79c22d8fe4..425266a35f 100644
--- a/doc/src/Build_basics.txt
+++ b/doc/src/Build_basics.txt
@@ -162,9 +162,10 @@ cmake ../cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_For
 NOTE: When the cmake command completes, it prints info to the screen
 as to which compilers it is using, and what flags will be used in the
 compilation.  Note that if the top-level compiler is mpicxx, it is
-simply a wrapper on a real compiler.  The low-level compiler info is
-also in the Cmake output.  You should check to insure you are using
-the compiler and optimization flags are the ones you want.
+simply a wrapper on a real compiler.  The underlying compiler info is
+what will be listed in the CMake output.  You should check to insure
+you are using the compiler and optimization flags are the ones you
+want.
 
 [Makefile.machine settings]:
 
diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
index b55efa02a7..a3a05ed50e 100644
--- a/doc/src/Build_extras.txt
+++ b/doc/src/Build_extras.txt
@@ -84,12 +84,22 @@ which GPU hardware to build for.
 -D OCL_TUNE=value     # hardware choice for GPU_API=opencl
                       # generic (default) or intel (Intel CPU) or fermi, kepler, cypress (NVIDIA)
 -D GPU_ARCH=value     # hardware choice for GPU_API=cuda
-                      # value = 20 (Fermi) or 30 (Kepler) or 50 (Maxwell) or 60 (Pascal) or 70 (Volta)
-                      # default is Cuda-compiler dependent, but typically Fermi
+                      # value = sm_XX, see below
+                      # default is Cuda-compiler dependent, but typically sm_20
 -D CUDPP_OPT=value    # optimization setting for GPU_API=cudea
                       # enables CUDA Performance Primitives Optimizations
                       # yes (default) or no :pre
 
+GPU_ARCH settings for different GPU hardware is as follows:
+
+sm_20 for Fermi (C2050/C2070, deprecated as of CUDA 8.0) or GeForce GTX 580 or similar
+sm_30 for Kepler (K10)
+sm_35 for Kepler (K40) or GeForce GTX Titan or similar
+sm_37 for Kepler (dual K80)
+sm_50 for Maxwell
+sm_60 for Pascal (P100)
+sm_70 for Volta :ul
+
 [Traditional make]:
 
 Before building LAMMPS, you must build the GPU library in lib/gpu.
@@ -107,18 +117,19 @@ script with the specified args:
 make lib-gpu               # print help message
 make lib-gpu args="-b"     # build GPU library with default Makefile.linux
 make lib-gpu args="-m xk7 -p single -o xk7.single"  # create new Makefile.xk7.single, altered for single-precision
-make lib-gpu args="-m mpi -p mixed -b" # build GPU library with mixed precision using settings in Makefile.mpi :pre
+make lib-gpu args="-m mpi -a sm_60 -p mixed -b" # build GPU library with mixed precision and P100 using other settings in Makefile.mpi :pre
 
 Note that this procedure starts with a Makefile.machine in lib/gpu, as
 specified by the "-m" switch.  For your convenience, machine makefiles
 for "mpi" and "serial" are provided, which have the same settings as
 the corresponding machine makefiles in the main LAMMPS source
 folder. In addition you can alter 4 important settings in the
-Makefile.machine you start from via the -h, -a, -p, -e switches, and
-also save a copy of the new Makefile if desired:
+Makefile.machine you start from via the corresponding -h, -a, -p, -e
+switches (as in the examples above), and also save a copy of the new
+Makefile if desired:
 
 CUDA_HOME = where NVIDIA CUDA software is installed on your system
-CUDA_ARCH = what GPU hardware you have (same as CMake, see help message for details)
+CUDA_ARCH = sm_XX, what GPU hardware you have, same as CMake GPU_ARCH above
 CUDA_PRECISION = precision (double, mixed, single)
 EXTRAMAKE = which Makefile.lammps.* file to copy to Makefile.lammps :ul
 
diff --git a/doc/src/Errors.txt b/doc/src/Errors.txt
index a8d8d3a18e..10f84874a3 100644
--- a/doc/src/Errors.txt
+++ b/doc/src/Errors.txt
@@ -1,4 +1,4 @@
-"Previous Section"_Python.html - "LAMMPS WWW Site"_lws -
+"Previous Section"_Python_head.html - "LAMMPS WWW Site"_lws -
 "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
 Section"_Manual.html :c
 
diff --git a/doc/src/Howto_couple.txt b/doc/src/Howto_couple.txt
index 4c0f72a806..d7b4924d8c 100644
--- a/doc/src/Howto_couple.txt
+++ b/doc/src/Howto_couple.txt
@@ -84,9 +84,9 @@ supports a vanilla C-like interface).  For example, from C++ you could
 create one (or more) "instances" of LAMMPS, pass it an input script to
 process, or execute individual commands, all by invoking the correct
 class methods in LAMMPS.  From C or Fortran you can make function
-calls to do the same things.  See the "Python"_Python.html doc pages
-for a description of the Python wrapper provided with LAMMPS that
-operates through the LAMMPS library interface.
+calls to do the same things.  See the "Python"_Python_head.html doc
+pages for a description of the Python wrapper provided with LAMMPS
+that operates through the LAMMPS library interface.
 
 The files src/library.cpp and library.h contain the C-style interface
 to LAMMPS.  See the "Howto library"_Howto_library.html doc page for a
diff --git a/doc/src/Howto_library.txt b/doc/src/Howto_library.txt
index 8e99182f87..741078e7eb 100644
--- a/doc/src/Howto_library.txt
+++ b/doc/src/Howto_library.txt
@@ -12,7 +12,7 @@ Library interface to LAMMPS :h3
 As described on the "Build basics"_Build_basics.html doc page, LAMMPS
 can be built as a library, so that it can be called by another code,
 used in a "coupled manner"_Howto_couple.html with other codes, or
-driven through a "Python interface"_Python.html.
+driven through a "Python interface"_Python_head.html.
 
 All of these methodologies use a C-style interface to LAMMPS that is
 provided in the files src/library.cpp and src/library.h.  The
@@ -35,8 +35,8 @@ details.
 
 NOTE: You can write code for additional functions as needed to define
 how your code talks to LAMMPS and add them to src/library.cpp and
-src/library.h, as well as to the "Python interface"_Python.html.  The
-added functions can access or change any internal LAMMPS data you
+src/library.h, as well as to the "Python interface"_Python_head.html.
+The added functions can access or change any internal LAMMPS data you
 wish.
 
 void lammps_open(int, char **, MPI_Comm, void **)
diff --git a/doc/src/Intro_nonfeatures.txt b/doc/src/Intro_nonfeatures.txt
index 41f001fc8b..87ab42e2ac 100644
--- a/doc/src/Intro_nonfeatures.txt
+++ b/doc/src/Intro_nonfeatures.txt
@@ -28,7 +28,7 @@ GUI: LAMMPS can be built as a library and a Python wrapper that wraps
 the library interface is provided.  Thus, GUI interfaces can be
 written in Python (or C or C++ if desired) that run LAMMPS and
 visualize or plot its output.  Examples of this are provided in the
-python directory and described on the "Python"_Python.html doc
+python directory and described on the "Python"_Python_head.html doc
 page. :ulb,l
 
 Builder: Several pre-processing tools are packaged with LAMMPS.  Some
@@ -68,7 +68,7 @@ page"_http://lammps.sandia.gov/viz.html page of the LAMMPS website for
 visualization packages that can use LAMMPS output data. :l
 
 Plotting: See the next bullet about Pizza.py as well as the
-"Python"_Python.html doc page for examples of plotting LAMMPS output.
+"Python"_Python_head.html doc page for examples of plotting LAMMPS output.
 Scripts provided with the {python} tool in the tools directory will
 extract and massage data in log and dump files to make it easier to
 analyze and plot.  See the "Tools"_Tools.html doc page for more
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index ad2a41d6bc..ca30f32311 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -47,9 +47,9 @@ all LAMMPS development is coordinated.
 "PDF file"_Manual.pdf of the entire manual, generated by
 "htmldoc"_http://freecode.com/projects/htmldoc
 
-The content for this manual is part of the LAMMPS distribution.
-You can build a local copy of the Manual as HTML pages or a PDF file,
-by following the steps on the "this page"_Manual_build.html.
+The content for this manual is part of the LAMMPS distribution.  You
+can build a local copy of the Manual as HTML pages or a PDF file, by
+following the steps on the "Manual build"_Manual_build.html doc page.
 
 There is also a "Developer.pdf"_Developer.pdf document which gives
 a brief description of the basic code structure of LAMMPS.
@@ -82,7 +82,7 @@ every LAMMPS command.
    Examples
    Tools
    Modify
-   Python
+   Python_head
    Errors
    Manual_build
 
@@ -120,8 +120,9 @@ END_RST -->
 "Example scripts"_Examples.html :l
 "Auxiliary tools"_Tools.html :l
 "Modify & extend LAMMPS"_Modify.html :l
-"Use Python with LAMMPS"_Python.html :l
+"Use Python with LAMMPS"_Python_head.html :l
 "Errors"_Errors.html :l
+"Building the LAMMPS manual"_Manual_build.html :l
 :ole
 
 <!-- END_HTML_ONLY -->
diff --git a/doc/src/Manual_build.txt b/doc/src/Manual_build.txt
index 2be4b98960..747a55a729 100644
--- a/doc/src/Manual_build.txt
+++ b/doc/src/Manual_build.txt
@@ -8,7 +8,7 @@ Section"_Manual.html :c
 
 :line
 
-Building the LAMMPS Manual :h2
+Building the LAMMPS manual :h2
 
 Depending on how you obtained LAMMPS, the doc directory has 
 2 or 3 sub-directories and optionally 2 PDF files and an ePUB file:
diff --git a/doc/src/Modify.txt b/doc/src/Modify.txt
index 6189b9ba3e..666aaba8a7 100644
--- a/doc/src/Modify.txt
+++ b/doc/src/Modify.txt
@@ -1,6 +1,6 @@
 "Previous Section"_Tools.html - "LAMMPS WWW Site"_lws -
 "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Python.html :c
+Section"_Python_head.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt
index ff0ce7844c..5ab85a80c8 100644
--- a/doc/src/Packages_details.txt
+++ b/doc/src/Packages_details.txt
@@ -763,8 +763,8 @@ A "python"_python.html command which allow you to execute Python code
 from a LAMMPS input script.  The code can be in a separate file or
 embedded in the input script itself.  See the "Python
 call"_Python_call.html doc page for an overview of using Python from
-LAMMPS in this manner and all the "Python"_Python.html doc pages for
-other ways to use LAMMPS and Python together.
+LAMMPS in this manner and all the "Python"_Python_head.html doc pages
+for other ways to use LAMMPS and Python together.
 
 NOTE: Building with the PYTHON package assumes you have a Python
 shared library available on your system, which needs to be a Python 2
@@ -780,7 +780,7 @@ extras"_Build_extras.html doc page.
 [Supporting info:]
 
 src/PYTHON: filenames -> commands
-"Python call"_Python.html
+"Python call"_Python_head.html
 lib/python/README
 examples/python :ul
 
diff --git a/doc/src/Python_call.txt b/doc/src/Python_call.txt
index 621f1fe241..029c8f831c 100644
--- a/doc/src/Python_call.txt
+++ b/doc/src/Python_call.txt
@@ -1,5 +1,5 @@
-"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
-Documentation"_ld - "LAMMPS Commands"_lc :c
+"Higher level section"_Python_head.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Python_examples.txt b/doc/src/Python_examples.txt
index 46e5fee2b9..f4b2197464 100644
--- a/doc/src/Python_examples.txt
+++ b/doc/src/Python_examples.txt
@@ -1,5 +1,5 @@
-"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
-Documentation"_ld - "LAMMPS Commands"_lc :c
+"Higher level section"_Python_head.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Python.txt b/doc/src/Python_head.txt
similarity index 100%
rename from doc/src/Python.txt
rename to doc/src/Python_head.txt
diff --git a/doc/src/Python_install.txt b/doc/src/Python_install.txt
index 85cf267de0..97f6bf3c3a 100644
--- a/doc/src/Python_install.txt
+++ b/doc/src/Python_install.txt
@@ -1,5 +1,5 @@
-"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
-Documentation"_ld - "LAMMPS Commands"_lc :c
+"Higher level section"_Python_head.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Python_library.txt b/doc/src/Python_library.txt
index 8d0c724a45..9a3ea93fc3 100644
--- a/doc/src/Python_library.txt
+++ b/doc/src/Python_library.txt
@@ -1,5 +1,5 @@
-"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
-Documentation"_ld - "LAMMPS Commands"_lc :c
+"Higher level section"_Python_head.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Python_mpi.txt b/doc/src/Python_mpi.txt
index 6e0a2ce319..96c42e0d0f 100644
--- a/doc/src/Python_mpi.txt
+++ b/doc/src/Python_mpi.txt
@@ -1,5 +1,5 @@
-"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
-Documentation"_ld - "LAMMPS Commands"_lc :c
+"Higher level section"_Python_head.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Python_pylammps.txt b/doc/src/Python_pylammps.txt
index d7baa93e2e..303ac21a27 100644
--- a/doc/src/Python_pylammps.txt
+++ b/doc/src/Python_pylammps.txt
@@ -1,5 +1,5 @@
-"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
-Documentation"_ld - "LAMMPS Commands"_lc :c
+"Higher level section"_Python_head.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Python_run.txt b/doc/src/Python_run.txt
index a94dc07f2d..963248efce 100644
--- a/doc/src/Python_run.txt
+++ b/doc/src/Python_run.txt
@@ -1,5 +1,5 @@
-"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
-Documentation"_ld - "LAMMPS Commands"_lc :c
+"Higher level section"_Python_head.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Python_shlib.txt b/doc/src/Python_shlib.txt
index 206f56688c..91c90d9a8f 100644
--- a/doc/src/Python_shlib.txt
+++ b/doc/src/Python_shlib.txt
@@ -1,5 +1,5 @@
-"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
-Documentation"_ld - "LAMMPS Commands"_lc :c
+"Higher level section"_Python_head.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Python_test.txt b/doc/src/Python_test.txt
index 3d52485aa8..2bfec91bd6 100644
--- a/doc/src/Python_test.txt
+++ b/doc/src/Python_test.txt
@@ -1,5 +1,5 @@
-"Higher level section"_Python.html - "LAMMPS WWW Site"_lws - "LAMMPS
-Documentation"_ld - "LAMMPS Commands"_lc :c
+"Higher level section"_Python_head.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/fix_external.txt b/doc/src/fix_external.txt
index 1dec226414..dd7f7914e9 100644
--- a/doc/src/fix_external.txt
+++ b/doc/src/fix_external.txt
@@ -34,7 +34,7 @@ This fix allows external programs that are running LAMMPS through its
 "library interface"_Howto_library.html to modify certain LAMMPS
 properties on specific timesteps, similar to the way other fixes do.
 The external driver can be a "C/C++ or Fortran
-program"_Howto_library.html or a "Python script"_Python.html.
+program"_Howto_library.html or a "Python script"_Python_head.html.
 
 :line
 
diff --git a/doc/src/python.txt b/doc/src/python.txt
index 0c0a203ccd..54d18d2f60 100644
--- a/doc/src/python.txt
+++ b/doc/src/python.txt
@@ -100,7 +100,7 @@ be passed to various commands as arguments, so that the variable is
 evaluated during a simulation run.
 
 A broader overview of how Python can be used with LAMMPS is given on
-the "Python"_Python.html doc page.  There is an examples/python
+the "Python"_Python_head.html doc page.  There is an examples/python
 directory which illustrates use of the python command.
 
 :line
@@ -483,8 +483,8 @@ building LAMMPS.  LAMMPS must also be built as a shared library and
 your Python function must be able to to load the Python module in
 python/lammps.py that wraps the LAMMPS library interface.  These are
 the same steps required to use Python by itself to wrap LAMMPS.
-Details on these steps are explained on the "Python"_Python.html doc
-page.  Note that it is important that the stand-alone LAMMPS
+Details on these steps are explained on the "Python"_Python_head.html
+doc page.  Note that it is important that the stand-alone LAMMPS
 executable and the LAMMPS shared library be consistent (built from the
 same source code files) in order for this to work.  If the two have
 been built at different times using different source files, problems
diff --git a/lib/gpu/Install.py b/lib/gpu/Install.py
index 3b12db5091..d1024c0085 100644
--- a/lib/gpu/Install.py
+++ b/lib/gpu/Install.py
@@ -23,16 +23,17 @@ optionally copies Makefile.auto to a new Makefile.osuffix
 
   -m = use Makefile.machine as starting point, copy to Makefile.auto
        default machine = linux
+       default for -h, -a, -p, -e settings are those in -m Makefile
   -h = set CUDA_HOME variable in Makefile.auto to hdir
        hdir = path to NVIDIA Cuda software, e.g. /usr/local/cuda
   -a = set CUDA_ARCH variable in Makefile.auto to arch
-       use arch = 20 for Fermi (C2050/C2070, deprecated as of CUDA 8.0)
-                     or GeForce GTX 580 or similar
-       use arch = 30 for Kepler (K10)
-       use arch = 35 for Kepler (K40) or GeForce GTX Titan or similar
-       use arch = 37 for Kepler (dual K80)
-       use arch = 60 for Pascal (P100)
-       use arch = 70 for Volta
+       use arch = sm_20 for Fermi (C2050/C2070, deprecated as of CUDA 8.0)
+                        or GeForce GTX 580 or similar
+       use arch = sm_30 for Kepler (K10)
+       use arch = sm_35 for Kepler (K40) or GeForce GTX Titan or similar
+       use arch = sm_37 for Kepler (dual K80)
+       use arch = sm_60 for Pascal (P100)
+       use arch = sm_70 for Volta
   -p = set CUDA_PRECISION variable in Makefile.auto to precision
        use precision = double or mixed or single
   -e = set EXTRAMAKE variable in Makefile.auto to Makefile.lammps.esuffix
@@ -47,7 +48,7 @@ Examples:
 
 make lib-gpu args="-b"      # build GPU lib with default Makefile.linux
 make lib-gpu args="-m xk7 -p single -o xk7.single"      # create new Makefile.xk7.single, altered for single-precision
-make lib-gpu args="-m mpi -a 35 -p single -o mpi.mixed -b" # create new Makefile.mpi.mixed, also build GPU lib with these settings
+make lib-gpu args="-m mpi -a sm_35 -p single -o mpi.mixed -b" # create new Makefile.mpi.mixed, also build GPU lib with these settings
 """
 
 # print error message or help
@@ -128,7 +129,7 @@ for line in lines:
   if hflag and words[0] == "CUDA_HOME" and words[1] == '=':
     line = line.replace(words[2],hdir)
   if aflag and words[0] == "CUDA_ARCH" and words[1] == '=':
-    line = line.replace(words[2],"-arch=sm_%s" % arch)
+    line = line.replace(words[2],"-arch=%s" % arch)
   if pflag and words[0] == "CUDA_PRECISION" and words[1] == '=':
     line = line.replace(words[2],precstr)
   if eflag and words[0] == "EXTRAMAKE" and words[1] == '=':
diff --git a/lib/gpu/Makefile.linux b/lib/gpu/Makefile.linux
index ed5b6092d3..9580bfd4ae 100644
--- a/lib/gpu/Makefile.linux
+++ b/lib/gpu/Makefile.linux
@@ -13,8 +13,8 @@ endif
 
 NVCC = nvcc
 
-# Tesla CUDA
-CUDA_ARCH = -arch=sm_21
+# older CUDA
+#CUDA_ARCH = -arch=sm_21
 # newer CUDA
 #CUDA_ARCH = -arch=sm_13
 # older CUDA
-- 
GitLab


From 1f65150e16039e149881f0f5e09586e873f5d3e0 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 15 Aug 2018 07:34:20 -0600
Subject: [PATCH 204/243] 60 -> sm_60 for GPU_ARCH

---
 cmake/CMakeLists.txt | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 1bd9eb22b1..2ee5d9e6d6 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -834,7 +834,7 @@ if(PKG_GPU)
       endif()
       option(CUDPP_OPT "Enable CUDPP_OPT" ON)
 
-      set(GPU_ARCH "30" CACHE STRING "LAMMPS GPU CUDA SM architecture (e.g. 60)")
+      set(GPU_ARCH "sm_30" CACHE STRING "LAMMPS GPU CUDA SM architecture (e.g. sm_60)")
 
       file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/*.cu)
       list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu)
@@ -848,10 +848,10 @@ if(PKG_GPU)
       endif()
 
       cuda_compile_cubin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS
-                   -DUNIX -O3 -Xptxas -v --use_fast_math -DNV_KERNEL -DUCL_CUDADR -arch=sm_${GPU_ARCH} -D_${GPU_PREC_SETTING})
+                   -DUNIX -O3 -Xptxas -v --use_fast_math -DNV_KERNEL -DUCL_CUDADR -arch=${GPU_ARCH} -D_${GPU_PREC_SETTING})
 
       cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS $<$<BOOL:${BUILD_SHARED_LIBS}>:-Xcompiler=-fPIC>
-                   -DUNIX -O3 -Xptxas -v --use_fast_math -DUCL_CUDADR -arch=sm_${GPU_ARCH} -D_${GPU_PREC_SETTING})
+                   -DUNIX -O3 -Xptxas -v --use_fast_math -DUCL_CUDADR -arch=${GPU_ARCH} -D_${GPU_PREC_SETTING})
 
       foreach(CU_OBJ ${GPU_GEN_OBJS})
         get_filename_component(CU_NAME ${CU_OBJ} NAME_WE)
@@ -1160,7 +1160,7 @@ endif()
 if(PKG_GPU)
   message(STATUS "GPU Api: ${GPU_API}")
   if(GPU_API_DEFINE STREQUAL "CUDA")
-    message(STATUS "GPU Arch: sm_${GPU_ARCH}")
+    message(STATUS "GPU Arch: ${GPU_ARCH}")
   elseif(GPU_API_DEFINE STREQUAL "OPENCL")
     message(STATUS "OCL Tune: ${OCL_TUNE}")
   endif()
-- 
GitLab


From 6c904102600abb5c708b7a3351b31e95741e078c Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 15 Aug 2018 07:44:36 -0600
Subject: [PATCH 205/243] one more file I forgot to commit

---
 doc/src/Intro_nonfeatures.txt | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/doc/src/Intro_nonfeatures.txt b/doc/src/Intro_nonfeatures.txt
index 87ab42e2ac..f7ca6b307e 100644
--- a/doc/src/Intro_nonfeatures.txt
+++ b/doc/src/Intro_nonfeatures.txt
@@ -68,11 +68,11 @@ page"_http://lammps.sandia.gov/viz.html page of the LAMMPS website for
 visualization packages that can use LAMMPS output data. :l
 
 Plotting: See the next bullet about Pizza.py as well as the
-"Python"_Python_head.html doc page for examples of plotting LAMMPS output.
-Scripts provided with the {python} tool in the tools directory will
-extract and massage data in log and dump files to make it easier to
-analyze and plot.  See the "Tools"_Tools.html doc page for more
-discussion of the various tools. :l
+"Python"_Python_head.html doc page for examples of plotting LAMMPS
+output.  Scripts provided with the {python} tool in the tools
+directory will extract and massage data in log and dump files to make
+it easier to analyze and plot.  See the "Tools"_Tools.html doc page
+for more discussion of the various tools. :l
 
 Pizza.py: Our group has also written a separate toolkit called
 "Pizza.py"_http://pizza.sandia.gov which can do certain kinds of
-- 
GitLab


From 6eededb190eda084fc24dea5e70763631e201cab Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 15 Aug 2018 07:45:52 -0600
Subject: [PATCH 206/243] one more tweak

---
 doc/src/Intro_nonfeatures.txt | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/src/Intro_nonfeatures.txt b/doc/src/Intro_nonfeatures.txt
index f7ca6b307e..2acf6db71f 100644
--- a/doc/src/Intro_nonfeatures.txt
+++ b/doc/src/Intro_nonfeatures.txt
@@ -55,9 +55,9 @@ info on how to add your own analysis code or algorithms to LAMMPS.
 For post-processing, LAMMPS output such as "dump file
 snapshots"_dump.html can be converted into formats used by other MD or
 post-processing codes.  Some post-processing tools packaged with
-LAMMPS will do these conversions.  Scripts provided with the {python}
-tool in the tools directory can extract and massage data in dump files
-to make it easier to import into other programs.  See the
+LAMMPS will do these conversions.  Scripts provided in the
+tools/python directory can extract and massage data in dump files to
+make it easier to import into other programs.  See the
 "Tools"_Tools.html doc page for details on these various options. :l
 
 Visualization: LAMMPS can produce JPG or PNG snapshot images
-- 
GitLab


From 1823fc2bd183f661ec11fb394fdd38758848d204 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 15 Aug 2018 07:50:10 -0600
Subject: [PATCH 207/243] commands.txt -> commands_list.txt to avoid conflict
 with Commands.txt

---
 doc/src/Manual.txt                          | 2 +-
 doc/src/{commands.txt => commands_list.txt} | 0
 2 files changed, 1 insertion(+), 1 deletion(-)
 rename doc/src/{commands.txt => commands_list.txt} (100%)

diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index ca30f32311..c4dbf0415e 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -91,7 +91,7 @@ every LAMMPS command.
    :name: index
    :hidden:
 
-   commands
+   commands_list
    fixes
    computes
    pairs
diff --git a/doc/src/commands.txt b/doc/src/commands_list.txt
similarity index 100%
rename from doc/src/commands.txt
rename to doc/src/commands_list.txt
-- 
GitLab


From 95bfc3b536aa019b8f22d44c850da0080e73ac4a Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 15 Aug 2018 07:54:17 -0600
Subject: [PATCH 208/243] one more entry to lammps.book

---
 doc/src/lammps.book | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index 66b3217561..c961004f83 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -111,7 +111,7 @@ Modify_region.html
 Modify_body.html
 Modify_thermo.html
 Modify_variable.html
-Python.html
+Python_head.html
 Python_overview.html
 Python_run.html
 Python_shlib.html
-- 
GitLab


From 60c9477e964c68fe012817f9db53223379871d15 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 15 Aug 2018 10:50:51 -0400
Subject: [PATCH 209/243] Add option validation and remove extra variables in
 CMakeLists.txt

---
 cmake/CMakeLists.txt | 89 +++++++++++++++++++++++++++++++-------------
 1 file changed, 64 insertions(+), 25 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 2ee5d9e6d6..b75c029a51 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -17,6 +17,32 @@ file(GLOB LIB_SOURCES ${LAMMPS_SOURCE_DIR}/*.cpp)
 file(GLOB LMP_SOURCES ${LAMMPS_SOURCE_DIR}/main.cpp)
 list(REMOVE_ITEM LIB_SOURCES ${LMP_SOURCES})
 
+# Utility functions
+function(list_to_bulletpoints result)
+    list(REMOVE_AT ARGV 0)
+    set(temp "")
+    foreach(item ${ARGV})
+        set(temp "${temp}* ${item}\n")
+    endforeach()
+    set(${result} "${temp}" PARENT_SCOPE)
+endfunction(list_to_bulletpoints)
+
+function(validate_option name values)
+    string(TOLOWER ${${name}} needle_lower)
+    string(TOUPPER ${${name}} needle_upper)
+    list(FIND ${values} ${needle_lower} IDX_LOWER)
+    list(FIND ${values} ${needle_upper} IDX_UPPER)
+    if(${IDX_LOWER} LESS 0 AND ${IDX_UPPER} LESS 0)
+        list_to_bulletpoints(POSSIBLE_VALUE_LIST ${${values}})
+        message(FATAL_ERROR "\n########################################################################\n"
+                            "Invalid value '${${name}}' for option '${name}'\n"
+                            "\n"
+                            "Possible values are:\n"
+                            "${POSSIBLE_VALUE_LIST}"
+                            "########################################################################")
+    endif()
+endfunction(validate_option)
+
 # Cmake modules/macros are in a subdirectory to keep this file cleaner
 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Modules)
 
@@ -131,11 +157,14 @@ else()
   list(APPEND LAMMPS_LINK_LIBS mpi_stubs)
 endif()
 
+
 set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS size limit")
-set_property(CACHE LAMMPS_SIZES PROPERTY STRINGS smallbig bigbig smallsmall)
-string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES_DEFINE)
-add_definitions(-DLAMMPS_${LAMMPS_SIZES_DEFINE})
-set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -DLAMMPS_${LAMMPS_SIZES_DEFINE}")
+set(LAMMPS_SIZES_VALUES smallbig bigbig smallsmall)
+set_property(CACHE LAMMPS_SIZES PROPERTY STRINGS ${LAMMPS_SIZES_VALUES})
+validate_option(LAMMPS_SIZES LAMMPS_SIZES_VALUES)
+string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES)
+add_definitions(-DLAMMPS_${LAMMPS_SIZES})
+set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -DLAMMPS_${LAMMPS_SIZES}")
 
 # posix_memalign is not available on Windows
 if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
@@ -219,7 +248,9 @@ if(PKG_KSPACE)
   else()
     set(FFT "KISS" CACHE STRING "FFT library for KSPACE package")
   endif()
-  set_property(CACHE FFT PROPERTY STRINGS KISS ${FFTW} MKL)
+  set(FFT_VALUES KISS ${FFTW} MKL)
+  set_property(CACHE FFT PROPERTY STRINGS ${FFT_VALUES})
+  validate_option(FFT FFT_VALUES)
   if(NOT FFT STREQUAL "KISS")
     find_package(${FFT} REQUIRED)
     if(NOT FFT STREQUAL "FFTW3F")
@@ -233,10 +264,12 @@ if(PKG_KSPACE)
     add_definitions(-DFFT_KISS)
   endif()
   set(FFT_PACK "array" CACHE STRING "Optimization for FFT")
-  set_property(CACHE FFT_PACK PROPERTY STRINGS array pointer memcpy)
+  set(FFT_PACK_VALUES array pointer memcpy)
+  set_property(CACHE FFT_PACK PROPERTY STRINGS ${FFT_PACK_VALUES})
+  validate_option(FFT_PACK FFT_PACK_VALUES)
   if(NOT FFT_PACK STREQUAL "array")
-    string(TOUPPER ${FFT_PACK} FFT_PACK_DEFINE)
-    add_definitions(-DFFT_PACK_${FFT_PACK_DEFINE})
+    string(TOUPPER ${FFT_PACK} FFT_PACK)
+    add_definitions(-DFFT_PACK_${FFT_PACK})
   endif()
 endif()
 
@@ -747,9 +780,9 @@ if(PKG_USER-INTEL)
     endif()
 
     set(INTEL_ARCH "cpu" CACHE STRING "Architectures used by USER-INTEL (cpu or knl)")
-    set_property(CACHE INTEL_ARCH PROPERTY STRINGS cpu knl)
-
-
+    set(INTEL_ARCH_VALUES cpu knl)
+    set_property(CACHE INTEL_ARCH PROPERTY STRINGS ${INTEL_ARCH_VALUES})
+    validate_option(INTEL_ARCH INTEL_ARCH_VALUES)
 
     if(INTEL_ARCH STREQUAL "knl")
       set(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} -xHost -qopenmp -qoffload")
@@ -808,25 +841,29 @@ if(PKG_GPU)
                     ${GPU_SOURCES_DIR}/fix_gpu.cpp)
 
     set(GPU_API "opencl" CACHE STRING "API used by GPU package")
-    set_property(CACHE GPU_API PROPERTY STRINGS opencl cuda)
-    string(TOUPPER ${GPU_API} GPU_API_DEFINE)
+    set(GPU_API_VALUES opencl cuda)
+    set_property(CACHE GPU_API PROPERTY STRINGS ${GPU_API_VALUES})
+    validate_option(GPU_API GPU_API_VALUES)
+    string(TOUPPER ${GPU_API} GPU_API)
 
     set(GPU_PREC "mixed" CACHE STRING "LAMMPS GPU precision")
-    set_property(CACHE GPU_PREC PROPERTY STRINGS double mixed single)
-    string(TOUPPER ${GPU_PREC} GPU_PREC_DEFINE)
+    set(GPU_PREC_VALUES double mixed single)
+    set_property(CACHE GPU_PREC PROPERTY STRINGS ${GPU_PREC_VALUES})
+    validate_option(GPU_PREC GPU_PREC_VALUES)
+    string(TOUPPER ${GPU_PREC} GPU_PREC)
 
-    if(GPU_PREC_DEFINE STREQUAL "DOUBLE")
+    if(GPU_PREC STREQUAL "DOUBLE")
       set(GPU_PREC_SETTING "DOUBLE_DOUBLE")
-    elseif(GPU_PREC_DEFINE STREQUAL "MIXED")
+    elseif(GPU_PREC STREQUAL "MIXED")
       set(GPU_PREC_SETTING "SINGLE_DOUBLE")
-    elseif(GPU_PREC_DEFINE STREQUAL "SINGLE")
+    elseif(GPU_PREC STREQUAL "SINGLE")
       set(GPU_PREC_SETTING "SINGLE_SINGLE")
     endif()
 
     file(GLOB GPU_LIB_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/*.cpp)
     file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu)
 
-    if(GPU_API_DEFINE STREQUAL "CUDA")
+    if(GPU_API STREQUAL "CUDA")
       find_package(CUDA REQUIRED)
       find_program(BIN2C bin2c)
       if(NOT BIN2C)
@@ -882,11 +919,13 @@ if(PKG_GPU)
       target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS})
 
 
-    elseif(GPU_API_DEFINE STREQUAL "OPENCL")
+    elseif(GPU_API STREQUAL "OPENCL")
       find_package(OpenCL REQUIRED)
       set(OCL_TUNE "generic" CACHE STRING "OpenCL Device Tuning")
-      set_property(CACHE OCL_TUNE PROPERTY STRINGS intel fermi kepler cypress generic)
-      string(TOUPPER ${OCL_TUNE} OCL_TUNE_DEFINE)
+      set(OCL_TUNE_VALUES intel fermi kepler cypress generic)
+      set_property(CACHE OCL_TUNE PROPERTY STRINGS ${OCL_TUNE_VALUES})
+      validate_option(OCL_TUNE OCL_TUNE_VALUES)
+      string(TOUPPER ${OCL_TUNE} OCL_TUNE)
 
       include(OpenCLUtils)
       set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h)
@@ -908,7 +947,7 @@ if(PKG_GPU)
       add_library(gpu STATIC ${GPU_LIB_SOURCES})
       target_link_libraries(gpu ${OpenCL_LIBRARIES})
       target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu ${OpenCL_INCLUDE_DIRS})
-      target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE_DEFINE}_OCL -DMPI_GERYON -DUCL_NO_EXIT)
+      target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT)
       target_compile_definitions(gpu PRIVATE -DUSE_OPENCL)
 
       list(APPEND LAMMPS_LINK_LIBS gpu)
@@ -1159,9 +1198,9 @@ if(BUILD_MPI)
 endif()
 if(PKG_GPU)
   message(STATUS "GPU Api: ${GPU_API}")
-  if(GPU_API_DEFINE STREQUAL "CUDA")
+  if(GPU_API STREQUAL "CUDA")
     message(STATUS "GPU Arch: ${GPU_ARCH}")
-  elseif(GPU_API_DEFINE STREQUAL "OPENCL")
+  elseif(GPU_API STREQUAL "OPENCL")
     message(STATUS "OCL Tune: ${OCL_TUNE}")
   endif()
   message(STATUS "GPU Precision: ${GPU_PREC}")
-- 
GitLab


From 3bb8fefb121c8e8abbb3cd41e80218722cfde880 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 15 Aug 2018 10:57:45 -0400
Subject: [PATCH 210/243] Little tweak to error message

---
 cmake/CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index b75c029a51..8d2038aea8 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -35,7 +35,7 @@ function(validate_option name values)
     if(${IDX_LOWER} LESS 0 AND ${IDX_UPPER} LESS 0)
         list_to_bulletpoints(POSSIBLE_VALUE_LIST ${${values}})
         message(FATAL_ERROR "\n########################################################################\n"
-                            "Invalid value '${${name}}' for option '${name}'\n"
+                            "Invalid value '${${name}}' for option ${name}\n"
                             "\n"
                             "Possible values are:\n"
                             "${POSSIBLE_VALUE_LIST}"
-- 
GitLab


From 1776ade72e216389915536295a296aab6f95530e Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 15 Aug 2018 11:23:02 -0400
Subject: [PATCH 211/243] Update CMake README.md

---
 cmake/README.md | 120 +++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 99 insertions(+), 21 deletions(-)

diff --git a/cmake/README.md b/cmake/README.md
index b6644ffda9..a401d5296e 100644
--- a/cmake/README.md
+++ b/cmake/README.md
@@ -62,7 +62,7 @@ should get you started.
 git clone https://github.com/lammps/lammps.git
 mkdir lammps/build
 cd lammps/build
-cmake ../cmake [-DOPTION_A=VALUE_A -DOPTION_B=VALUE_B ...]
+cmake [-D OPTION_A=VALUE_A -D OPTION_B=VALUE_B ...] ../cmake
 make
 ```
 
@@ -174,7 +174,7 @@ presets can be found in the `cmake/presets` folder.
 # build LAMMPS with all "standard" packages which don't use libraries and enable GPU package
 mkdir build
 cd build
-cmake -C ../cmake/presets/std_nolib.cmake ../cmake -DPKG_GPU=on
+cmake -C ../cmake/presets/std_nolib.cmake -D PKG_GPU=on ../cmake
 ```
 
 # Reference
@@ -265,6 +265,16 @@ cmake -C ../cmake/presets/std_nolib.cmake ../cmake -DPKG_GPU=on
   </dl>
   </td>
 </tr>
+<tr>
+  <td><code>BUILD_LIB</code></td>
+  <td>control whether to build LAMMPS as a library</td>
+  <td>
+  <dl>
+    <dt><code>off</code> (default)</dt>
+    <dt><code>on</code></dt>
+  </dl>
+  </td>
+</tr>
 <tr>
   <td><code>BUILD_SHARED_LIBS</code></td>
   <td>control whether to build LAMMPS as a shared-library</td>
@@ -315,8 +325,8 @@ cmake -C ../cmake/presets/std_nolib.cmake ../cmake -DPKG_GPU=on
   `mpicxx` in your path and use this MPI implementation.</td>
   <td>
   <dl>
-    <dt><code>off</code> (default)</dt>
-    <dt><code>on</code></dt>
+    <dt><code>on</code> (default, if found)</dt>
+    <dt><code>off</code></dt>
   </dl>
   </td>
 </tr>
@@ -325,8 +335,8 @@ cmake -C ../cmake/presets/std_nolib.cmake ../cmake -DPKG_GPU=on
   <td>control whether to build LAMMPS with OpenMP support.</td>
   <td>
   <dl>
-    <dt><code>off</code> (default)</dt>
-    <dt><code>on</code></dt>
+    <dt><code>on</code> (default, if found)</dt>
+    <dt><code>off</code></dt>
   </dl>
   </td>
 </tr>
@@ -1271,7 +1281,7 @@ providing the identical features and USER interface.</strong></p>
   </td>
   <td>
   <dl>
-    <dt><code>KISSFFT</code></dt>
+    <dt><code>KISS</code></dt>
     <dt><code>FFTW3</code></dt>
     <dt><code>FFTW2</code></dt>
     <dt><code>MKL</code></dt>
@@ -1279,13 +1289,13 @@ providing the identical features and USER interface.</strong></p>
   </td>
 </tr>
 <tr>
-  <td><code>PACK_ARRAY</code></td>
+  <td><code>FFT_PACK</code></td>
   <td>Optimization for FFT</td>
   <td>
   <dl>
-    <dt><code>PACK_ARRAY</code></dt>
-    <dt><code>PACK_POINTER</code></dt>
-    <dt><code>PACK_MEMCPY</code></dt>
+    <dt><code>array (default)</code></dt>
+    <dt><code>pointer</code></dt>
+    <dt><code>memcpy</code></dt>
   </dl>
   </td>
 </tr>
@@ -1377,6 +1387,29 @@ TODO
 
 ### PYTHON Package
 
+### USER-INTEL Package
+
+<table>
+<thead>
+<tr>
+  <th>Option</th>
+  <th>Description</th>
+  <th>Values</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td><code>INTEL_ARCH</code></td>
+  <td>Target architecture for USER-INTEL package</td>
+  <td>
+  <dl>
+    <dt><code>cpu</code> (default)</dt>
+    <dt><code>knl</code></dt>
+  </dl>
+  </td>
+</tr>
+</tbody>
+</table>
 
 ### GPU Package
 The GPU package builds a support library which can either use OpenCL or CUDA as
@@ -1396,8 +1429,8 @@ target API.
   <td>API used by GPU package</td>
   <td>
   <dl>
-    <dt><code>OpenCL</code> (default)</dt>
-    <dt><code>CUDA</code></dt>
+    <dt><code>opencl</code> (default)</dt>
+    <dt><code>cuda</code></dt>
   </dl>
   </td>
 </tr>
@@ -1406,9 +1439,9 @@ target API.
   <td>Precision size used by GPU package kernels</td>
   <td>
   <dl>
-    <dt><code>SINGLE_DOUBLE</code></dt>
-    <dt><code>SINGLE_SINGLE</code></dt>
-    <dt><code>DOUBLE_DOUBLE</code></dt>
+    <dt><code>mixed</code> (default)</dt>
+    <dt><code>single</code></dt>
+    <dt><code>double</code></dt>
   </dl>
   </td>
 </tr>
@@ -1517,6 +1550,16 @@ Requires a Eigen3 installation
 </tr>
 </thead>
 <tbody>
+<tr>
+  <td><code>WITH_JPEG</code></td>
+  <td>Enables/Disable JPEG support in LAMMPS</td>
+  <td>
+  <dl>
+    <dt><code>yes</code> (default, if found)</dt>
+    <dt><code>no</code></dt>
+  </dl>
+  </td>
+</tr>
 <tr>
   <td><code>JPEG_INCLUDE_DIR</code></td>
   <td></td>
@@ -1544,6 +1587,16 @@ Requires a Eigen3 installation
 </tr>
 </thead>
 <tbody>
+<tr>
+  <td><code>WITH_PNG</code></td>
+  <td>Enables/Disable PNG support in LAMMPS</td>
+  <td>
+  <dl>
+    <dt><code>yes</code> (default, if found)</dt>
+    <dt><code>no</code></dt>
+  </dl>
+  </td>
+</tr>
 <tr>
   <td><code>PNG_INCLUDE_DIR</code></td>
   <td></td>
@@ -1572,6 +1625,16 @@ requires `gzip` to be in your `PATH`
 </tr>
 </thead>
 <tbody>
+<tr>
+  <td><code>WITH_GZIP</code></td>
+  <td>Enables/Disable GZIP support in LAMMPS</td>
+  <td>
+  <dl>
+    <dt><code>yes</code> (default, if found)</dt>
+    <dt><code>no</code></dt>
+  </dl>
+  </td>
+</tr>
 <tr>
   <td><code>GZIP_EXECUTABLE</code></td>
   <td></td>
@@ -1594,6 +1657,16 @@ requires `ffmpeg` to be in your `PATH`
 </tr>
 </thead>
 <tbody>
+<tr>
+  <td><code>WITH_FFMPEG</code></td>
+  <td>Enables/Disable FFMPEG support in LAMMPS</td>
+  <td>
+  <dl>
+    <dt><code>yes</code> (default, if found)</dt>
+    <dt><code>no</code></dt>
+  </dl>
+  </td>
+</tr>
 <tr>
   <td><code>FFMPEG_EXECUTABLE</code></td>
   <td></td>
@@ -1606,8 +1679,13 @@ requires `ffmpeg` to be in your `PATH`
 
 ## Compilers
 
-By default, `cmake` will use your environment C/C++/Fortran compilers for a build. It uses the `CC`, `CXX` and `FC` environment variables to detect which compilers should be used. However, these values
-will be cached after the first run of `cmake`. Subsequent runs of `cmake` will ignore changes in these environment variables. To ensure the correct values are used you avoid the cache by setting the `CMAKE_C_COMPILER`, `CMAKE_CXX_COMPILER`, `CMAKE_Fortran_COMPILER` options directly.
+By default, `cmake` will use your environment C/C++/Fortran compilers for a
+build. It uses the `CC`, `CXX` and `FC` environment variables to detect which
+compilers should be used. However, these values will be cached after the first
+run of `cmake`. Subsequent runs of `cmake` will ignore changes in these
+environment variables. To ensure the correct values are used you avoid the
+cache by setting the `CMAKE_C_COMPILER`, `CMAKE_CXX_COMPILER`,
+`CMAKE_Fortran_COMPILER` options directly.
 
 <table>
 <thead>
@@ -1643,20 +1721,20 @@ will be cached after the first run of `cmake`. Subsequent runs of `cmake` will i
 ### Building with GNU Compilers
 
 ```bash
-cmake ../cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_Fortran_COMPILER=gfortran
+cmake -D CMAKE_C_COMPILER=gcc -D CMAKE_CXX_COMPILER=g++ -D CMAKE_Fortran_COMPILER=gfortran ../cmake
 ```
 
 ### Building with Intel Compilers
 
 ```bash
-cmake ../cmake -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc -DCMAKE_Fortran_COMPILER=ifort
+cmake -D CMAKE_C_COMPILER=icc -D CMAKE_CXX_COMPILER=icpc -D CMAKE_Fortran_COMPILER=ifort ../cmake
 ```
 
 
 ### Building with LLVM/Clang Compilers
 
 ```bash
-cmake ../cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_Fortran_COMPILER=flang
+cmake -D CMAKE_C_COMPILER=clang -D CMAKE_CXX_COMPILER=clang++ -D CMAKE_Fortran_COMPILER=flang ../cmake
 ```
 
 
-- 
GitLab


From 023c8e5d6ee02a93f0d37e0bae7b5d5cfac68557 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 15 Aug 2018 11:31:22 -0400
Subject: [PATCH 212/243] Correct option values to lower case in README.md

---
 cmake/README.md | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/cmake/README.md b/cmake/README.md
index a401d5296e..85375cd2aa 100644
--- a/cmake/README.md
+++ b/cmake/README.md
@@ -1450,12 +1450,12 @@ target API.
   <td>Tuning target for OpenCL driver code</td>
   <td>
   <dl>
-    <dt><code>GENERIC</code> (default)</dt>
-    <dt><code>INTEL</code> (Intel CPU)</dt>
-    <dt><code>PHI</code> (Intel Xeon Phi)</dt>
-    <dt><code>FERMI</code> (NVIDIA)</dt>
-    <dt><code>KEPLER</code> (NVIDIA)</dt>
-    <dt><code>CYPRESS</code> (AMD)</dt>
+    <dt><code>generic</code> (default)</dt>
+    <dt><code>intel</code> (Intel CPU)</dt>
+    <dt><code>phi</code> (Intel Xeon Phi)</dt>
+    <dt><code>fermi</code> (NVIDIA)</dt>
+    <dt><code>kepler</code> (NVIDIA)</dt>
+    <dt><code>cypress</code> (AMD)</dt>
   </dl>
   </td>
 </tr>
-- 
GitLab


From b9e2b26b65d98a4614ffdcb8f758ff9c42a9c8d2 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 15 Aug 2018 12:22:06 -0400
Subject: [PATCH 213/243] Simplified change

---
 cmake/CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 2f38cdd689..d9e60a5208 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -314,7 +314,7 @@ if(PKG_VORONOI)
     if(BUILD_SHARED_LIBS)
         set(VORO_BUILD_OPTIONS "CFLAGS=-fPIC")
     else()
-        set(VORO_BUILD_OPTIONS "")
+        set(VORO_BUILD_OPTIONS)
     endif()
 
     ExternalProject_Add(voro_build
-- 
GitLab


From c9131cf1de48a52fc2ad86dd67ffcbd91eaeaf9a Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 15 Aug 2018 13:54:37 -0600
Subject: [PATCH 214/243] drop FFTW2 support, and change doc pages

---
 doc/src/Build_settings.txt | 32 ++++++++-------------------
 src/KSPACE/fft3d.cpp       | 14 +++++++++++-
 src/KSPACE/fft3d.h         | 44 +++++++++++++++++++-------------------
 3 files changed, 44 insertions(+), 46 deletions(-)

diff --git a/doc/src/Build_settings.txt b/doc/src/Build_settings.txt
index 6c36420f77..db281c0857 100644
--- a/doc/src/Build_settings.txt
+++ b/doc/src/Build_settings.txt
@@ -33,27 +33,25 @@ LAMMPS can use them if they are available on your system.
 
 [CMake variables]:
 
--D FFT=value              # KISS or FFTW3 or FFTW2 or MKL, default is FFTW3 if found, else KISS
+-D FFT=value              # FFTW3 or MKL or KISS, default is FFTW3 if found, else KISS
 -D FFT_SINGLE=value       # yes or no (default), no = double precision
 -D FFT_PACK=value         # array (default) or pointer or memcpy :pre
 
-NOTE: The values for the FFT variable must be in upper-case.
-This is an exception to the rule that all CMake variables can
-be specified with lower-case values.
+NOTE: The values for the FFT variable must be in upper-case.  This is
+an exception to the rule that all CMake variables can be specified
+with lower-case values.
 
 Usually these settings are all that is needed.  If CMake cannot find
 the FFT library, you can set these variables:
 
 -D FFTW3_INCLUDE_DIRS=path  # path to FFTW3 include files
 -D FFTW3_LIBRARIES=path     # path to FFTW3 libraries
--D FFTW2_INCLUDE_DIRS=path  # ditto for FFTW2
--D FFTW2_LIBRARIES=path
 -D MKL_INCLUDE_DIRS=path    # ditto for Intel MKL library
 -D MKL_LIBRARIES=path :pre
 
 [Makefile.machine settings]:
 
-FFT_INC = -DFFT_FFTW3         # -DFFT_FFTW3, -DFFT_FFTW2, -DFFT_FFTW (same as -DFFT_FFTW3), -DFFT_MKL, or -DFFT_KISS
+FFT_INC = -DFFT_FFTW3         # -DFFT_FFTW3, -DFFT_FFTW (same as -DFFT_FFTW3), -DFFT_MKL, or -DFFT_KISS
                               # default is KISS if not specified
 FFT_INC = -DFFT_SINGLE        # do not specify for double precision
 FFT_INC = -DFFT_PACK_ARRAY    # or -DFFT_PACK_POINTER or -DFFT_PACK_MEMCPY :pre
@@ -63,8 +61,6 @@ FFT_INC =    	-I/usr/local/include
 FFT_PATH =      -L/usr/local/lib
 FFT_LIB =	-lfftw3             # FFTW3 double precision
 FFT_LIB =	-lfftw3 -lfftw3f    # FFTW3 single precision
-FFT_LIB =	-lfftw              # FFTW2 double precision, or -ldfftw
-FFT_LIB =	-lsfftw             # FFTW2 single precision
 FFT_LIB =       -lmkl_intel_lp64 -lmkl_sequential -lmkl_core  # MKL with Intel compiler
 FFT_LIB =       -lmkl_gf_lp64 -lmkl_sequential -lmkl_core     # MKL with GNU compier :pre
 
@@ -89,13 +85,9 @@ details.
 
 FFTW is a fast, portable FFT library that should also work on any
 platform and can be faster than the KISS FFT library.  You can
-download it from "www.fftw.org"_http://www.fftw.org.  Both the
-(obsolete) legacy version 2.1.X and the newer 3.X versions are
-supported.
+download it from "www.fftw.org"_http://www.fftw.org.  LAMMPS requires
+version 3.X; the legacy version 2.1.X is no longer supported.
 
-NOTE: FFTW2 has not been updated since 1999 and has been declared
-obsolete by its developers.
- 
 Building FFTW for your box should be as simple as ./configure; make;
 make install.  The install command typically requires root privileges
 (e.g. invoke it via sudo), unless you specify a local directory with
@@ -116,8 +108,8 @@ error is less than the difference in precision. Using the -DFFT_SINGLE
 setting trades off a little accuracy for reduced memory use and
 parallel communication costs for transposing 3d FFT data.
 
-When using -DFFT_SINGLE with FFTW3 or FFTW2, you may need to build the
-FFTW library a second time with support for single-precision.
+When using -DFFT_SINGLE with FFTW3 you may need to build the FFTW
+library a second time with support for single-precision.
 
 For FFTW3, do the following, which should produce the additional
 library libfftw3f.a
@@ -125,12 +117,6 @@ library libfftw3f.a
 make clean
 ./configure --enable-single; make; make install :pre
 
-For FFTW2, do the following, which should produce the additional
-library libsfftw.a
-
-make clean
-./configure --enable-float --enable-type-prefix; make; make install :pre
-
 Performing 3d FFTs requires communication to transpose the 3d FFT
 grid.  The data packing/unpacking for this can be done in one of 3
 modes (ARRAY, POINTER, MEMCPY) as set by the FFT_PACK syntax above.
diff --git a/src/KSPACE/fft3d.cpp b/src/KSPACE/fft3d.cpp
index db44feabcc..7d3c8c83f2 100644
--- a/src/KSPACE/fft3d.cpp
+++ b/src/KSPACE/fft3d.cpp
@@ -104,11 +104,13 @@ void fft_3d(FFT_DATA *in, FFT_DATA *out, int flag, struct fft_plan_3d *plan)
     DftiComputeForward(plan->handle_fast,data);
   else
     DftiComputeBackward(plan->handle_fast,data);
+  /*
 #elif defined(FFT_FFTW2)
   if (flag == -1)
     fftw(plan->plan_fast_forward,total/length,data,1,length,NULL,0,0);
   else
-    fftw(plan->plan_fast_backward,total/length,data,1,length,NULL,0,0);
+   fftw(plan->plan_fast_backward,total/length,data,1,length,NULL,0,0);
+  */
 #elif defined(FFT_FFTW3)
   if (flag == -1)
     theplan=plan->plan_fast_forward;
@@ -143,11 +145,13 @@ void fft_3d(FFT_DATA *in, FFT_DATA *out, int flag, struct fft_plan_3d *plan)
     DftiComputeForward(plan->handle_mid,data);
   else
     DftiComputeBackward(plan->handle_mid,data);
+  /*
 #elif defined(FFT_FFTW2)
   if (flag == -1)
     fftw(plan->plan_mid_forward,total/length,data,1,length,NULL,0,0);
   else
     fftw(plan->plan_mid_backward,total/length,data,1,length,NULL,0,0);
+  */
 #elif defined(FFT_FFTW3)
   if (flag == -1)
     theplan=plan->plan_mid_forward;
@@ -182,11 +186,13 @@ void fft_3d(FFT_DATA *in, FFT_DATA *out, int flag, struct fft_plan_3d *plan)
     DftiComputeForward(plan->handle_slow,data);
   else
     DftiComputeBackward(plan->handle_slow,data);
+  /*
 #elif defined(FFT_FFTW2)
   if (flag == -1)
     fftw(plan->plan_slow_forward,total/length,data,1,length,NULL,0,0);
   else
     fftw(plan->plan_slow_backward,total/length,data,1,length,NULL,0,0);
+  */
 #elif defined(FFT_FFTW3)
   if (flag == -1)
     theplan=plan->plan_slow_forward;
@@ -520,6 +526,7 @@ struct fft_plan_3d *fft_3d_create_plan(
       (out_khi-out_klo+1);
   }
 
+  /*
 #elif defined(FFT_FFTW2)
 
   plan->plan_fast_forward =
@@ -561,6 +568,7 @@ struct fft_plan_3d *fft_3d_create_plan(
     plan->normnum = (out_ihi-out_ilo+1) * (out_jhi-out_jlo+1) *
       (out_khi-out_klo+1);
   }
+  */
 
 #elif defined(FFT_FFTW3)
   plan->plan_fast_forward =
@@ -660,6 +668,7 @@ void fft_3d_destroy_plan(struct fft_plan_3d *plan)
   DftiFreeDescriptor(&(plan->handle_fast));
   DftiFreeDescriptor(&(plan->handle_mid));
   DftiFreeDescriptor(&(plan->handle_slow));
+  /*
 #elif defined(FFT_FFTW2)
   if (plan->plan_slow_forward != plan->plan_fast_forward &&
       plan->plan_slow_forward != plan->plan_mid_forward) {
@@ -672,6 +681,7 @@ void fft_3d_destroy_plan(struct fft_plan_3d *plan)
   }
   fftw_destroy_plan(plan->plan_fast_forward);
   fftw_destroy_plan(plan->plan_fast_backward);
+  */
 #elif defined(FFT_FFTW3)
   FFTW_API(destroy_plan)(plan->plan_slow_forward);
   FFTW_API(destroy_plan)(plan->plan_slow_backward);
@@ -809,6 +819,7 @@ void fft_1d_only(FFT_DATA *data, int nsize, int flag, struct fft_plan_3d *plan)
     DftiComputeBackward(plan->handle_mid,data);
     DftiComputeBackward(plan->handle_slow,data);
   }
+  /*
 #elif defined(FFT_FFTW2)
   if (flag == -1) {
     fftw(plan->plan_fast_forward,total1/length1,data,1,0,NULL,0,0);
@@ -819,6 +830,7 @@ void fft_1d_only(FFT_DATA *data, int nsize, int flag, struct fft_plan_3d *plan)
     fftw(plan->plan_mid_backward,total2/length2,data,1,0,NULL,0,0);
     fftw(plan->plan_slow_backward,total3/length3,data,1,0,NULL,0,0);
   }
+  */
 #elif defined(FFT_FFTW3)
   FFTW_API(plan) theplan;
   if (flag == -1)
diff --git a/src/KSPACE/fft3d.h b/src/KSPACE/fft3d.h
index ab3bca8358..a51818d986 100644
--- a/src/KSPACE/fft3d.h
+++ b/src/KSPACE/fft3d.h
@@ -24,7 +24,7 @@ typedef float FFT_SCALAR;
 typedef double FFT_SCALAR;
 #endif
 
-// set default fftw library. switch to FFT_FFTW3 when convenient.
+// if user set FFTW, it means FFTW3
 
 #ifdef FFT_FFTW
 #define FFT_FFTW3
@@ -41,13 +41,13 @@ typedef double FFT_SCALAR;
 typedef float _Complex FFT_DATA;
 #define FFT_MKL_PREC DFTI_SINGLE
 
-#elif defined(FFT_FFTW2)
-#if defined(FFTW_SIZE)
-#include "sfftw.h"
-#else
-#include "fftw.h"
-#endif
-typedef FFTW_COMPLEX FFT_DATA;
+//#elif defined(FFT_FFTW2)
+//#if defined(FFTW_SIZE)
+//#include "sfftw.h"
+//#else
+//#include "fftw.h"
+//#endif
+//typedef FFTW_COMPLEX FFT_DATA;
 
 #elif defined(FFT_FFTW3)
 #include "fftw3.h"
@@ -82,13 +82,13 @@ typedef struct kiss_fft_state* kiss_fft_cfg;
 typedef double _Complex FFT_DATA;
 #define FFT_MKL_PREC DFTI_DOUBLE
 
-#elif defined(FFT_FFTW2)
-#if defined(FFTW_SIZE)
-#include "dfftw.h"
-#else
-#include "fftw.h"
-#endif
-typedef FFTW_COMPLEX FFT_DATA;
+//#elif defined(FFT_FFTW2)
+//#if defined(FFTW_SIZE)
+//#include "dfftw.h"
+//#else
+//#include "fftw.h"
+//#endif
+//typedef FFTW_COMPLEX FFT_DATA;
 
 #elif defined(FFT_FFTW3)
 #include "fftw3.h"
@@ -139,13 +139,13 @@ struct fft_plan_3d {
   DFTI_DESCRIPTOR *handle_fast;
   DFTI_DESCRIPTOR *handle_mid;
   DFTI_DESCRIPTOR *handle_slow;
-#elif defined(FFT_FFTW2)
-  fftw_plan plan_fast_forward;
-  fftw_plan plan_fast_backward;
-  fftw_plan plan_mid_forward;
-  fftw_plan plan_mid_backward;
-  fftw_plan plan_slow_forward;
-  fftw_plan plan_slow_backward;
+//#elif defined(FFT_FFTW2)
+//  fftw_plan plan_fast_forward;
+//  fftw_plan plan_fast_backward;
+//  fftw_plan plan_mid_forward;
+//  fftw_plan plan_mid_backward;
+//fftw_plan plan_slow_forward;
+//fftw_plan plan_slow_backward;
 #elif defined(FFT_FFTW3)
   FFTW_API(plan) plan_fast_forward;
   FFTW_API(plan) plan_fast_backward;
-- 
GitLab


From 6069d392a3dafa819786b0531383e3bffce12a2a Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Wed, 15 Aug 2018 16:44:31 -0400
Subject: [PATCH 215/243] favor qsort over mergesort for stable release

---
 src/lmptype.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/lmptype.h b/src/lmptype.h
index 2be1d2ac38..7e359d2abe 100644
--- a/src/lmptype.h
+++ b/src/lmptype.h
@@ -46,6 +46,13 @@
 #define PRId64 "ld"
 #endif
 
+// favor qsort over mergesort for stable release
+// TODO: to be removed after stable release
+
+#ifndef LMP_QSORT
+#define LMP_QSORT
+#endif
+
 namespace LAMMPS_NS {
 
 // enum used for KOKKOS host/device flags
-- 
GitLab


From 9e154abba01c34a03c9679cc3f16c50453b67d39 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 15 Aug 2018 14:55:48 -0600
Subject: [PATCH 216/243] remove pre-install of 3 default packages from docs

---
 doc/src/Build_package.txt | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/doc/src/Build_package.txt b/doc/src/Build_package.txt
index 45626dbbae..dc8918c884 100644
--- a/doc/src/Build_package.txt
+++ b/doc/src/Build_package.txt
@@ -121,10 +121,14 @@ right thing.  Individual files are only included if their dependencies
 are already included.  Likewise, if a package is excluded, other files
 dependent on that package are also excluded.
 
-When you download a LAMMPS tarball, three packages are pre-installed
-in the src directory: KSPACE, MANYBODY, MOLECULE.  This is because
-they are so commonly used.  When you download LAMMPS source files from
-the Git or SVN repositories, no packages are pre-installed.
+When you download a LAMMPS tarball or download LAMMPS source files
+from the Git or SVN repositories, no packages are pre-installed in the
+src directory.
+
+NOTE: Prior to Aug 2018, if you downloaded a tarball, 3 packages
+(KSPACE, MANYBODY, MOLECULE) were pre-installed in the src directory.
+That is no longer the case, so that CMake will build as-is without the
+need to un-install those packages.
 
 :line
 
-- 
GitLab


From 46f1e63a196dace70150bb50297ef279447706b2 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 15 Aug 2018 15:14:01 -0600
Subject: [PATCH 217/243] update to Authors for CMake addition

---
 doc/src/Intro_authors.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/doc/src/Intro_authors.txt b/doc/src/Intro_authors.txt
index 8bb0fa9c22..06c86f6e3c 100644
--- a/doc/src/Intro_authors.txt
+++ b/doc/src/Intro_authors.txt
@@ -63,6 +63,7 @@ Jim Belak and Roy Pollock (LLNL) :ul
 Here is a timeline for when various individuals contributed to a new
 feature or command or tool added to LAMMPS:
 
+Aug18 : CMake build option for LAMMPS : Christoph Junghans (LANL), Richard Berger, and Axel Kohlmeyer (Temple U)
 Jul18 : DEM polygonal and polyhedron particles : Trung Nguyen (Northwestern U)
 Jun18 : SPIN package : Julien Tranchida (Sandia and CEA)
 Jun18 : compute entropy/atom : Pablo Piaggi (EPLF, Switzerland)
-- 
GitLab


From ccc9fcda775d1751c9cd64a4d22f2733a9c27918 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 15 Aug 2018 16:22:26 -0600
Subject: [PATCH 218/243] tweaks to doc page formatting

---
 doc/src/Build.txt          | 13 +------------
 doc/src/Build_basics.txt   | 10 +++++-----
 doc/src/Build_settings.txt | 14 +++++++-------
 doc/src/Intro_authors.txt  |  2 +-
 doc/src/Modify.txt         | 14 ++------------
 doc/src/Python_head.txt    | 14 ++------------
 doc/src/Speed.txt          | 19 +++++++------------
 7 files changed, 25 insertions(+), 61 deletions(-)

diff --git a/doc/src/Build.txt b/doc/src/Build.txt
index 218664897f..1deaa1bd36 100644
--- a/doc/src/Build.txt
+++ b/doc/src/Build.txt
@@ -24,17 +24,9 @@ as described on the "Install"_Install.html doc page.
    Build_cmake
    Build_make
    Build_link
-
-.. toctree::
-   :maxdepth: 1
-
    Build_basics
    Build_settings
    Build_package
-
-.. toctree::
-   :maxdepth: 1
-
    Build_extras
 
 END_RST -->
@@ -43,10 +35,7 @@ END_RST -->
 
 "Build LAMMPS with CMake"_Build_cmake.html
 "Build LAMMPS with make"_Build_make.html
-"Link LAMMPS as a library to another code"_Build_link.html :all(b)
-
-Build options:
-
+"Link LAMMPS as a library to another code"_Build_link.html
 "Basic build options: serial/parallel, compilers, executable/library"_Build_basics.html
 "Optional build settings"_Build_settings.html :all(b)
 "Include packages in build"_Build_package.html
diff --git a/doc/src/Build_basics.txt b/doc/src/Build_basics.txt
index 425266a35f..cee78aced3 100644
--- a/doc/src/Build_basics.txt
+++ b/doc/src/Build_basics.txt
@@ -20,7 +20,7 @@ CMake and make:
 
 :line
 
-Serial vs parallel build :h3,link(serial)
+Serial vs parallel build :h4,link(serial)
 
 LAMMPS can be built to run in parallel using the ubiquitous "MPI
 (message-passing
@@ -118,7 +118,7 @@ please refer to its documentation.
 
 :line
 
-Choice of compiler and compile/link options :h3,link(compile)
+Choice of compiler and compile/link options :h4,link(compile)
 
 The choice of compiler and compiler flags can be important for
 performance.  Vendor compilers can produce faster code than
@@ -210,7 +210,7 @@ Makefile.kokkos_phi            # KOKKOS package for KNLs (OpenMP) :pre
 
 :line
 
-Build LAMMPS as an executable or a library :h3,link(exe)
+Build LAMMPS as an executable or a library :h4,link(exe)
 
 LAMMPS can be built as either an executable or as a static or shared
 library.  The LAMMPS library can be called from another application or
@@ -271,7 +271,7 @@ should be the file /usr/local/lib/libmpich.so.
 
 :line
 
-Build the LAMMPS documentation :h3,link(doc)
+Build the LAMMPS documentation :h4,link(doc)
 
 [CMake variable]:
 
@@ -294,7 +294,7 @@ lammps/doc dir to see other options.
 
 :line
 
-Install LAMMPS after a build :h3,link(install)
+Install LAMMPS after a build :h4,link(install)
 
 After building LAMMPS, you may wish to copy the LAMMPS executable of
 library, along with other LAMMPS files (library header, doc files) to
diff --git a/doc/src/Build_settings.txt b/doc/src/Build_settings.txt
index db281c0857..773217e3a0 100644
--- a/doc/src/Build_settings.txt
+++ b/doc/src/Build_settings.txt
@@ -23,7 +23,7 @@ explain how to do this for building both with CMake and make.
 
 :line
  
-FFT library :h3,link(fft)
+FFT library :h4,link(fft)
 
 When the KSPACE package is included in a LAMMPS build, the
 "kspace_style pppm"_kspace_style.html command performs 3d FFTs which
@@ -126,7 +126,7 @@ ARRAY mode.
 
 :line
 
-Size of LAMMPS data types :h3,link(size)
+Size of LAMMPS data types :h4,link(size)
 
 LAMMPS has a few integer data types which can be defined as 4-byte or
 8-byte integers.  The default setting of "smallbig" is almost always
@@ -189,7 +189,7 @@ in whichever lib/gpu/Makefile is used must be the same as above.
 
 :line
 
-Output of JPG, PNG, and movie files :h3,link(graphics)
+Output of JPG, PNG, and movie files :h4,link(graphics)
 
 The "dump image"_dump_image.html command has options to output JPEG or
 PNG image files.  Likewise the "dump movie"_dump_image.html command
@@ -245,7 +245,7 @@ crash.
 
 :line
 
-Read or write compressed files :h3,link(gzip)
+Read or write compressed files :h4,link(gzip)
 
 If this option is enabled, large files can be read or written with
 gzip compression by several LAMMPS commands, including
@@ -276,7 +276,7 @@ what the "COMPRESS package"_Packages_details.html#PKG-COMPRESS enables.
 
 :line
 
-Memory allocation alignment :h3,link(align)
+Memory allocation alignment :h4,link(align)
 
 This setting enables the use of the posix_memalign() call instead of
 malloc() when LAMMPS allocates large chunks or memory.  This can make
@@ -308,7 +308,7 @@ manages its dynamical memory.
 
 :line
 
-Workaround for long long integers :h3,link(longlong)
+Workaround for long long integers :h4,link(longlong)
 
 If your system or MPI version does not recognize "long long" data
 types, the following setting will be needed.  It converts "long long"
@@ -325,7 +325,7 @@ LMP_INC = -DLAMMPS_LONGLONG_TO_LONG :pre
 
 :line
 
-Exception handling when using LAMMPS as a library :h3,link(exceptions)
+Exception handling when using LAMMPS as a library :h4,link(exceptions)
 
 This setting is useful when external codes drive LAMMPS as a library.
 With this option enabled LAMMPS errors do not kill the caller.
diff --git a/doc/src/Intro_authors.txt b/doc/src/Intro_authors.txt
index 06c86f6e3c..3e9c163eb2 100644
--- a/doc/src/Intro_authors.txt
+++ b/doc/src/Intro_authors.txt
@@ -30,7 +30,7 @@ the packages they have written are somewhat unique to LAMMPS and the
 code would not be as general-purpose as it is without their expertise
 and efforts.
 
-Axel Kohlmeyer (Temple U), akohlmey at gmail.com, SVN and Git repositories, indefatigable mail list responder, USER-CG-CMM, USER-OMP, USER-COLVARS, USER-MOLFILE, USER-QMMM packages
+Richard Berger (Temple U), GitHub site and Sphinx doc pages
 Roy Pollock (LLNL), Ewald and PPPM solvers
 Mike Brown (ORNL), brownw at ornl.gov, GPU and USER-INTEL packages
 Greg Wagner (Sandia), gjwagne at sandia.gov, MEAM package for MEAM potential
diff --git a/doc/src/Modify.txt b/doc/src/Modify.txt
index 666aaba8a7..38fbf17dd9 100644
--- a/doc/src/Modify.txt
+++ b/doc/src/Modify.txt
@@ -38,19 +38,11 @@ contribute"_Modify_contribute.html doc page.
    Modify_compute
    Modify_fix
    Modify_command
-
-.. toctree::
-   :maxdepth: 1
-
    Modify_dump
    Modify_kspace
    Modify_min
    Modify_region
    Modify_body
-
-.. toctree::
-   :maxdepth: 1
-
    Modify_thermo
    Modify_variable
 
@@ -66,14 +58,12 @@ END_RST -->
 "Bond, angle, dihedral, improper styles"_Modify_bond.html
 "Compute styles"_Modify_compute.html
 "Fix styles"_Modify_fix.html
-"Input script command styles"_Modify_command.html :all(b)
-
+"Input script command styles"_Modify_command.html
 "Dump styles"_Modify_dump.html
 "Kspace styles"_Modify_kspace.html
 "Minimization styles"_Modify_min.html
 "Region styles"_Modify_region.html
-"Body styles"_Modify_body.html :all(b)
-
+"Body styles"_Modify_body.html
 "Thermodynamic output options"_Modify_thermo.html
 "Variable options"_Modify_variable.html :all(b)
 
diff --git a/doc/src/Python_head.txt b/doc/src/Python_head.txt
index b5d33c5daa..1f02368429 100644
--- a/doc/src/Python_head.txt
+++ b/doc/src/Python_head.txt
@@ -19,10 +19,6 @@ used together.
    :maxdepth: 1
 
    Python_overview
-
-.. toctree::
-   :maxdepth: 1
-
    Python_run
    Python_shlib
    Python_install
@@ -31,18 +27,13 @@ used together.
    Python_library
    Python_pylammps
    Python_examples
-
-.. toctree::
-   :maxdepth: 1
-
    Python_call
 
 END_RST -->
 
 <!-- HTML_ONLY -->
 
-"Overview of Python and LAMMPS"_Python_overview.html :all(b)
-
+"Overview of Python and LAMMPS"_Python_overview.html
 "Run LAMMPS from Python"_Python_run.html
 "Build LAMMPS as a shared library"_Python_shlib.html
 "Install LAMMPS in Python"_Python_install.html
@@ -50,8 +41,7 @@ END_RST -->
 "Test the Python/LAMMPS interface"_Python_test.html
 "Python library interface"_Python_library.html
 "PyLammps interface"_Python_pylammps.html
-"Example Python scripts that use LAMMPS"_Python_examples.html :all(b)
-
+"Example Python scripts that use LAMMPS"_Python_examples.html
 "Call Python from a LAMMPS input script"_Python_call.html :all(b)
 
 <!-- END_HTML_ONLY -->
diff --git a/doc/src/Speed.txt b/doc/src/Speed.txt
index 7eac11ffa5..17d44e8365 100644
--- a/doc/src/Speed.txt
+++ b/doc/src/Speed.txt
@@ -35,16 +35,13 @@ hardware platforms.
 
    Speed_bench
    Speed_measure
-
-.. toctree::
-   :maxdepth: 1
-
    Speed_tips
-
-.. toctree::
-   :maxdepth: 1
-
    Speed_packages
+   Speed_gpu
+   Speed_intel
+   Speed_kokkos
+   Speed_omp
+   Speed_opt
    Speed_compare
 
 END_RST -->
@@ -52,10 +49,8 @@ END_RST -->
 <!-- HTML_ONLY -->
 
 "Benchmarks"_Speed_bench.html
-"Measuring performance"_Speed_measure.html :all(b)
-
-"General tips"_Speed_tips.html :all(b)
-
+"Measuring performance"_Speed_measure.html
+"General tips"_Speed_tips.html
 "Accelerator packages"_Speed_packages.html
 "GPU package"_Speed_gpu.html
 "USER-INTEL package"_Speed_intel.html
-- 
GitLab


From 07cd194e27f7a8f3e68cb1031ee78c188db3c4e3 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Wed, 15 Aug 2018 16:27:39 -0600
Subject: [PATCH 219/243] tweaks to Manual formatting

---
 doc/src/Build.txt          | 17 +++--------------
 doc/src/Build_basics.txt   | 10 +++++-----
 doc/src/Build_settings.txt | 14 +++++++-------
 doc/src/Intro_authors.txt  |  2 +-
 doc/src/Modify.txt         | 14 ++------------
 doc/src/Python_head.txt    | 14 ++------------
 doc/src/Speed.txt          | 19 +++++++------------
 7 files changed, 27 insertions(+), 63 deletions(-)

diff --git a/doc/src/Build.txt b/doc/src/Build.txt
index 218664897f..e62268b84b 100644
--- a/doc/src/Build.txt
+++ b/doc/src/Build.txt
@@ -24,17 +24,9 @@ as described on the "Install"_Install.html doc page.
    Build_cmake
    Build_make
    Build_link
-
-.. toctree::
-   :maxdepth: 1
-
    Build_basics
    Build_settings
    Build_package
-
-.. toctree::
-   :maxdepth: 1
-
    Build_extras
 
 END_RST -->
@@ -43,12 +35,9 @@ END_RST -->
 
 "Build LAMMPS with CMake"_Build_cmake.html
 "Build LAMMPS with make"_Build_make.html
-"Link LAMMPS as a library to another code"_Build_link.html :all(b)
-
-Build options:
-
-"Basic build options: serial/parallel, compilers, executable/library"_Build_basics.html
-"Optional build settings"_Build_settings.html :all(b)
+"Link LAMMPS as a library to another code"_Build_link.html
+"Basic build options"_Build_basics.html
+"Optional build settings"_Build_settings.html
 "Include packages in build"_Build_package.html
 "Packages with extra build options"_Build_extras.html :all(b)
 
diff --git a/doc/src/Build_basics.txt b/doc/src/Build_basics.txt
index 425266a35f..cee78aced3 100644
--- a/doc/src/Build_basics.txt
+++ b/doc/src/Build_basics.txt
@@ -20,7 +20,7 @@ CMake and make:
 
 :line
 
-Serial vs parallel build :h3,link(serial)
+Serial vs parallel build :h4,link(serial)
 
 LAMMPS can be built to run in parallel using the ubiquitous "MPI
 (message-passing
@@ -118,7 +118,7 @@ please refer to its documentation.
 
 :line
 
-Choice of compiler and compile/link options :h3,link(compile)
+Choice of compiler and compile/link options :h4,link(compile)
 
 The choice of compiler and compiler flags can be important for
 performance.  Vendor compilers can produce faster code than
@@ -210,7 +210,7 @@ Makefile.kokkos_phi            # KOKKOS package for KNLs (OpenMP) :pre
 
 :line
 
-Build LAMMPS as an executable or a library :h3,link(exe)
+Build LAMMPS as an executable or a library :h4,link(exe)
 
 LAMMPS can be built as either an executable or as a static or shared
 library.  The LAMMPS library can be called from another application or
@@ -271,7 +271,7 @@ should be the file /usr/local/lib/libmpich.so.
 
 :line
 
-Build the LAMMPS documentation :h3,link(doc)
+Build the LAMMPS documentation :h4,link(doc)
 
 [CMake variable]:
 
@@ -294,7 +294,7 @@ lammps/doc dir to see other options.
 
 :line
 
-Install LAMMPS after a build :h3,link(install)
+Install LAMMPS after a build :h4,link(install)
 
 After building LAMMPS, you may wish to copy the LAMMPS executable of
 library, along with other LAMMPS files (library header, doc files) to
diff --git a/doc/src/Build_settings.txt b/doc/src/Build_settings.txt
index db281c0857..773217e3a0 100644
--- a/doc/src/Build_settings.txt
+++ b/doc/src/Build_settings.txt
@@ -23,7 +23,7 @@ explain how to do this for building both with CMake and make.
 
 :line
  
-FFT library :h3,link(fft)
+FFT library :h4,link(fft)
 
 When the KSPACE package is included in a LAMMPS build, the
 "kspace_style pppm"_kspace_style.html command performs 3d FFTs which
@@ -126,7 +126,7 @@ ARRAY mode.
 
 :line
 
-Size of LAMMPS data types :h3,link(size)
+Size of LAMMPS data types :h4,link(size)
 
 LAMMPS has a few integer data types which can be defined as 4-byte or
 8-byte integers.  The default setting of "smallbig" is almost always
@@ -189,7 +189,7 @@ in whichever lib/gpu/Makefile is used must be the same as above.
 
 :line
 
-Output of JPG, PNG, and movie files :h3,link(graphics)
+Output of JPG, PNG, and movie files :h4,link(graphics)
 
 The "dump image"_dump_image.html command has options to output JPEG or
 PNG image files.  Likewise the "dump movie"_dump_image.html command
@@ -245,7 +245,7 @@ crash.
 
 :line
 
-Read or write compressed files :h3,link(gzip)
+Read or write compressed files :h4,link(gzip)
 
 If this option is enabled, large files can be read or written with
 gzip compression by several LAMMPS commands, including
@@ -276,7 +276,7 @@ what the "COMPRESS package"_Packages_details.html#PKG-COMPRESS enables.
 
 :line
 
-Memory allocation alignment :h3,link(align)
+Memory allocation alignment :h4,link(align)
 
 This setting enables the use of the posix_memalign() call instead of
 malloc() when LAMMPS allocates large chunks or memory.  This can make
@@ -308,7 +308,7 @@ manages its dynamical memory.
 
 :line
 
-Workaround for long long integers :h3,link(longlong)
+Workaround for long long integers :h4,link(longlong)
 
 If your system or MPI version does not recognize "long long" data
 types, the following setting will be needed.  It converts "long long"
@@ -325,7 +325,7 @@ LMP_INC = -DLAMMPS_LONGLONG_TO_LONG :pre
 
 :line
 
-Exception handling when using LAMMPS as a library :h3,link(exceptions)
+Exception handling when using LAMMPS as a library :h4,link(exceptions)
 
 This setting is useful when external codes drive LAMMPS as a library.
 With this option enabled LAMMPS errors do not kill the caller.
diff --git a/doc/src/Intro_authors.txt b/doc/src/Intro_authors.txt
index 06c86f6e3c..3e9c163eb2 100644
--- a/doc/src/Intro_authors.txt
+++ b/doc/src/Intro_authors.txt
@@ -30,7 +30,7 @@ the packages they have written are somewhat unique to LAMMPS and the
 code would not be as general-purpose as it is without their expertise
 and efforts.
 
-Axel Kohlmeyer (Temple U), akohlmey at gmail.com, SVN and Git repositories, indefatigable mail list responder, USER-CG-CMM, USER-OMP, USER-COLVARS, USER-MOLFILE, USER-QMMM packages
+Richard Berger (Temple U), GitHub site and Sphinx doc pages
 Roy Pollock (LLNL), Ewald and PPPM solvers
 Mike Brown (ORNL), brownw at ornl.gov, GPU and USER-INTEL packages
 Greg Wagner (Sandia), gjwagne at sandia.gov, MEAM package for MEAM potential
diff --git a/doc/src/Modify.txt b/doc/src/Modify.txt
index 666aaba8a7..38fbf17dd9 100644
--- a/doc/src/Modify.txt
+++ b/doc/src/Modify.txt
@@ -38,19 +38,11 @@ contribute"_Modify_contribute.html doc page.
    Modify_compute
    Modify_fix
    Modify_command
-
-.. toctree::
-   :maxdepth: 1
-
    Modify_dump
    Modify_kspace
    Modify_min
    Modify_region
    Modify_body
-
-.. toctree::
-   :maxdepth: 1
-
    Modify_thermo
    Modify_variable
 
@@ -66,14 +58,12 @@ END_RST -->
 "Bond, angle, dihedral, improper styles"_Modify_bond.html
 "Compute styles"_Modify_compute.html
 "Fix styles"_Modify_fix.html
-"Input script command styles"_Modify_command.html :all(b)
-
+"Input script command styles"_Modify_command.html
 "Dump styles"_Modify_dump.html
 "Kspace styles"_Modify_kspace.html
 "Minimization styles"_Modify_min.html
 "Region styles"_Modify_region.html
-"Body styles"_Modify_body.html :all(b)
-
+"Body styles"_Modify_body.html
 "Thermodynamic output options"_Modify_thermo.html
 "Variable options"_Modify_variable.html :all(b)
 
diff --git a/doc/src/Python_head.txt b/doc/src/Python_head.txt
index b5d33c5daa..1f02368429 100644
--- a/doc/src/Python_head.txt
+++ b/doc/src/Python_head.txt
@@ -19,10 +19,6 @@ used together.
    :maxdepth: 1
 
    Python_overview
-
-.. toctree::
-   :maxdepth: 1
-
    Python_run
    Python_shlib
    Python_install
@@ -31,18 +27,13 @@ used together.
    Python_library
    Python_pylammps
    Python_examples
-
-.. toctree::
-   :maxdepth: 1
-
    Python_call
 
 END_RST -->
 
 <!-- HTML_ONLY -->
 
-"Overview of Python and LAMMPS"_Python_overview.html :all(b)
-
+"Overview of Python and LAMMPS"_Python_overview.html
 "Run LAMMPS from Python"_Python_run.html
 "Build LAMMPS as a shared library"_Python_shlib.html
 "Install LAMMPS in Python"_Python_install.html
@@ -50,8 +41,7 @@ END_RST -->
 "Test the Python/LAMMPS interface"_Python_test.html
 "Python library interface"_Python_library.html
 "PyLammps interface"_Python_pylammps.html
-"Example Python scripts that use LAMMPS"_Python_examples.html :all(b)
-
+"Example Python scripts that use LAMMPS"_Python_examples.html
 "Call Python from a LAMMPS input script"_Python_call.html :all(b)
 
 <!-- END_HTML_ONLY -->
diff --git a/doc/src/Speed.txt b/doc/src/Speed.txt
index 7eac11ffa5..17d44e8365 100644
--- a/doc/src/Speed.txt
+++ b/doc/src/Speed.txt
@@ -35,16 +35,13 @@ hardware platforms.
 
    Speed_bench
    Speed_measure
-
-.. toctree::
-   :maxdepth: 1
-
    Speed_tips
-
-.. toctree::
-   :maxdepth: 1
-
    Speed_packages
+   Speed_gpu
+   Speed_intel
+   Speed_kokkos
+   Speed_omp
+   Speed_opt
    Speed_compare
 
 END_RST -->
@@ -52,10 +49,8 @@ END_RST -->
 <!-- HTML_ONLY -->
 
 "Benchmarks"_Speed_bench.html
-"Measuring performance"_Speed_measure.html :all(b)
-
-"General tips"_Speed_tips.html :all(b)
-
+"Measuring performance"_Speed_measure.html
+"General tips"_Speed_tips.html
 "Accelerator packages"_Speed_packages.html
 "GPU package"_Speed_gpu.html
 "USER-INTEL package"_Speed_intel.html
-- 
GitLab


From 2137668c359201155be02be944a1c33206d0ee8d Mon Sep 17 00:00:00 2001
From: Christoph Junghans <junghans@lanl.gov>
Date: Wed, 15 Aug 2018 16:26:54 -0600
Subject: [PATCH 220/243] cmake: convert FFT and INTEL_ARCH

---
 cmake/CMakeLists.txt | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 12a496cc9f..9d816afa95 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -251,6 +251,7 @@ if(PKG_KSPACE)
   set(FFT_VALUES KISS ${FFTW} MKL)
   set_property(CACHE FFT PROPERTY STRINGS ${FFT_VALUES})
   validate_option(FFT FFT_VALUES)
+  string(TOUPPER ${FFT} FFT)
   if(NOT FFT STREQUAL "KISS")
     find_package(${FFT} REQUIRED)
     if(NOT FFT STREQUAL "FFTW3F")
@@ -790,6 +791,7 @@ if(PKG_USER-INTEL)
     set(INTEL_ARCH_VALUES cpu knl)
     set_property(CACHE INTEL_ARCH PROPERTY STRINGS ${INTEL_ARCH_VALUES})
     validate_option(INTEL_ARCH INTEL_ARCH_VALUES)
+    string(TOLOWER ${INTEL_ARCH} INTEL_ARCH)
 
     if(INTEL_ARCH STREQUAL "knl")
       set(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} -xHost -qopenmp -qoffload")
-- 
GitLab


From 71227cb3c6f7b96b0b0ee2549b2d17649cf4eab4 Mon Sep 17 00:00:00 2001
From: Christoph Junghans <junghans@lanl.gov>
Date: Wed, 15 Aug 2018 18:06:41 -0600
Subject: [PATCH 221/243] cmake: convert INTEL_ARCH to upper

---
 cmake/CMakeLists.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 9d816afa95..fd06070ebf 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -791,9 +791,9 @@ if(PKG_USER-INTEL)
     set(INTEL_ARCH_VALUES cpu knl)
     set_property(CACHE INTEL_ARCH PROPERTY STRINGS ${INTEL_ARCH_VALUES})
     validate_option(INTEL_ARCH INTEL_ARCH_VALUES)
-    string(TOLOWER ${INTEL_ARCH} INTEL_ARCH)
+    string(TOUPPER ${INTEL_ARCH} INTEL_ARCH)
 
-    if(INTEL_ARCH STREQUAL "knl")
+    if(INTEL_ARCH STREQUAL "CPU")
       set(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} -xHost -qopenmp -qoffload")
       set(MIC_OPTIONS "-qoffload-option,mic,compiler,\"-fp-model fast=2 -mGLOB_default_function_attrs=\\\"gather_scatter_loop_unroll=4\\\"\"")
       add_compile_options(-xMIC-AVX512 -qoffload -fno-alias -ansi-alias -restrict -qoverride-limits ${MIC_OPTIONS})
-- 
GitLab


From 481924fccc1f4610b1edc156eb341cd98bfda4d9 Mon Sep 17 00:00:00 2001
From: Christoph Junghans <christoph.junghans@gmail.com>
Date: Thu, 16 Aug 2018 05:50:10 -0600
Subject: [PATCH 222/243] Update CMakeLists.txt

---
 cmake/CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index fd06070ebf..68091e4ba7 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -793,7 +793,7 @@ if(PKG_USER-INTEL)
     validate_option(INTEL_ARCH INTEL_ARCH_VALUES)
     string(TOUPPER ${INTEL_ARCH} INTEL_ARCH)
 
-    if(INTEL_ARCH STREQUAL "CPU")
+    if(INTEL_ARCH STREQUAL "KNL")
       set(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} -xHost -qopenmp -qoffload")
       set(MIC_OPTIONS "-qoffload-option,mic,compiler,\"-fp-model fast=2 -mGLOB_default_function_attrs=\\\"gather_scatter_loop_unroll=4\\\"\"")
       add_compile_options(-xMIC-AVX512 -qoffload -fno-alias -ansi-alias -restrict -qoverride-limits ${MIC_OPTIONS})
-- 
GitLab


From 8cea92d0bd292600a9fc59e667b4fb89cba6c6bc Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Thu, 16 Aug 2018 09:24:55 -0600
Subject: [PATCH 223/243] few more formatting issues

---
 doc/src/Build_extras.txt  | 11 +++++------
 doc/src/Build_package.txt |  1 +
 doc/src/Intro_authors.txt |  2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
index a3a05ed50e..6bbf504496 100644
--- a/doc/src/Build_extras.txt
+++ b/doc/src/Build_extras.txt
@@ -25,6 +25,7 @@ You may need to tell LAMMPS where it is found on your system.
 
 This is the list of packages that may require additional steps.
 
+"COMPRESS"_#compress,
 "GPU"_#gpu,
 "KIM"_#kim,
 "KOKKOS"_#kokkos,
@@ -231,7 +232,7 @@ Pascal61 = NVIDIA Pascal generation CC 6.1 :ul
 
 For multicore CPUs using OpenMP, set these 2 variables.
 
--D KOKKOS_ARCH=archCPU         # archCPU = CPU from list above :pre
+-D KOKKOS_ARCH=archCPU         # archCPU = CPU from list above
 -D KOKKOS_ENABLE_OPENMP=yes :pre
 
 For Intel KNLs using OpenMP, set these 2 variables:
@@ -710,16 +711,14 @@ Makefile.knl files for examples.
 For CPUs:
 
 OPTFLAGS =      -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -qopt-zmm-usage=high
-CCFLAGS =	-g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload \
-                -fno-alias -ansi-alias -restrict $(OPTFLAGS)
+CCFLAGS =	-g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload -fno-alias -ansi-alias -restrict $(OPTFLAGS)
 LINKFLAGS =	-g -qopenmp $(OPTFLAGS)
 LIB =           -ltbbmalloc :pre
 
 For KNLs:
 
 OPTFLAGS =      -xMIC-AVX512 -O2 -fp-model fast=2 -no-prec-div -qoverride-limits
-CCFLAGS =	-g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload \
-                -fno-alias -ansi-alias -restrict $(OPTFLAGS)
+CCFLAGS =	-g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload -fno-alias -ansi-alias -restrict $(OPTFLAGS)
 LINKFLAGS =	-g -qopenmp $(OPTFLAGS)
 LIB =           -ltbbmalloc :pre
 
@@ -850,7 +849,7 @@ lib/quip/README file for details on how to do this.
 
 [CMake build]:
 
--D QUIP_LIBRARIES=path    # path to libquip.a (only needed if a custom location) 
+-D QUIP_LIBRARIES=path     # path to libquip.a (only needed if a custom location) :pre
 
 CMake will not download and build the QUIP library.  But once you have
 done that, a CMake build of LAMMPS with "-D PKG_USER-QUIP=yes" should
diff --git a/doc/src/Build_package.txt b/doc/src/Build_package.txt
index dc8918c884..0c7d1917de 100644
--- a/doc/src/Build_package.txt
+++ b/doc/src/Build_package.txt
@@ -36,6 +36,7 @@ steps, as explained on the "Build extras"_Build_extras.html doc page.
 These links take you to the extra instructions for those select
 packages:
 
+"COMPRESS"_Build_extras.html#compress,
 "GPU"_Build_extras.html#gpu,
 "KIM"_Build_extras.html#kim,
 "KOKKOS"_Build_extras.html#kokkos,
diff --git a/doc/src/Intro_authors.txt b/doc/src/Intro_authors.txt
index 3e9c163eb2..5d9efb3077 100644
--- a/doc/src/Intro_authors.txt
+++ b/doc/src/Intro_authors.txt
@@ -30,7 +30,7 @@ the packages they have written are somewhat unique to LAMMPS and the
 code would not be as general-purpose as it is without their expertise
 and efforts.
 
-Richard Berger (Temple U), GitHub site and Sphinx doc pages
+Richard Berger (Temple U), Python interface, GitHub site, Sphinx doc pages
 Roy Pollock (LLNL), Ewald and PPPM solvers
 Mike Brown (ORNL), brownw at ornl.gov, GPU and USER-INTEL packages
 Greg Wagner (Sandia), gjwagne at sandia.gov, MEAM package for MEAM potential
-- 
GitLab


From b55f3162f49325272eabd69cc6fd49afe86d97cf Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Thu, 16 Aug 2018 09:41:04 -0600
Subject: [PATCH 224/243] date got lost somehow

---
 doc/src/Manual.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index c4dbf0415e..189ea795a3 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -1,7 +1,7 @@
 <!-- HTML_ONLY -->
 <HEAD>
 <TITLE>LAMMPS Users Manual</TITLE>
-<META NAME="docnumber" CONTENT="2 Aug 2018 version">
+<META NAME="docnumber" CONTENT="15 Aug 2018 version">
 <META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
 <META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
 </HEAD>
@@ -21,7 +21,7 @@
 :line
 
 LAMMPS Documentation :c,h1
-2 Aug 2018 version :c,h2
+15 Aug 2018 version :c,h2
 
 "What is a LAMMPS version?"_Manual_version.html
 
-- 
GitLab


From 47f02b323a64b22d055eeda71610a759d0d1f92d Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Thu, 16 Aug 2018 12:39:48 -0400
Subject: [PATCH 225/243] Undo change, would create inconsistent tocs

---
 doc/src/Speed.txt | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/doc/src/Speed.txt b/doc/src/Speed.txt
index 17d44e8365..dd2052bac1 100644
--- a/doc/src/Speed.txt
+++ b/doc/src/Speed.txt
@@ -37,11 +37,6 @@ hardware platforms.
    Speed_measure
    Speed_tips
    Speed_packages
-   Speed_gpu
-   Speed_intel
-   Speed_kokkos
-   Speed_omp
-   Speed_opt
    Speed_compare
 
 END_RST -->
-- 
GitLab


From b7d64e0374dab74ce40df4519cda5b5f26fef97b Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Thu, 16 Aug 2018 11:55:57 -0600
Subject: [PATCH 226/243] patch 16Aug18

---
 doc/src/Manual.txt | 4 ++--
 src/version.h      | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index 189ea795a3..9bd346e8a0 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -1,7 +1,7 @@
 <!-- HTML_ONLY -->
 <HEAD>
 <TITLE>LAMMPS Users Manual</TITLE>
-<META NAME="docnumber" CONTENT="15 Aug 2018 version">
+<META NAME="docnumber" CONTENT="16 Aug 2018 version">
 <META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
 <META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
 </HEAD>
@@ -21,7 +21,7 @@
 :line
 
 LAMMPS Documentation :c,h1
-15 Aug 2018 version :c,h2
+16 Aug 2018 version :c,h2
 
 "What is a LAMMPS version?"_Manual_version.html
 
diff --git a/src/version.h b/src/version.h
index b95c259dd6..db73df1ad1 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1 +1 @@
-#define LAMMPS_VERSION "2 Aug 2018"
+#define LAMMPS_VERSION "16 Aug 2018"
-- 
GitLab


From 4c3bd3909e25095edc96c0a187e949b9a66869de Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Thu, 16 Aug 2018 18:13:24 -0400
Subject: [PATCH 227/243] Add missing source file for KOKKOS with KSPACE

---
 cmake/CMakeLists.txt | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 68091e4ba7..0d8a4894bd 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -731,6 +731,11 @@ if(PKG_KOKKOS)
                          ${KOKKOS_PKG_SOURCES_DIR}/npair_kokkos.cpp
                          ${KOKKOS_PKG_SOURCES_DIR}/domain_kokkos.cpp
                          ${KOKKOS_PKG_SOURCES_DIR}/modify_kokkos.cpp)
+
+  if(PKG_KSPACE)
+    list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/gridcomm_kokkos.cpp)
+  endif()
+
   set_property(GLOBAL PROPERTY "KOKKOS_PKG_SOURCES" "${KOKKOS_PKG_SOURCES}")
 
   # detects styles which have KOKKOS version
-- 
GitLab


From e05d4718699466351148bf28f06d20f61fa2aa4f Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 16 Aug 2018 22:33:13 -0400
Subject: [PATCH 228/243] fix typo

---
 doc/src/Manual_build.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/src/Manual_build.txt b/doc/src/Manual_build.txt
index 747a55a729..a6b881cb79 100644
--- a/doc/src/Manual_build.txt
+++ b/doc/src/Manual_build.txt
@@ -81,7 +81,7 @@ sudo yum install python3-virtualenv :pre
 
 Fedora (since version 22) :h4
 
-sudo dnf install python3-virtualenv pre
+sudo dnf install python3-virtualenv :pre
 
 MacOS X :h4
 
-- 
GitLab


From 73540e6b44caf5d1c6b33a78115888edad13569d Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 16 Aug 2018 22:33:38 -0400
Subject: [PATCH 229/243] remove unneeded comments

---
 src/USER-COLVARS/fix_colvars.h | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/src/USER-COLVARS/fix_colvars.h b/src/USER-COLVARS/fix_colvars.h
index 509eca5de3..3029ba9db5 100644
--- a/src/USER-COLVARS/fix_colvars.h
+++ b/src/USER-COLVARS/fix_colvars.h
@@ -34,7 +34,6 @@ FixStyle(colvars,FixColvars)
 #define LMP_FIX_COLVARS_H
 
 #include "fix.h"
-#include <vector>
 
 // forward declaration
 class colvarproxy_lammps;
@@ -77,13 +76,6 @@ class FixColvars : public Fix {
   int   num_coords;    // total number of atoms controlled by this fix
   tagint *taglist;     // list of all atom IDs referenced by colvars.
 
-  // TODO get rid of these
-  // std::vector<cvm::atom_pos> *coords; // coordinates of colvar atoms
-  // std::vector<cvm::rvector> *forces; // received forces of colvar atoms
-  // std::vector<cvm::rvector> *oforce; // old total forces of colvar atoms
-  // std::vector<cvm::real> *masses;
-  // std::vector<cvm::real> *charges;
-
   int   nmax;          // size of atom communication buffer.
   int   size_one;      // bytes per atom in communication buffer.
   struct commdata *comm_buf; // communication buffer
-- 
GitLab


From a8c687aee848f6822a134a94fa79f9ed48545219 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 16 Aug 2018 22:41:48 -0400
Subject: [PATCH 230/243] cleaner formatting in Sphinx for package tables

---
 doc/src/Packages_standard.txt | 52 +++++++++++++++----------------
 doc/src/Packages_user.txt     | 58 +++++++++++++++++------------------
 2 files changed, 55 insertions(+), 55 deletions(-)

diff --git a/doc/src/Packages_standard.txt b/doc/src/Packages_standard.txt
index a79caae141..55d0d616f4 100644
--- a/doc/src/Packages_standard.txt
+++ b/doc/src/Packages_standard.txt
@@ -25,42 +25,42 @@ refers to the examples/USER/atc directory.  The "Library" column
 indicates whether an extra library is needed to build and use the
 package:
 
-dash = no library
+no  = no library
 sys = system library: you likely have it on your machine
 int = internal library: provided with LAMMPS, but you may need to build it
 ext = external library: you will need to download and install it on your machine :ul
 
 Package, Description, Doc page, Example, Library
-"ASPHERE"_Packages_details.html#PKG-ASPHERE, aspherical particle models, "Howto spherical"_Howto_spherical.html, ellipse, -
-"BODY"_Packages_details.html#PKG-BODY, body-style particles, "Howto body"_Howto_body.html, body, -
-"CLASS2"_Packages_details.html#PKG-CLASS2, class 2 force fields, "pair_style lj/class2"_pair_class2.html, -, -
-"COLLOID"_Packages_details.html#PKG-COLLOID, colloidal particles, "atom_style colloid"_atom_style.html, colloid, -
-"COMPRESS"_Packages_details.html#PKG-COMPRESS, I/O compression, "dump */gz"_dump.html, -, sys
-"CORESHELL"_Packages_details.html#PKG-CORESHELL, adiabatic core/shell model, "Howto coreshell"_Howto_coreshell.html, coreshell, -
-"DIPOLE"_Packages_details.html#PKG-DIPOLE, point dipole particles, "pair_style dipole/cut"_pair_dipole.html, dipole, -
+"ASPHERE"_Packages_details.html#PKG-ASPHERE, aspherical particle models, "Howto spherical"_Howto_spherical.html, ellipse, no
+"BODY"_Packages_details.html#PKG-BODY, body-style particles, "Howto body"_Howto_body.html, body, no
+"CLASS2"_Packages_details.html#PKG-CLASS2, class 2 force fields, "pair_style lj/class2"_pair_class2.html, n/a, no
+"COLLOID"_Packages_details.html#PKG-COLLOID, colloidal particles, "atom_style colloid"_atom_style.html, colloid, no
+"COMPRESS"_Packages_details.html#PKG-COMPRESS, I/O compression, "dump */gz"_dump.html, n/a, sys
+"CORESHELL"_Packages_details.html#PKG-CORESHELL, adiabatic core/shell model, "Howto coreshell"_Howto_coreshell.html, coreshell, no
+"DIPOLE"_Packages_details.html#PKG-DIPOLE, point dipole particles, "pair_style dipole/cut"_pair_dipole.html, dipole, no
 "GPU"_Packages_details.html#PKG-GPU, GPU-enabled styles, "Section gpu"_Speed_gpu.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, int
-"GRANULAR"_Packages_details.html#PKG-GRANULAR, granular systems, "Howto granular"_Howto_granular.html, pour, -
+"GRANULAR"_Packages_details.html#PKG-GRANULAR, granular systems, "Howto granular"_Howto_granular.html, pour, no
 "KIM"_Packages_details.html#PKG-KIM, OpenKIM wrapper, "pair_style kim"_pair_kim.html, kim, ext
-"KOKKOS"_Packages_details.html#PKG-KOKKOS, Kokkos-enabled styles, "Speed kokkos"_Speed_kokkos.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
-"KSPACE"_Packages_details.html#PKG-KSPACE, long-range Coulombic solvers, "kspace_style"_kspace_style.html, peptide, -
+"KOKKOS"_Packages_details.html#PKG-KOKKOS, Kokkos-enabled styles, "Speed kokkos"_Speed_kokkos.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, no
+"KSPACE"_Packages_details.html#PKG-KSPACE, long-range Coulombic solvers, "kspace_style"_kspace_style.html, peptide, no
 "LATTE"_Packages_details.html#PKG-LATTE, quantum DFTB forces via LATTE, "fix latte"_fix_latte.html, latte, ext
-"MANYBODY"_Packages_details.html#PKG-MANYBODY, many-body potentials, "pair_style tersoff"_pair_tersoff.html, shear, -
-"MC"_Packages_details.html#PKG-MC, Monte Carlo options, "fix gcmc"_fix_gcmc.html, -, -
+"MANYBODY"_Packages_details.html#PKG-MANYBODY, many-body potentials, "pair_style tersoff"_pair_tersoff.html, shear, no
+"MC"_Packages_details.html#PKG-MC, Monte Carlo options, "fix gcmc"_fix_gcmc.html, n/a, no
 "MEAM"_Packages_details.html#PKG-MEAM, modified EAM potential, "pair_style meam"_pair_meam.html, meam, int
-"MISC"_Packages_details.html#PKG-MISC, miscellanous single-file commands, -, -, -
-"MOLECULE"_Packages_details.html#PKG-MOLECULE, molecular system force fields, "Howto bioFF"_Howto_bioFF.html, peptide, -
-"MPIIO"_Packages_details.html#PKG-MPIIO, MPI parallel I/O dump and restart, "dump"_dump.html, -, -
+"MISC"_Packages_details.html#PKG-MISC, miscellanous single-file commands, n/a, no, no
+"MOLECULE"_Packages_details.html#PKG-MOLECULE, molecular system force fields, "Howto bioFF"_Howto_bioFF.html, peptide, no
+"MPIIO"_Packages_details.html#PKG-MPIIO, MPI parallel I/O dump and restart, "dump"_dump.html, n/a, no
 "MSCG"_Packages_details.html#PKG-MSCG, multi-scale coarse-graining wrapper, "fix mscg"_fix_mscg.html, mscg, ext
-"OPT"_Packages_details.html#PKG-OPT, optimized pair styles, "Speed opt"_Speed_opt.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
-"PERI"_Packages_details.html#PKG-PERI, Peridynamics models, "pair_style peri"_pair_peri.html, peri, -
+"OPT"_Packages_details.html#PKG-OPT, optimized pair styles, "Speed opt"_Speed_opt.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, no
+"PERI"_Packages_details.html#PKG-PERI, Peridynamics models, "pair_style peri"_pair_peri.html, peri, no
 "POEMS"_Packages_details.html#PKG-POEMS, coupled rigid body motion, "fix poems"_fix_poems.html, rigid, int
 "PYTHON"_Packages_details.html#PKG-PYTHON, embed Python code in an input script, "python"_python.html, python, sys
-"QEQ"_Packages_details.html#PKG-QEQ, QEq charge equilibration, "fix qeq"_fix_qeq.html, qeq, -
+"QEQ"_Packages_details.html#PKG-QEQ, QEq charge equilibration, "fix qeq"_fix_qeq.html, qeq, no
 "REAX"_Packages_details.html#PKG-REAX, ReaxFF potential (Fortran), "pair_style reax"_pair_reax.html, reax, int
-"REPLICA"_Packages_details.html#PKG-REPLICA2, multi-replica methods, "Howto replica"_Howto_replica.html, tad, -
-"RIGID"_Packages_details.html#PKG-RIGID, rigid bodies and constraints, "fix rigid"_fix_rigid.html, rigid, -
-"SHOCK"_Packages_details.html#PKG-SHOCK, shock loading methods, "fix msst"_fix_msst.html, -, -
-"SNAP"_Packages_details.html#PKG-SNAP, quantum-fitted potential, "pair_style snap"_pair_snap.html, snap, -
-"SPIN"_Packages_details.html#PKG-SPIN, magnetic atomic spin dynamics, "Howto spins"_Howto_spins.html, SPIN, -
-"SRD"_Packages_details.html#PKG-SRD, stochastic rotation dynamics, "fix srd"_fix_srd.html, srd, -
-"VORONOI"_Packages_details.html#PKG-VORONOI, Voronoi tesselation, "compute voronoi/atom"_compute_voronoi_atom.html, -, ext :tb(ea=c,ca1=l)
+"REPLICA"_Packages_details.html#PKG-REPLICA2, multi-replica methods, "Howto replica"_Howto_replica.html, tad, no
+"RIGID"_Packages_details.html#PKG-RIGID, rigid bodies and constraints, "fix rigid"_fix_rigid.html, rigid, no
+"SHOCK"_Packages_details.html#PKG-SHOCK, shock loading methods, "fix msst"_fix_msst.html, n/a, no
+"SNAP"_Packages_details.html#PKG-SNAP, quantum-fitted potential, "pair_style snap"_pair_snap.html, snap, no
+"SPIN"_Packages_details.html#PKG-SPIN, magnetic atomic spin dynamics, "Howto spins"_Howto_spins.html, SPIN, no
+"SRD"_Packages_details.html#PKG-SRD, stochastic rotation dynamics, "fix srd"_fix_srd.html, srd, no
+"VORONOI"_Packages_details.html#PKG-VORONOI, Voronoi tesselation, "compute voronoi/atom"_compute_voronoi_atom.html, n/a, ext :tb(ea=c,ca1=l)
diff --git a/doc/src/Packages_user.txt b/doc/src/Packages_user.txt
index 7157ebead0..c1a52fd0d0 100644
--- a/doc/src/Packages_user.txt
+++ b/doc/src/Packages_user.txt
@@ -32,7 +32,7 @@ refers to the examples/USER/atc directory.  The "Library" column
 indicates whether an extra library is needed to build and use the
 package:
 
-dash = no library
+no  = no library
 sys = system library: you likely have it on your machine
 int = internal library: provided with LAMMPS, but you may need to build it
 ext = external library: you will need to download and install it on your machine :ul
@@ -40,35 +40,35 @@ ext = external library: you will need to download and install it on your machine
 Package, Description, Doc page, Example, Library
 "USER-ATC"_Packages_details.html#PKG-USER-ATC, atom-to-continuum coupling, "fix atc"_fix_atc.html, USER/atc, int
 "USER-AWPMD"_Packages_details.html#PKG-USER-AWPMD, wave-packet MD, "pair_style awpmd/cut"_pair_awpmd.html, USER/awpmd, int
-"USER-BOCS"_Packages_details.html#PKG-USER-BOCS, BOCS bottom up coarse graining, "fix bocs"_fix_bocs.html, USER/bocs, -
-"USER-CGDNA"_Packages_details.html#PKG-USER-CGDNA, coarse-grained DNA force fields, src/USER-CGDNA/README, USER/cgdna, -
-"USER-CGSDK"_Packages_details.html#PKG-USER-CGSDK, SDK coarse-graining model, "pair_style lj/sdk"_pair_sdk.html, USER/cgsdk, -
+"USER-BOCS"_Packages_details.html#PKG-USER-BOCS, BOCS bottom up coarse graining, "fix bocs"_fix_bocs.html, USER/bocs, no
+"USER-CGDNA"_Packages_details.html#PKG-USER-CGDNA, coarse-grained DNA force fields, src/USER-CGDNA/README, USER/cgdna, no
+"USER-CGSDK"_Packages_details.html#PKG-USER-CGSDK, SDK coarse-graining model, "pair_style lj/sdk"_pair_sdk.html, USER/cgsdk, no
 "USER-COLVARS"_Packages_details.html#PKG-USER-COLVARS, collective variables library, "fix colvars"_fix_colvars.html, USER/colvars, int
-"USER-DIFFRACTION"_Packages_details.html#PKG-USER-DIFFRACTION, virtual x-ray and electron diffraction,"compute xrd"_compute_xrd.html, USER/diffraction, -
-"USER-DPD"_Packages_details.html#PKG-USER-DPD, reactive dissipative particle dynamics, src/USER-DPD/README, USER/dpd, -
-"USER-DRUDE"_Packages_details.html#PKG-USER-DRUDE, Drude oscillators, "Howto drude"_Howto_drude.html, USER/drude, -
-"USER-EFF"_Packages_details.html#PKG-USER-EFF, electron force field,"pair_style eff/cut"_pair_eff.html, USER/eff, -
-"USER-FEP"_Packages_details.html#PKG-USER-FEP, free energy perturbation,"compute fep"_compute_fep.html, USER/fep, -
-"USER-H5MD"_Packages_details.html#PKG-USER-H5MD, dump output via HDF5,"dump h5md"_dump_h5md.html, -, ext
-"USER-INTEL"_Packages_details.html#PKG-USER-INTEL, optimized Intel CPU and KNL styles,"Speed intel"_Speed_intel.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
-"USER-LB"_Packages_details.html#PKG-USER-LB, Lattice Boltzmann fluid,"fix lb/fluid"_fix_lb_fluid.html, USER/lb, -
-"USER-MANIFOLD"_Packages_details.html#PKG-USER-MANIFOLD, motion on 2d surfaces,"fix manifoldforce"_fix_manifoldforce.html, USER/manifold, -
-"USER-MEAMC"_Packages_details.html#PKG-USER-MEAMC, modified EAM potential (C++), "pair_style meam/c"_pair_meam.html, meam, -
-"USER-MESO"_Packages_details.html#PKG-USER-MESO, mesoscale DPD models, "pair_style edpd"_pair_meso.html, USER/meso, -
-"USER-MGPT"_Packages_details.html#PKG-USER-MGPT, fast MGPT multi-ion potentials, "pair_style mgpt"_pair_mgpt.html, USER/mgpt, -
-"USER-MISC"_Packages_details.html#PKG-USER-MISC, single-file contributions, USER-MISC/README, USER/misc, -
-"USER-MOFFF"_Packages_details.html#PKG-USER-MOFFF, styles for "MOF-FF"_MOFplus force field, "pair_style buck6d/coul/gauss"_pair_buck6d_coul_gauss.html, USER/mofff, -
-"USER-MOLFILE"_Packages_details.html#PKG-USER-MOLFILE, "VMD"_vmd_home molfile plug-ins,"dump molfile"_dump_molfile.html, -, ext
-"USER-NETCDF"_Packages_details.html#PKG-USER-NETCDF, dump output via NetCDF,"dump netcdf"_dump_netcdf.html, -, ext
-"USER-OMP"_Packages_details.html#PKG-USER-OMP, OpenMP-enabled styles,"Speed omp"_Speed_omp.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, -
-"USER-PHONON"_Packages_details.html#PKG-USER-PHONON, phonon dynamical matrix,"fix phonon"_fix_phonon.html, USER/phonon, -
+"USER-DIFFRACTION"_Packages_details.html#PKG-USER-DIFFRACTION, virtual x-ray and electron diffraction,"compute xrd"_compute_xrd.html, USER/diffraction, no
+"USER-DPD"_Packages_details.html#PKG-USER-DPD, reactive dissipative particle dynamics, src/USER-DPD/README, USER/dpd, no
+"USER-DRUDE"_Packages_details.html#PKG-USER-DRUDE, Drude oscillators, "Howto drude"_Howto_drude.html, USER/drude, no
+"USER-EFF"_Packages_details.html#PKG-USER-EFF, electron force field,"pair_style eff/cut"_pair_eff.html, USER/eff, no
+"USER-FEP"_Packages_details.html#PKG-USER-FEP, free energy perturbation,"compute fep"_compute_fep.html, USER/fep, no
+"USER-H5MD"_Packages_details.html#PKG-USER-H5MD, dump output via HDF5,"dump h5md"_dump_h5md.html, n/a, ext
+"USER-INTEL"_Packages_details.html#PKG-USER-INTEL, optimized Intel CPU and KNL styles,"Speed intel"_Speed_intel.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, no
+"USER-LB"_Packages_details.html#PKG-USER-LB, Lattice Boltzmann fluid,"fix lb/fluid"_fix_lb_fluid.html, USER/lb, no
+"USER-MANIFOLD"_Packages_details.html#PKG-USER-MANIFOLD, motion on 2d surfaces,"fix manifoldforce"_fix_manifoldforce.html, USER/manifold, no
+"USER-MEAMC"_Packages_details.html#PKG-USER-MEAMC, modified EAM potential (C++), "pair_style meam/c"_pair_meam.html, meam, no
+"USER-MESO"_Packages_details.html#PKG-USER-MESO, mesoscale DPD models, "pair_style edpd"_pair_meso.html, USER/meso, no
+"USER-MGPT"_Packages_details.html#PKG-USER-MGPT, fast MGPT multi-ion potentials, "pair_style mgpt"_pair_mgpt.html, USER/mgpt, no
+"USER-MISC"_Packages_details.html#PKG-USER-MISC, single-file contributions, USER-MISC/README, USER/misc, no
+"USER-MOFFF"_Packages_details.html#PKG-USER-MOFFF, styles for "MOF-FF"_MOFplus force field, "pair_style buck6d/coul/gauss"_pair_buck6d_coul_gauss.html, USER/mofff, no
+"USER-MOLFILE"_Packages_details.html#PKG-USER-MOLFILE, "VMD"_vmd_home molfile plug-ins,"dump molfile"_dump_molfile.html, n/a, ext
+"USER-NETCDF"_Packages_details.html#PKG-USER-NETCDF, dump output via NetCDF,"dump netcdf"_dump_netcdf.html, n/a, ext
+"USER-OMP"_Packages_details.html#PKG-USER-OMP, OpenMP-enabled styles,"Speed omp"_Speed_omp.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, no
+"USER-PHONON"_Packages_details.html#PKG-USER-PHONON, phonon dynamical matrix,"fix phonon"_fix_phonon.html, USER/phonon, no
 "USER-QMMM"_Packages_details.html#PKG-USER-QMMM, QM/MM coupling,"fix qmmm"_fix_qmmm.html, USER/qmmm, ext
-"USER-QTB"_Packages_details.html#PKG-USER-QTB, quantum nuclear effects,"fix qtb"_fix_qtb.html "fix qbmsst"_fix_qbmsst.html, qtb, -
+"USER-QTB"_Packages_details.html#PKG-USER-QTB, quantum nuclear effects,"fix qtb"_fix_qtb.html "fix qbmsst"_fix_qbmsst.html, qtb, no
 "USER-QUIP"_Packages_details.html#PKG-USER-QUIP, QUIP/libatoms interface,"pair_style quip"_pair_quip.html, USER/quip, ext
-"USER-REAXC"_Packages_details.html#PKG-USER-REAXC, ReaxFF potential (C/C++) ,"pair_style reaxc"_pair_reaxc.html, reax, -
+"USER-REAXC"_Packages_details.html#PKG-USER-REAXC, ReaxFF potential (C/C++) ,"pair_style reaxc"_pair_reaxc.html, reax, no
 "USER-SMD"_Packages_details.html#PKG-USER-SMD, smoothed Mach dynamics,"SMD User Guide"_PDF/SMD_LAMMPS_userguide.pdf, USER/smd, ext
-"USER-SMTBQ"_Packages_details.html#PKG-USER-SMTBQ, second moment tight binding QEq potential,"pair_style smtbq"_pair_smtbq.html, USER/smtbq, -
-"USER-SPH"_Packages_details.html#PKG-USER-SPH, smoothed particle hydrodynamics,"SPH User Guide"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, -
-"USER-TALLY"_Packages_details.html#PKG-USER-TALLY, pairwise tally computes,"compute XXX/tally"_compute_tally.html, USER/tally, -
-"USER-UEF"_Packages_details.html#PKG-USER-UEF, extensional flow,"fix nvt/uef"_fix_nh_uef.html, USER/uef, -
-"USER-VTK"_Packages_details.html#PKG-USER-VTK, dump output via VTK, "compute vtk"_dump_vtk.html, -, ext :tb(ea=c,ca1=l)
+"USER-SMTBQ"_Packages_details.html#PKG-USER-SMTBQ, second moment tight binding QEq potential,"pair_style smtbq"_pair_smtbq.html, USER/smtbq, no
+"USER-SPH"_Packages_details.html#PKG-USER-SPH, smoothed particle hydrodynamics,"SPH User Guide"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, no
+"USER-TALLY"_Packages_details.html#PKG-USER-TALLY, pairwise tally computes,"compute XXX/tally"_compute_tally.html, USER/tally, no
+"USER-UEF"_Packages_details.html#PKG-USER-UEF, extensional flow,"fix nvt/uef"_fix_nh_uef.html, USER/uef, no
+"USER-VTK"_Packages_details.html#PKG-USER-VTK, dump output via VTK, "compute vtk"_dump_vtk.html, n/a, ext :tb(ea=c,ca1=l)
-- 
GitLab


From f8c9ab4a3e2aa2dc16bb02740051af30a0047b7c Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Thu, 16 Aug 2018 23:47:00 -0400
Subject: [PATCH 231/243] some rewrite/update of the accelerator comparison
 page removing outdated info

---
 doc/src/Speed_compare.txt | 125 +++++++++++++++++++++++++-------------
 1 file changed, 84 insertions(+), 41 deletions(-)

diff --git a/doc/src/Speed_compare.txt b/doc/src/Speed_compare.txt
index 1a17b39c79..c93407515e 100644
--- a/doc/src/Speed_compare.txt
+++ b/doc/src/Speed_compare.txt
@@ -9,65 +9,108 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 Comparison of various accelerator packages :h3
 
-NOTE: this section still needs to be re-worked with additional KOKKOS
-and USER-INTEL information.
-
 The next section compares and contrasts the various accelerator
 options, since there are multiple ways to perform OpenMP threading,
-run on GPUs, and run on Intel Xeon Phi coprocessors.
+run on GPUs, optimize for vector units on CPUs and run on Intel
+Xeon Phi (co-)processors.
 
-All 3 of these packages accelerate a LAMMPS calculation using NVIDIA
-hardware, but they do it in different ways.
+All of these packages can accelerate a LAMMPS calculation taking
+advantage of hardware features, but they do it in different ways
+and acceleration is not always guaranteed.
 
 As a consequence, for a particular simulation on specific hardware,
-one package may be faster than the other.  We give guidelines below,
-but the best way to determine which package is faster for your input
-script is to try both of them on your machine.  See the benchmarking
+one package may be faster than the other.  We give some guidelines
+below, but the best way to determine which package is faster for your
+input script is to try multiple of them on your machine and experiment
+with available performance tuning settings.  See the benchmarking
 section below for examples where this has been done.
 
 [Guidelines for using each package optimally:]
 
-The GPU package allows you to assign multiple CPUs (cores) to a single
-GPU (a common configuration for "hybrid" nodes that contain multicore
-CPU(s) and GPU(s)) and works effectively in this mode. :ulb,l
-
-The GPU package moves per-atom data (coordinates, forces)
-back-and-forth between the CPU and GPU every timestep.  The
-KOKKOS/CUDA package only does this on timesteps when a CPU calculation
-is required (e.g. to invoke a fix or compute that is non-GPU-ized).
-Hence, if you can formulate your input script to only use GPU-ized
-fixes and computes, and avoid doing I/O too often (thermo output, dump
-file snapshots, restart files), then the data transfer cost of the
-KOKKOS/CUDA package can be very low, causing it to run faster than the
-GPU package. :l
-
-The GPU package is often faster than the KOKKOS/CUDA package, if the
-number of atoms per GPU is smaller.  The crossover point, in terms of
-atoms/GPU at which the KOKKOS/CUDA package becomes faster depends
-strongly on the pair style.  For example, for a simple Lennard Jones
+Both, the GPU and the KOKKOS package allows you to assign multiple
+MPI ranks (= CPU cores) to the same GPU. For the GPU package, this
+can lead to a speedup through better utilization of the GPU (by
+overlapping computation and data transfer) and more efficient
+computation of the non-GPU accelerated parts of LAMMPS through MPI
+parallelization, as all system data is maintained and updated on
+the host. For KOKKOS, there is less to no benefit from this, due
+to its different memory management model, which tries to retain
+data on the GPU.
+ :ulb,l
+
+The GPU package moves per-atom data (coordinates, forces, and
+(optionally) neighbor list data, if not computed on the GPU) between
+the CPU and GPU at every timestep.  The KOKKOS/CUDA package only does
+this on timesteps when a CPU calculation is required (e.g. to invoke
+a fix or compute that is non-GPU-ized). Hence, if you can formulate
+your input script to only use GPU-ized fixes and computes, and avoid
+doing I/O too often (thermo output, dump file snapshots, restart files),
+then the data transfer cost of the KOKKOS/CUDA package can be very low,
+causing it to run faster than the GPU package. :l
+
+The GPU package is often faster than the KOKKOS/CUDA package, when the
+number of atoms per GPU is on the smaller side.  The crossover point,
+in terms of atoms/GPU at which the KOKKOS/CUDA package becomes faster
+depends strongly on the pair style.  For example, for a simple Lennard Jones
 system the crossover (in single precision) is often about 50K-100K
 atoms per GPU.  When performing double precision calculations the
 crossover point can be significantly smaller. :l
 
-Both packages compute bonded interactions (bonds, angles, etc) on the
-CPU.  If the GPU package is running with several MPI processes
+Both KOKKOS and GPU package compute bonded interactions (bonds, angles,
+etc) on the CPU.  If the GPU package is running with several MPI processes
 assigned to one GPU, the cost of computing the bonded interactions is
-spread across more CPUs and hence the GPU package can run faster. :l
-
-When using the GPU package with multiple CPUs assigned to one GPU, its
-performance depends to some extent on high bandwidth between the CPUs
-and the GPU.  Hence its performance is affected if full 16 PCIe lanes
-are not available for each GPU.  In HPC environments this can be the
-case if S2050/70 servers are used, where two devices generally share
-one PCIe 2.0 16x slot.  Also many multi-GPU mainboards do not provide
-full 16 lanes to each of the PCIe 2.0 16x slots. :l
+spread across more CPUs and hence the GPU package can run faster in these
+cases. :l
+
+When using LAMMPS with multiple MPI ranks assigned to the same GPU, its
+performance depends to some extent on the available bandwidth between
+the CPUs and the GPU. This can differ significantly based on the
+available bus technology, capability of the host CPU and mainboard,
+the wiring of the buses and whether switches are used to increase the
+number of available bus slots, or if GPUs are housed in an external
+enclosure.  This can become quite complex. :l
+
+To achieve significant acceleration through GPUs, both KOKKOS and GPU
+package require capable GPUs with fast on-device memory and efficient
+data transfer rates. This requests capable upper mid-level to high-end
+(desktop) GPUs. Using lower performance GPUs (e.g. on laptops) may
+result in a slowdown instead. :l
+
+For the GPU package, specifically when running in parallel with MPI,
+if it often more efficient to exclude the PPPM kspace style from GPU
+acceleration and instead run it - concurrently with a GPU accelerated
+pair style - on the CPU. This can often be easily achieved with placing
+a {suffix off} command before and a {suffix on} command after the
+{kspace_style pppm} command. :l
+
+The KOKKOS/OpenMP and USER-OMP package have different thread management
+strategies, which should result in USER-OMP being more efficient for a
+small number of threads with increasing overhead as the number of threads
+per MPI rank grows. The KOKKOS/OpenMP kernels have less overhead in that
+case, but have lower performance with few threads. :l
+
+The USER-INTEL package contains many options and settings for achieving
+additional performance on Intel hardware (CPU and accelerator cards), but
+to unlock this potential, an Intel compiler is required. The package code
+will compile with GNU gcc, but it will not be as efficient. :l
 :ule
 
-[Differences between the two packages:]
+[Differences between the GPU and KOKKOS packages:]
 
-The GPU package accelerates only pair force, neighbor list, and PPPM
-calculations. :ulb,l
+The GPU package accelerates only pair force, neighbor list, and (parts
+of) PPPM calculations. The KOKKOS package attempts to run most of the
+calculation on the GPU, but can transparently support non-accelerated
+code (with a performance penalty due to having data transfers between
+host and GPU). :ulb,l
 
 The GPU package requires neighbor lists to be built on the CPU when using
 exclusion lists, hybrid pair styles, or a triclinic simulation box. :l
+
+The GPU package can be compiled for CUDA or OpenCL and thus supports
+both, Nvidia and AMD GPUs well. On Nvidia hardware, using CUDA is typically
+resulting in equal or better performance over OpenCL. :l
+
+OpenCL in the GPU package does theoretically also support Intel CPUs or
+Intel Xeon Phi, but the native support for those in KOKKOS (or USER-INTEL)
+is superior. :l
 :ule
-- 
GitLab


From bfaa34553645216488274f18d69db6c96c8f94c6 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Fri, 17 Aug 2018 00:09:39 -0400
Subject: [PATCH 232/243] add comment on KOKKOS compiler and platform support

---
 doc/src/Packages_details.txt | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt
index 5ab85a80c8..892774be38 100644
--- a/doc/src/Packages_details.txt
+++ b/doc/src/Packages_details.txt
@@ -382,6 +382,11 @@ switches"_Run_options.html.  Also see the "GPU"_#PKG-GPU, "OPT"_#PKG-OPT,
 have styles optimized for CPUs, KNLs, and GPUs.
 
 You must have a C++11 compatible compiler to use this package.
+KOKKOS makes extensive use of advanced C++ features, which can
+expose compiler bugs, especially when compiling for maximum
+performance at high optimization levels. Please see the file
+lib/kokkos/README for a list of compilers and their respective
+platforms, that are known to work.
 
 [Authors:] The KOKKOS package was created primarily by Christian Trott
 and Stan Moore (Sandia), with contributions from other folks as well.
-- 
GitLab


From eb7568a4fb005e131ea47491529d06de566c88f6 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Fri, 17 Aug 2018 10:13:19 -0400
Subject: [PATCH 233/243] Fixes issue #1058

---
 doc/src/Build.txt       | 2 +-
 doc/src/Commands.txt    | 2 +-
 doc/src/Manual.txt      | 2 +-
 doc/src/Run_basics.txt  | 2 +-
 doc/src/Run_options.txt | 2 +-
 doc/src/Run_output.txt  | 2 +-
 doc/src/Run_windows.txt | 2 +-
 doc/src/lammps.book     | 2 +-
 8 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/doc/src/Build.txt b/doc/src/Build.txt
index e62268b84b..1046171de1 100644
--- a/doc/src/Build.txt
+++ b/doc/src/Build.txt
@@ -1,5 +1,5 @@
 "Previous Section"_Install.html - "LAMMPS WWW Site"_lws - "LAMMPS
-Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Run.html :c
+Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Run_head.html :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
diff --git a/doc/src/Commands.txt b/doc/src/Commands.txt
index 84eac285f7..a1a94c6d29 100644
--- a/doc/src/Commands.txt
+++ b/doc/src/Commands.txt
@@ -1,4 +1,4 @@
-"Previous Section"_Run.html - "LAMMPS WWW Site"_lws -
+"Previous Section"_Run_head.html - "LAMMPS WWW Site"_lws -
 "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
 Section"_Packages.html :c
 
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index 9bd346e8a0..e63032f03b 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -112,7 +112,7 @@ END_RST -->
 "Introduction"_Intro.html :olb,l
 "Install LAMMPS"_Install.html :l
 "Build LAMMPS"_Build.html :l
-"Run LAMMPS"_Run.html :l
+"Run LAMMPS"_Run_head.html :l
 "Commands"_Commands.html :l
 "Optional packages"_Packages.html :l
 "Accelerate performance"_Speed.html :l
diff --git a/doc/src/Run_basics.txt b/doc/src/Run_basics.txt
index c83d17d6a9..02139a8c69 100644
--- a/doc/src/Run_basics.txt
+++ b/doc/src/Run_basics.txt
@@ -1,4 +1,4 @@
-"Higher level section"_Run.html - "LAMMPS WWW Site"_lws - "LAMMPS
+"Higher level section"_Run_head.html - "LAMMPS WWW Site"_lws - "LAMMPS
 Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
diff --git a/doc/src/Run_options.txt b/doc/src/Run_options.txt
index 0704e3b619..9c862d7b8e 100644
--- a/doc/src/Run_options.txt
+++ b/doc/src/Run_options.txt
@@ -1,4 +1,4 @@
-"Higher level section"_Run.html - "LAMMPS WWW Site"_lws - "LAMMPS
+"Higher level section"_Run_head.html - "LAMMPS WWW Site"_lws - "LAMMPS
 Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
diff --git a/doc/src/Run_output.txt b/doc/src/Run_output.txt
index a534ae7c7b..7d5a9e6ae6 100644
--- a/doc/src/Run_output.txt
+++ b/doc/src/Run_output.txt
@@ -1,4 +1,4 @@
-"Higher level section"_Run.html - "LAMMPS WWW Site"_lws - "LAMMPS
+"Higher level section"_Run_head.html - "LAMMPS WWW Site"_lws - "LAMMPS
 Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
diff --git a/doc/src/Run_windows.txt b/doc/src/Run_windows.txt
index 1151a4a2bb..2b93cc7d49 100644
--- a/doc/src/Run_windows.txt
+++ b/doc/src/Run_windows.txt
@@ -1,4 +1,4 @@
-"Higher level section"_Run.html - "LAMMPS WWW Site"_lws - "LAMMPS
+"Higher level section"_Run_head.html - "LAMMPS WWW Site"_lws - "LAMMPS
 Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index c961004f83..f1ff39d80b 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -25,7 +25,7 @@ Build_basics.html
 Build_settings.html
 Build_package.html
 Build_extras.html
-Run.html
+Run_head.html
 Run_basics.html
 Run_options.html
 Run_output.html
-- 
GitLab


From c0544ba346b78deae7f704a59b32657d37ba8d94 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Fri, 17 Aug 2018 10:34:17 -0400
Subject: [PATCH 234/243] Actually rename the file

---
 doc/src/Manual.txt                | 2 +-
 doc/src/{Run.txt => Run_head.txt} | 0
 2 files changed, 1 insertion(+), 1 deletion(-)
 rename doc/src/{Run.txt => Run_head.txt} (100%)

diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index e63032f03b..30e1864106 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -74,7 +74,7 @@ every LAMMPS command.
    Intro
    Install
    Build
-   Run
+   Run_head
    Commands
    Packages
    Speed
diff --git a/doc/src/Run.txt b/doc/src/Run_head.txt
similarity index 100%
rename from doc/src/Run.txt
rename to doc/src/Run_head.txt
-- 
GitLab


From 7dac513235d2ca9ca23165960620fccfb9c13ee0 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Fri, 17 Aug 2018 09:15:21 -0600
Subject: [PATCH 235/243] doc typos and push author details back to website

---
 README                        |  15 +-
 doc/src/Build_cmake.txt       |   8 +-
 doc/src/Build_extras.txt      |   2 +-
 doc/src/Build_package.txt     |   2 +-
 doc/src/Howto_diffusion.txt   |   2 +-
 doc/src/Howto_dispersion.txt  |   2 +-
 doc/src/Howto_temperature.txt |   2 +-
 doc/src/Intro_authors.txt     | 364 +++-------------------------------
 8 files changed, 44 insertions(+), 353 deletions(-)

diff --git a/README b/README
index 784b1cb13e..680986bf61 100644
--- a/README
+++ b/README
@@ -36,7 +36,14 @@ tools			   pre- and post-processing tools
 
 Point your browser at any of these files to get started:
 
-doc/Manual.html	           the LAMMPS manual
-doc/Section_intro.html	   hi-level introduction to LAMMPS
-doc/Section_start.html	   how to build and use LAMMPS
-doc/Developer.pdf          LAMMPS developer guide
+http://lammps.sandia.gov/doc/Manual.html         the LAMMPS manual
+http://lammps.sandia.gov/doc/Intro.html          hi-level introduction
+http://lammps.sandia.gov/doc/Build.html          how to build LAMMPS
+http://lammps.sandia.gov/doc/Run_head.html       how to run LAMMPS
+http://lammps.sandia.gov/doc/Developer.pdf       LAMMPS developer guide
+
+You can also create these doc pages locally:
+
+% cd doc
+% make html                # creates HTML pages in doc/html
+% make pdf                 # creates Manual.pdf and Developer.pdf
diff --git a/doc/src/Build_cmake.txt b/doc/src/Build_cmake.txt
index c42bb21c7e..38765c3d4e 100644
--- a/doc/src/Build_cmake.txt
+++ b/doc/src/Build_cmake.txt
@@ -13,12 +13,10 @@ This page is a short summary of how to use CMake to build LAMMPS.
 Details on CMake variables that enable specific LAMMPS build options
 are given on the pages linked to from the "Build"_Build.html doc page.
 
-Richard Berger (Temple U) has also written a more comprehensive guide
+Richard Berger (Temple U) has also written a "more comprehensive
+guide"_https://github.com/lammps/lammps/blob/master/cmake/README.md
 for how to use CMake to build LAMMPS.  If you are new to CMake it is a
-good place to start:
-
-"Bulding LAMMPS using
-CMake"_https://github.com/lammps/lammps/blob/master/cmake/README.md
+good place to start.
 
 :line
 
diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
index 6bbf504496..67c84e54b1 100644
--- a/doc/src/Build_extras.txt
+++ b/doc/src/Build_extras.txt
@@ -48,7 +48,7 @@ This is the list of packages that may require additional steps.
 "USER-QMMM"_#user-qmmm,
 "USER-QUIP"_#user-quip,
 "USER-SMD"_#user-smd,
-"USER-VTK"_#user-vtk :tb(c=6,ea=c)
+"USER-VTK"_#user-vtk :tb(c=6,ea=c,a=l)
 
 :line
 
diff --git a/doc/src/Build_package.txt b/doc/src/Build_package.txt
index 0c7d1917de..4f71e9eb18 100644
--- a/doc/src/Build_package.txt
+++ b/doc/src/Build_package.txt
@@ -59,7 +59,7 @@ packages:
 "USER-QMMM"_Build_extras.html#user-qmmm,
 "USER-QUIP"_Build_extras.html#user-quip,
 "USER-SMD"_Build_extras.html#user-smd,
-"USER-VTK"_Build_extras.html#user-vtk :tb(c=6,ea=c)
+"USER-VTK"_Build_extras.html#user-vtk :tb(c=6,ea=c,a=l)
 
 The mechanism for including packages is simple but different for CMake
 versus make.
diff --git a/doc/src/Howto_diffusion.txt b/doc/src/Howto_diffusion.txt
index 401c1e359c..6c920c9bc3 100644
--- a/doc/src/Howto_diffusion.txt
+++ b/doc/src/Howto_diffusion.txt
@@ -7,7 +7,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :line
 
-Calculate a diffusion coefficient :h3
+Calculate diffusion coefficients :h3
 
 The diffusion coefficient D of a material can be measured in at least
 2 ways using various options in LAMMPS.  See the examples/DIFFUSE
diff --git a/doc/src/Howto_dispersion.txt b/doc/src/Howto_dispersion.txt
index 4ea286258e..8a5953d84d 100644
--- a/doc/src/Howto_dispersion.txt
+++ b/doc/src/Howto_dispersion.txt
@@ -7,7 +7,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :line
 
-Long-raage dispersion settings :h3
+Long-range dispersion settings :h3
 
 The PPPM method computes interactions by splitting the pair potential
 into two parts, one of which is computed in a normal pairwise fashion,
diff --git a/doc/src/Howto_temperature.txt b/doc/src/Howto_temperature.txt
index 8a9e262da1..896cc96a40 100644
--- a/doc/src/Howto_temperature.txt
+++ b/doc/src/Howto_temperature.txt
@@ -7,7 +7,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :line
 
-Calcalate temperature :h3
+Calculate temperature :h3
 
 Temperature is computed as kinetic energy divided by some number of
 degrees of freedom (and the Boltzmann constant).  Since kinetic energy
diff --git a/doc/src/Intro_authors.txt b/doc/src/Intro_authors.txt
index 5d9efb3077..d6258f85a0 100644
--- a/doc/src/Intro_authors.txt
+++ b/doc/src/Intro_authors.txt
@@ -7,7 +7,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :line
 
-LAMMPS authors :h3
+Authors of LAMMPS :h3
 
 The primary LAMMPS developers are at Sandia National Labs and Temple
 University:
@@ -15,7 +15,8 @@ University:
 "Steve Plimpton"_sjp, sjplimp at sandia.gov
 Aidan Thompson, athomps at sandia.gov
 Stan Moore, stamoor at sandia.gov
-Axel Kohlmeyer, akohlmey at gmail.com :ul
+Axel Kohlmeyer, akohlmey at gmail.com
+Richard Berger, richard.berger at temple.edu :ul
 
 :link(sjp,http://www.cs.sandia.gov/~sjplimp)
 
@@ -24,26 +25,30 @@ and Ray Shan, now at Materials Design.
 
 :line
 
-The following folks are responsible for significant contributions to
-the code, or other aspects of the LAMMPS development effort.  Many of
-the packages they have written are somewhat unique to LAMMPS and the
-code would not be as general-purpose as it is without their expertise
-and efforts.
+The "Authors page"_http://lammps.sandia.gov/authors.html of the
+"LAMMPS website"_lws has a comprhensive list of all the individuals who
+have contributed code for a new feature or command or tool to LAMMPS.
 
-Richard Berger (Temple U), Python interface, GitHub site, Sphinx doc pages
+:line
+
+The following folks deserve special recognition.  Many of the packages
+they have written are unique for an MD code and LAMMPS would not be as
+general-purpose as it is without their expertise and efforts.
+
+Metin Aktulga (MSU), USER-REAXC package for C version of ReaxFF
+Mike Brown (Intel), GPU and USER-INTEL packages
+Colin Denniston (U Western Ontario), USER-LB package
+Georg Ganzenmuller (EMI), USER-SMD and USER-SPH packages
+Andres Jaramillo-Botero (Caltech), USER-EFF package for electron force field
+Reese Jones (Sandia) and colleagues, USER-ATC package for atom/continuum coupling
+Christoph Kloss (DCS Computing), LIGGGHTS code for granular materials, built on top of LAMMPS
+Rudra Mukherjee (JPL), POEMS package for articulated rigid body motion
+Trung Ngyuen (Northwestern U), GPU and RIGID and BODY packages
+Mike Parks (Sandia), PERI package for Peridynamics
 Roy Pollock (LLNL), Ewald and PPPM solvers
-Mike Brown (ORNL), brownw at ornl.gov, GPU and USER-INTEL packages
-Greg Wagner (Sandia), gjwagne at sandia.gov, MEAM package for MEAM potential
-Mike Parks (Sandia), mlparks at sandia.gov, PERI package for Peridynamics
-Rudra Mukherjee (JPL), Rudranarayan.M.Mukherjee at jpl.nasa.gov, POEMS package for articulated rigid body motion
-Reese Jones (Sandia) and collaborators, rjones at sandia.gov, USER-ATC package for atom/continuum coupling
-Ilya Valuev (JIHT), valuev at physik.hu-berlin.de, USER-AWPMD package for wave-packet MD
-Christian Trott (U Tech Ilmenau), christian.trott at tu-ilmenau.de, USER-CUDA and KOKKOS packages
-Andres Jaramillo-Botero (Caltech), ajaramil at wag.caltech.edu, USER-EFF package for electron force field
-Christoph Kloss (JKU), Christoph.Kloss at jku.at, USER-LIGGGHTS package for granular models and granular/fluid coupling
-Metin Aktulga (LBL), hmaktulga at lbl.gov, USER-REAXC package for C version of ReaxFF
-Georg Gunzenmueller (EMI), georg.ganzenmueller at emi.fhg.de, USER-SMD and USER-SPH packages
-Colin Denniston (U Western Ontario), cdennist at uwo.ca, USER-LB package :ul
+Christian Trott (Sandia), USER-CUDA and KOKKOS packages
+Ilya Valuev (JIHT), USER-AWPMD package for wave-packet MD
+Greg Wagner (Northwestern U), MEAM package for MEAM potential :ul
 
 :line
 
@@ -58,322 +63,3 @@ Terry Stouch (Lexicon Pharmaceuticals, formerly at Bristol Myers Squibb)
 Steve Lustig (Dupont)
 Jim Belak and Roy Pollock (LLNL) :ul
 
-:line
-
-Here is a timeline for when various individuals contributed to a new
-feature or command or tool added to LAMMPS:
-
-Aug18 : CMake build option for LAMMPS : Christoph Junghans (LANL), Richard Berger, and Axel Kohlmeyer (Temple U)
-Jul18 : DEM polygonal and polyhedron particles : Trung Nguyen (Northwestern U)
-Jun18 : SPIN package : Julien Tranchida (Sandia and CEA)
-Jun18 : compute entropy/atom : Pablo Piaggi (EPLF, Switzerland)
-May18 : fix bond/react : Jake Gissinger (CU Boulder)
-Apr18 : USER-BOCS package : Nicholas Dunn and Michael DeLyser (Penn State U)
-Mar18: pair coul/shield, kolmogorov/crespi/full, ilp/graphene/hbn : Wengen Ouyang (Tel Aviv U) 
-Feb18 : pair lj/cut/coul/wolf : Vishal Boddu (U of Erlangen-Nuremberg)
-Feb18 : USER-MOFFF package : Hendrik Heenen (Technical U of Munich) and Rochus Schmid (Ruhr-University Bochum)
-Feb18 : pair ufm : Rodolfo Paula Leite and Maurice de Koning (Unicamp/Brazil)
-Dec17 : fix python/move : Richard Berger (Temple U)
-Nov17 : pair extep : Jaap Kroes (Radboud U)
-Oct17 : USER-UEF package : David Nicholson (MIT)
-Oct17 : fix rhok : Ulf Pederson (Roskilde U)
-Oct17 : bond gromos : Axel Kohlmeyer (Temple U)
-Oct17 : pair born/coul/wolf/cs and coul/wolf/cs : Vishal Boddu
-Sep17 : fix latte : Christian Negre (LANL)
-Sep17 : temper_npt : Amulya Pervaje and Cody Addington (NCSU)
-Aug17 : USER-MESO package : Zhen Li (Brown University)
-Aug17 : compute aggregate/atom & fragment/atom : Axel Kohlmeyer (Temple U)
-Jul17 : pair meam/c : Sebastian Hutter (Otto-von-Guericke University)
-Jun17 : pair reaxc/omp : Metin Aktulga (MSU) and Axel Kohlmeyer (Temple U)
-Jun17 : pair vashishita/gpu : Anders Hafreager (UiO)
-Jun17 : kspace pppm/disp/intel and pair lj/long/coul/long/intel : Mike Brown (Intel) and William McDoniel (RWTH Aachen U)
-Jun17 : compute cnp/atom : Paulo Branicio (USC)
-May17 : fix python and pair python : Richard Berger (Temple U)
-May17 : pair edip/multi : Chao Jiang (U Wisconsin)
-May17 : pair gw and gw/zbl : German Samolyuk (ORNL)
-Mar17 : pair charmm fsw and fsh : Robert Meissner & Lucio Colombi Ciacchi (Bremen U), Robert Latour (Clemson U)
-Mar17 : pair momb : Ya Zhou, Kristen Fichthorn, and Tonnam Balankura (PSU)
-Mar17 : fix filter/corotate : Lukas Fath (KIT)
-Mar17 : pair kolmogorov/crespi/z : Jaap Kroes (Radboud Universiteit)
-Feb17 : Kokkos versions of the class2 bond/angle/dihedral/improper : Ray Shan (Materials Design)
-Jan17 : USER-CGDNA package : Oliver Henrich (U Edinburgh)
-Jan17 : fix mscg : Lauren Abbott (Sandia)
-Nov16 : temper/grem and fix grem : David Stelter (BU), Edyta Malolepsza (Broad Institute), Tom Keyes (BU)
-Nov16 : pair agni : Axel Kohlmeyer (Temple U) and Venkatesh Botu
-Nov16 : pair tersoff/mod.c : Ganga P Purja Pun (George Mason University)
-Nov16 : pair born/coul/dsf and pair born/coul/dsf/cs : Ariel Lozano
-Nov16 : fix reaxc/species/kk & fix reaxc/bonds/kk : Stan Moore (Sandia)
-Oct16 : fix wall/gran/region : Dan Bolintineanu (Sandia)
-Sep16 : weight options for balance & fix balance : Axel Kohlmeyer (Temple U) & Iain Bethune (EPCC)
-Sep16 : fix cmap : Xiaohu Hu (ORNL), David Hyde-Volpe & Tigran Abramyan & Robert Latour (Clemson U), Chris Lorenz (Kings College, London)
-Sep16 : pair vashishta/table : Anders Hafreager (U Oslo)
-Sep16 : kspace pppm/kk : Stan Moore (Sandia)
-Aug16 : fix flow/gauss : Steve Strong and Joel Eaves (U Colorado)
-Aug16 : fix controller : Aidan Thompson (Sandia)
-Jul16 : dipole integration by DLM method : Iain Bethune (EPCC)
-Jul16 : dihedral spherical : Andrew Jewett
-Jun16 : pair reax/c/kk : Ray Shan (Materials Design), Stan Moore (Sandia)
-Jun16 : fix orient/bcc : Tegar Wicaksono (UBC) 
-Jun16 : fix ehex : Peter Wirnsberger (University of Cambridge)
-Jun16 : reactive DPD extensions to USER-DPD : James Larentzos (ARL), Timothy Mattox (Engility Corp), John Brennan (ARL), Christopher Stone (Computational Science & Engineering, LLC)
-May16 : USER-MANIFOLD package : Stefan Paquay (Eindhoven U of Tech, The Netherlands)
-Apr16 : write_coeff : Axel Kohlmeyer (Temple U)
-Apr16 : pair morse/soft : Stefan Paquay (Eindhoven U of Tech, The Netherlands)
-Apr16 : compute dipole/chunk : Axel Kohlmeyer (Temple U)
-Apr16 : bond write : Axel Kohlmeyer (Temple U)
-Mar16 : pair morse/smooth/linear : Stefan Paquay (Eindhoven U of Tech, The Netherlands)
-Feb16 : pair/bond/angle/dihedral/improper zero : Carsten Svaneborg (SDU)
-Feb16 : dump custom/vtk : Richard Berger (JKU) and Daniel Queteschiner (DCS Computing)
-Feb16 : fix (nvt/npt/nph)/body and compute temp/body : Trung Nguyen
-Feb16 : USER-DPD package : James Larentzos (ARL), Timothy Mattox (Engility Corp), John Brennan (ARL)
-Dec15 : fix qeq/fire : Ray Shan (Sandia)
-Dec15 : pair lj/mdf, pair lennard/mdf, pair buck/mdf, improper distance : Paolo Raiteri (Curtin University)
-Nov15 : compute orientorder/atom : Aidan Thompson (Sandia) and Axel Kohlmeyer (U Temple)
-Nov15 : compute hexorder/atom : Aidan Thompson (Sandia)
-Oct15 : displace_atoms variable option : Reese Jones (Sandia)
-Oct15 : pair mgpt & USER-MGPT package : Tomas Oppelstrup and John Moriarty (LLNL)
-Oct15 : pair smtbq & USER-SMTBQ package : Nicolas Salles, Emile Maras, Olivier Politano, and Robert Tetot (LAAS-CNRS)
-Oct15 : fix ave/correlate/long command : Jorge Ramirez (UPM) and Alexei Likhtman (U Reading)
-Oct15 : pair vashishta command : Aidan Thompson (Sandia) and Yongnan Xiong (HNU)
-Aug15 : USER-TALLY package : Axel Kohlmeyer (Temple U)
-Aug15 : timer command : Axel Kohlmeyer (Temple U)
-Aug15 : USER-H5MD package : Pierre de Buyl (KU Leuven)
-Aug15 : COMPRESS package : Axel Kohlmeyer (Temple U)
-Aug15 : USER-SMD package : Georg Gunzenmueller (EMI)
-Jul15 : new HTML format for "doc pages"_Manual.html with search option : Richard Berger (JKU)
-Jul15 : rRESPA with pair hybrid : Sam Genheden (U of Southampton)
-Jul15 : pair_modify special : Axel Kohlmeyer (Temple U)
-Jul15 : pair polymorphic : Xiaowang Zhou and Reese Jones (Sandia)
-Jul15 : USER-DRUDE package : Alain Dequidt and Agilio Padua (U Blaise Pascal Clermont-Ferrand) and Julien Devemy (CNRS)
-Jul15 : USER-QTB package : Yuan Shen, Tingting Qi, and Evan Reed (Stanford U)
-Jul15 : USER-DIFFRACTION package : Shawn Coleman (ARL)
-Mar15 : fix temp/csld : Axel Kohlmeyer (Temple U)
-Mar15 : CORESHELL package : Hendrik Heenen (Technical University of Munich)
-Feb15 : pair quip for GAP and other potentials : Albert Bartok-Partay (U Cambridge)
-Feb15 : pair coul/streitz for Streitz-Mintmire potential : Ray Shan (Sandia)
-Feb15 : fix tfmc : Kristof Bal (U of Antwerp) 
-Feb15 : fix ttm/mod : Sergey Starikov and Vasily Pisarev (JIHT of RAS)
-Jan15 : fix atom/swap for MC swaps of atom types/charge : Paul Crozier (Sandia)
-Nov14 : fix pimd for path-integral MD : Chris Knight and Yuxing Peng (U Chicago)
-Nov14 : fix gle and fix ipi for path-integral MD : Michele Ceriotti (EPFL)
-Nov14 : pair style srp : Tim Sirk (ARL) and Pieter in 't Veld (BASF) 
-Nov14 : fix ave/spatial/sphere : Niall Jackson (Imperial College)
-Sep14 : QEQ package and several fix qeq/variant styles : Ray Shan (Sandia)
-Sep14 : SNAP package and pair style : Aidan Thompson (Sandia) and collaborators
-Aug14 : USER-INTEL package : Mike Brown (Intel)
-May14 : KOKKOS pacakge : Christian Trott and Carter Edwards (Sandia)
-May14 : USER-FEP pacakge : Agilio Padua (U Blaise Pascal Clermont-Ferrand)
-Apr14 : fix rigid/small NVE/NVT/NPH/NPT : Trung Nguyen (ORNL)
-Apr14 : fix qmmm for QM/MM coupling : Axel Kohlmeyer (Temple U)
-Mar14 : kspace_modify collective for faster FFTs on BG/Q : Paul Coffman (IBM)
-Mar14 : fix temp/csvr and fix oneway : Axel Kohlmeyer (Temple U)
-Feb14 : pair peri/eps, compute dilatation/atom, compute plasticity/atom : Rezwanur Rahman and John Foster (UTSA)
-Jan14 : MPI-IO options for dump and restart files : Paul Coffman (IBM)
-Nov13 : USER-LB package for Lattice Boltzmann : Francis Mackay and Colin Denniston (U Western Ontario)
-Nov13 : fix ti/rs and ti/spring : Rodrigo Freitas (UC Berkeley)
-Nov13 : pair comb3 : Ray Shan (Sandia), Tao Liang and Dundar Yilmaz (U Florida)
-Nov13 : write_dump and dump movie : Axel Kohlmeyer (Temple U)
-Sep13 : xmgrace tool : Vikas Varshney
-Sep13 : pair zbl : Aidan Thompson and Stephen Foiles (Sandia)
-Aug13 : pair nm and variants : Julien Devemy (ICCF)
-Aug13 : fix wall/lj1043 : Jonathan Lee (Sandia)
-Jul13 : pair peri/ves : Rezwan Rahman, JT Foster (U Texas San Antonio)
-Jul13 : pair tersoff/mod : Vitaly Dozhdikov (JIHT of RAS)
-Jul13 : compute basal/atom : Christopher Barrett,(Mississippi State)
-Jul13 : polybond tool : Zachary Kraus (Georgia Tech)
-Jul13 : fix gld : Stephen Bond and Andrew Baczewski (Sandia) 
-Jun13 : pair nb3b/harmonic : Todd Zeitler (Sandia)
-Jun13 : kspace_style pppm/stagger : Stan Moore (Sandia)
-Jun13 : fix tune/kspace : Paul Crozier (Sandia)
-Jun13 : long-range point dipoles : Stan Moore (Sandia) and Pieter in 't Veld (BASF)
-May13 : compute msd/nongauss : Rob Hoy
-May13 : pair list : Axel Kohlmeyer (Temple U)
-May13 : triclinic support for long-range solvers : Stan Moore (Sandia)
-Apr13 : dump_modify nfile and fileper : Christopher Knight
-Mar13 : fix phonon : Ling-Ti Kong (Shanghai Jiao Tong University)
-Mar13 : pair_style lj/cut/tip4p/cut : Pavel Elkind (Gothenburg University)
-Feb13 : immediate variables in input script : Daniel Moller (Autonomous University of Barcelona)
-Feb13 : fix species : Ray Shan (Sandia)
-Jan13 : compute voronoi/atom : Daniel Schwen
-Nov12 : pair_style mie/cut : Cassiano Aimoli Petrobras (U Notre Dame)
-Oct12 : pair_style meam/sw/spline : Robert Rudd (LLNL)
-Oct12 : angle_style fourier and fourier/simple and quartic : Loukas Peristeras (Scienomics)
-Oct12 : dihedral_style fourier and nharmonic and quadratic : Loukas Peristeras (Scienomics)
-Oct12 : improper_style fourier : Loukas Peristeras (Scienomics)
-Oct12 : kspace_style pppm/disp for 1/r^6 : Rolf Isele-Holder (Aachen University)
-Oct12 : moltemplate molecular builder tool : Andrew Jewett (UCSB)
-Sep12 : pair_style lj/cut/coul/dsf and coul/dsf : Trung Nguyen (ORNL)
-Sep12 : multi-level summation long-range solver : Stan Moore, Stephen Bond, and Paul Crozier (Sandia)
-Aug12 : fix rigid/npt and fix rigid/nph : Trung Nguyen (ORNL)
-Aug12 : Fortran wrapper on lib interface : Karl Hammond (UT, Knoxville)
-Aug12 : kspace_modify diff for 2-FFT PPPM : Rolf Isele-Holder (Aachen University), Stan Moore (BYU), Paul Crozier (Sandia)
-Jun12 : pair_style bop : Don Ward and Xiaowang Zhou (Sandia)
-Jun12 : USER-MOLFILE package : Axel Kohlmeyer (U Temple)
-Jun12 : USER-COLVARS package : Axel Kohlmeyer (U Temple)
-May12 : read_dump : Tim Sirk (ARL)
-May12 : improper_style cossq and ring : Georgios Vogiatzis (CoMSE, NTU Athens)
-May12 : pair_style lcbop : Dominik Wojt (Wroclaw University of Technology)
-Feb12 : PPPM per-atom energy/virial : Stan Moore (BYU)
-Feb12 : Ewald per-atom energy/virial : German Samolyuk (ORNL), Stan Moore (BYU)
-Feb12 : minimize forcezero linesearch : Asad Hasan (CMU)
-Feb12 : pair_style beck : Jon Zimmerman (Sandia)
-Feb12 : pair_style meam/spline : Alex Stukowski (LLNL)
-Jan12 : pair_style kim : Valeriu Smirichinski, Ryan Elliott, Ellad Tadmor (U Minn)
-Jan12 : dihedral_style table : Andrew Jewett (UCSB)
-Jan12 : angle_style dipole : Mario Orsi
-Jan12 : pair_style lj/smooth/linear : Jon Zimmerman (Sandia)
-Jan12 : fix reax/c/bond : Tzu-Ray Shan (Sandia)
-Dec11 : pair_style coul/wolf : Yongfeng Zhang (INL)
-Dec11 : run_style verlet/split : Yuxing Peng and Chris Knight (U Chicago)
-Dec11 : pair_style tersoff/table : Luca Ferraro (CASPUR)
-Nov11 : per-atom energy/stress for reax/c : Tzu-Ray Shan (Sandia)
-Oct11 : Fast Lubrication Dynamics (FLD) package: Amit Kumar, Michael Bybee, Jonathan Higdon (UIUC)
-Oct11 : USER-OMP package : Axel Kohlmeyer (Temple U)
-Sep11 : pair_style edip : Luca Ferraro (CASPUR)
-Aug11 : USER-SPH package : Georg Ganzenmuller (FIHSD, EMI, Germany)
-Aug11 : fix restrain : Craig Tenney (Sandia)
-Aug11 : USER-CUDA package : Christian Trott (U Tech Ilmenau)
-Aug11 : pair_style lj/sf : Laurent Joly (U Lyon)
-Aug11 : bond_style harmonic/shift and harmonic/shift/cut : Carsten Svaneborg
-Aug11 : angle_style cosine/shift and cosine/shift/exp : Carsten Svaneborg
-Aug11 : dihedral_style cosine/shift/exp : Carsten Svaneborg
-Aug11 : pair_style dipole/sf : Mario Orsi
-Aug11 : fix addtorque and compute temp/rotate : Laurent Joly (U Lyon)
-Aug11 : FFT support via FFTW3, MKL, ACML, KISS FFT libraries : \
-  Axel Kohlmeyer (Temple U)
-Jun11 : pair_style adp : Chris Weinberger (Sandia), Stephen Foiles (Sandia), \
-  Chandra Veer Singh (Cornell)
-Jun11 : Windows build option via Microsoft Visual Studio : \
-  Ilya Valuev (JIHT, Moscow, Russia)
-Jun11 : antisymmetrized wave packet MD : Ilya Valuev (JIHT, Moscow, Russia)
-Jun11 : dump image : Nathan Fabian (Sandia)
-May11 : pppm GPU single and double : Mike Brown (ORNL)
-May11 : pair_style lj/expand/gpu : Inderaj Bains (NVIDIA)
-2010 : pair_style reax/c and fix qeq/reax : Metin Aktulga (Purdue, now LBNL)
-- : DREIDING force field, pair_style hbond/dreiding, etc : Tod Pascal (Caltech)
-- : fix adapt and compute ti for thermodynamic integration for \
-  free energies : Sai Jayaraman (Sandia)
-- : pair_style born and gauss : Sai Jayaraman (Sandia)
-- : stochastic rotation dynamics (SRD) via fix srd : \
-  Jeremy Lechman (Sandia) and Pieter in 't Veld (BASF)
-- : ipp Perl script tool : Reese Jones (Sandia)
-- : eam_database and createatoms tools : Xiaowang Zhou (Sandia)
-- : electron force field (eFF) : Andres Jaramillo-Botero and Julius Su (Caltech)
-- : embedded ion method (EIM) potential : Xiaowang Zhou (Sandia)
-- : COMB potential with charge equilibration : Tzu-Ray Shan (U Florida)
-- : fix ave/correlate :  Benoit Leblanc, Dave Rigby, \
-  Paul Saxe (Materials Design) and Reese Jones (Sandia)
-- : pair_style peri/lps : Mike Parks (Sandia)
-- : fix msst : Lawrence Fried (LLNL), Evan Reed (LLNL, Stanford)
-- : thermo_style custom tpcpu & spcpu keywords : Axel Kohlmeyer (Temple U) 
-- : fix rigid/nve, fix rigid/nvt : Tony Sheh and Trung Dac Nguyen (U Michigan)
-- : public SVN & Git repositories for LAMMPS : \
-  Axel Kohlmeyer (Temple U) and Bill Goldman (Sandia)
-- : compute heat/flux : German Samolyuk (ORNL) and \
-  Mario Pinto (Computational Research Lab, Pune, India)
-- : pair_style yukawa/colloid : Randy Schunk (Sandia)
-- : fix wall/colloid : Jeremy Lechman (Sandia)
-2009 : fix imd for real-time viz and interactive MD : Axel Kohlmeyer (Temple Univ)
-- : concentration-dependent EAM potential : \
-  Alexander Stukowski (Technical University of Darmstadt)
-- : parallel replica dymamics (PRD) : Mike Brown (Sandia)
-- : min_style hftn : Todd Plantenga (Sandia)
-- : fix atc : Reese Jones, Jon Zimmerman, Jeremy Templeton (Sandia)
-- : dump cfg : Liang Wan (Chinese Academy of Sciences)
-- : fix nvt with Nose/Hoover chains : Andy Ballard (U Maryland)
-- : pair_style lj/cut/gpu, pair_style gayberne/gpu : Mike Brown (Sandia)
-- : pair_style lj96/cut, bond_style table, angle_style table : Chuanfu Luo
-- : fix langevin tally : Carolyn Phillips (U Michigan)
-- : compute heat/flux for Green-Kubo : Reese Jones (Sandia), \
-  Philip Howell (Siemens), Vikas Varsney (AFRL)
-- : region cone : Pim Schravendijk
-- : pair_style born/coul/long : Ahmed Ismail (Sandia)
-- : fix ttm : Paul Crozier (Sandia) and Carolyn Phillips (U Michigan)
-- : fix box/relax : Aidan Thompson and David Olmsted (Sandia)
-- : ReaxFF potential : Aidan Thompson (Sandia) and Hansohl Cho (MIT)
-- : compute cna/atom : Liang Wan (Chinese Academy of Sciences)
-2008 : Tersoff/ZBL potential : Dave Farrell (Northwestern U)
-- : peridynamics : Mike Parks (Sandia)
-- : fix smd for steered MD : Axel Kohlmeyer (U Penn)
-- : GROMACS pair potentials : Mark Stevens (Sandia)
-- : lmp2vmd tool : Axel Kohlmeyer (U Penn)
-- : compute group/group : Naveen Michaud-Agrawal (Johns Hopkins U)
-- : USER-CG-CMM package for coarse-graining : Axel Kohlmeyer (U Penn)
-- : cosine/delta angle potential : Axel Kohlmeyer (U Penn)
-- : VIM editor add-ons for LAMMPS input scripts : Gerolf Ziegenhain
-- : pair_style lubricate : Randy Schunk (Sandia)
-- : compute ackland/atom : Gerolf Ziegenhain
-- : kspace_style ewald/n, pair_style lj/coul, pair_style buck/coul : \
-  Pieter in 't Veld (Sandia)
-- : AI-REBO bond-order potential : Ase Henry (MIT)
-- : making LAMMPS a true "object" that can be instantiated \
-  multiple times, e.g. as a library : Ben FrantzDale (RPI)
-- : pymol_asphere viz tool : Mike Brown (Sandia)
-2007 : NEMD SLLOD integration : Pieter in 't Veld (Sandia)
-- : tensile and shear deformations : Pieter in 't Veld (Sandia)
-- : GayBerne potential : Mike Brown (Sandia)
-- : ellipsoidal particles : Mike Brown (Sandia)
-- : colloid potentials : Pieter in 't Veld (Sandia)
-- : fix heat : Paul Crozier and Ed Webb (Sandia)
-- : neighbor multi and communicate multi : Pieter in 't Veld (Sandia)
-- : MATLAB post-processing scripts : Arun Subramaniyan (Purdue)
-- : triclinic (non-orthogonal) simulation domains : Pieter in 't Veld (Sandia)
-- : thermo_extract tool: Vikas Varshney (Wright Patterson AFB)
-- : fix ave/time and fix ave/spatial : Pieter in 't Veld (Sandia)
-- : MEAM potential : Greg Wagner (Sandia)
-- : optimized pair potentials for lj/cut, charmm/long, eam, morse : \
-  James Fischer (High Performance Technologies), \
-  David Richie and Vincent Natoli (Stone Ridge Technologies)
-2006 : fix wall/lj126 : Mark Stevens (Sandia)
-- : Stillinger-Weber and Tersoff potentials : \
-  Aidan Thompson and Xiaowang Zhou (Sandia)
-- : region prism : Pieter in 't Veld (Sandia)
-- : fix momentum and recenter : Naveen Michaud-Agrawal (Johns Hopkins U)
-- : multi-letter variable names : Naveen Michaud-Agrawal (Johns Hopkins U)
-- : OPLS dihedral potential: Mark Stevens (Sandia)
-- : POEMS coupled rigid body integrator: Rudranarayan Mukherjee (RPI)
-- : faster pair hybrid potential: James Fischer \
-    (High Performance Technologies, Inc), Vincent Natoli and \
-    David Richie (Stone Ridge Technology)
-- : breakable bond quartic potential: Chris Lorenz and Mark Stevens (Sandia)
-- : DCD and XTC dump styles: Naveen Michaud-Agrawal (Johns Hopkins U)
-- : grain boundary orientation fix : Koenraad Janssens and \
-  David Olmsted (Sandia)
-- : pair_style lj/smooth potential : Craig Maloney (UCSB) 
-- : radius-of-gyration spring fix : Naveen Michaud-Agrawal \
-  (Johns Hopkins U) and Paul Crozier (Sandia)
-- : self spring fix : Naveen Michaud-Agrawal (Johns Hopkins U)
-- : EAM CoAl and AlCu potentials : Kwang-Reoul Lee (KIST, Korea)
-- : cosine/squared angle potential : Naveen Michaud-Agrawal (Johns Hopkins U)
-- : helix dihedral potential : Naveen Michaud-Agrawal (Johns Hopkins U) and \
-    Mark Stevens (Sandia)
-- : Finnis/Sinclair EAM: Tim Lau (MIT)
-- : dissipative particle dynamics (DPD) potentials: Kurt Smith (U Pitt) and \
-    Frank van Swol (Sandia)
-- : TIP4P potential (4-site water): Ahmed Ismail and \
-  Amalie Frischknecht (Sandia)
-2005 : uniaxial strain fix: Carsten Svaneborg (Max Planck Institute)
-- : compressed dump files: Erik Luijten (U Illinois)
-- : cylindrical indenter fix: Ravi Agrawal (Northwestern U)
-- : electric field fix: Christina Payne (Vanderbilt U)
-- : AMBER <-> LAMMPS tool: Keir Novik (Univ College London) and \
-  Vikas Varshney (U Akron)
-- : CHARMM <-> LAMMPS tool: Pieter in 't Veld and Paul Crozier (Sandia)
-- : Morse bond potential: Jeff Greathouse (Sandia)
-- : radial distribution functions: Paul Crozier & Jeff Greathouse (Sandia)
-- : force tables for long-range Coulombics: Paul Crozier (Sandia)
-2004 : targeted molecular dynamics (TMD): Paul Crozier (Sandia) and \
-  Christian Burisch (Bochum University, Germany)
-- : FFT support for SGI SCLS (Altix): Jim Shepherd (Ga Tech)
-- : lmp2cfg and lmp2traj tools: Ara Kooser, Jeff Greathouse, \
-    Andrey Kalinichev (Sandia)
-- : parallel tempering: Mark Sears (Sandia)
-earlier : granular force fields and BC: Leo Silbert & Gary Grest (Sandia)
-- : multi-harmonic dihedral potential: Mathias Putz (Sandia)
-- : embedded atom method (EAM) potential: Stephen Foiles (Sandia)
-- : msi2lmp tool: Steve Lustig (Dupont), Mike Peachey & John Carpenter (Cray)
-- : HTFN energy minimizer: Todd Plantenga (Sandia)
-- : class 2 force fields: Eric Simon (Cray)
-- : NVT/NPT integrators: Mark Stevens (Sandia)
-- : rRESPA: Mark Stevens & Paul Crozier (Sandia)
-- : Ewald and PPPM solvers: Roy Pollock (LLNL) : :tb(s=:,ca1=c)
-- 
GitLab


From 5436169c205438a54d250c7e05689a7503edbf51 Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Fri, 17 Aug 2018 09:20:44 -0600
Subject: [PATCH 236/243] change format of Howto and Tools doc pages

---
 doc/src/Howto.txt | 143 +++++++++++++++++++++++-----------------------
 doc/src/Tools.txt | 139 ++++++++++++++++++++++++--------------------
 2 files changed, 146 insertions(+), 136 deletions(-)

diff --git a/doc/src/Howto.txt b/doc/src/Howto.txt
index fc7329aad5..bcfae46579 100644
--- a/doc/src/Howto.txt
+++ b/doc/src/Howto.txt
@@ -19,80 +19,14 @@ The example input scripts included in the examples dir of the LAMMPS
 distribution and highlighted on the "Examples"_Examples.html doc page
 also show how to setup and run various kinds of simulations.
 
-<!-- RST
-
-.. toctree::
-   :maxdepth: 1
-
-   Howto_github
-   Howto_pylammps
-   Howto_bash
-
-.. toctree::
-   :maxdepth: 1
-
-   Howto_restart
-   Howto_viz
-   Howto_multiple
-   Howto_replica
-   Howto_library
-   Howto_couple
-
-.. toctree::
-   :maxdepth: 1
-
-   Howto_output
-   Howto_chunk
-
-.. toctree::
-   :maxdepth: 1
-
-   Howto_2d
-   Howto_triclinic
-   Howto_walls
-   Howto_nemd
-   Howto_granular
-   Howto_spherical
-   Howto_dispersion
-
-.. toctree::
-   :maxdepth: 1
-
-   Howto_temperature
-   Howto_thermostat
-   Howto_barostat
-   Howto_elastic
-   Howto_kappa
-   Howto_viscosity
-   Howto_diffusion
-
-.. toctree::
-   :maxdepth: 1
-
-   Howto_bioFF
-   Howto_tip3p
-   Howto_tip4p
-   Howto_spc
-
-.. toctree::
-   :maxdepth: 1
-
-   Howto_body
-   Howto_polarizable
-   Howto_coreshell
-   Howto_drude
-   Howto_drude2
-   Howto_manifold
-   Howto_spins
-
-END_RST -->
-
-<!-- HTML_ONLY -->
+Tutorials howto :h3
 
 "Using GitHub with LAMMPS"_Howto_github.html
 "PyLAMMPS interface to LAMMPS"_Howto_pylammps.html
 "Using LAMMPS with bash on Windows"_Howto_bash.html :all(b)
 
+General howto :h3
+
 "Restart a simulation"_Howto_restart.html
 "Visualize LAMMPS snapshots"_Howto_viz.html
 "Run multiple simulations from one input script"_Howto_multiple.html
@@ -100,30 +34,93 @@ END_RST -->
 "Library interface to LAMMPS"_Howto_library.html
 "Couple LAMMPS to other codes"_Howto_couple.html :all(b)
 
-"Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_Howto_output.html
-"Use chunks to calculate system properties"_Howto_chunk.html :all(b)
+Settings howto :h3
 
 "2d simulations"_Howto_2d.html
 "Triclinic (non-orthogonal) simulation boxes"_Howto_triclinic.html
+"Thermostats"_Howto_thermostat.html
+"Barostats"_Howto_barostat.html
 "Walls"_Howto_walls.html
 "NEMD simulations"_Howto_nemd.html
-"Granular models"_Howto_granular.html
-"Finite-size spherical and aspherical particles"_Howto_spherical.html
 "Long-range dispersion settings"_Howto_dispersion.html :all(b)
 
+Analysis howto :h3
+
+"Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_Howto_output.html
+"Use chunks to calculate system properties"_Howto_chunk.html
 "Calculate temperature"_Howto_temperature.html
+"Calculate elastic constants"_Howto_elastic.html
+"Calculate thermal conductivity"_Howto_kappa.html
+"Calculate viscosity"_Howto_viscosity.html
+"Calculate diffusion coefficients"_Howto_diffusion.html :all(b)
+
+Force fields howto :h3
+
+"CHARMM, AMBER, and DREIDING force fields"_Howto_bioFF.html
+"TIP3P water model"_Howto_tip3p.html
+"TIP4P water model"_Howto_tip4p.html
+"SPC water model"_Howto_spc.html :all(b)
+
+Packages howto :h3
+
+"Finite-size spherical and aspherical particles"_Howto_spherical.html
+"Granular models"_Howto_granular.html
+"Body style particles"_Howto_body.html
+"Polarizable models"_Howto_polarizable.html
+"Adiabatic core/shell model"_Howto_coreshell.html
+"Drude induced dipoles"_Howto_drude.html
+"Drude induced dipoles (extended)"_Howto_drude2.html
+"Manifolds (surfaces)"_Howto_manifold.html
+"Magnetic spins"_Howto_spins.html :all(b)
+
+<!-- HTML_ONLY -->
+
+External howto :h3
+
+"Using GitHub with LAMMPS"_Howto_github.html
+"PyLAMMPS interface to LAMMPS"_Howto_pylammps.html
+"Using LAMMPS with bash on Windows"_Howto_bash.html :all(b)
+
+General howto :h3
+
+"Restart a simulation"_Howto_restart.html
+"Visualize LAMMPS snapshots"_Howto_viz.html
+"Run multiple simulations from one input script"_Howto_multiple.html
+"Multi-replica simulations"_Howto_replica.html
+"Library interface to LAMMPS"_Howto_library.html
+"Couple LAMMPS to other codes"_Howto_couple.html :all(b)
+
+Settings howto :h3
+
+"2d simulations"_Howto_2d.html
+"Triclinic (non-orthogonal) simulation boxes"_Howto_triclinic.html
 "Thermostats"_Howto_thermostat.html
 "Barostats"_Howto_barostat.html
+"Walls"_Howto_walls.html
+"NEMD simulations"_Howto_nemd.html
+"Long-range dispersion settings"_Howto_dispersion.html :all(b)
+
+Analysis howto :h3
+
+"Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_Howto_output.html
+"Use chunks to calculate system properties"_Howto_chunk.html :all(b)
+"Calculate temperature"_Howto_temperature.html
 "Calculate elastic constants"_Howto_elastic.html
 "Calculate thermal conductivity"_Howto_kappa.html
 "Calculate viscosity"_Howto_viscosity.html
 "Calculate a diffusion coefficient"_Howto_diffusion.html :all(b)
 
+Force fields howto :h3
+
 "CHARMM, AMBER, and DREIDING force fields"_Howto_bioFF.html
 "TIP3P water model"_Howto_tip3p.html
 "TIP4P water model"_Howto_tip4p.html
 "SPC water model"_Howto_spc.html :all(b)
 
+Packages howto :h3
+
+"Finite-size spherical and aspherical particles"_Howto_spherical.html
+"Granular models"_Howto_granular.html
 "Body style particles"_Howto_body.html
 "Polarizable models"_Howto_polarizable.html
 "Adiabatic core/shell model"_Howto_coreshell.html
diff --git a/doc/src/Tools.txt b/doc/src/Tools.txt
index 8b4e779cbe..5e02e00715 100644
--- a/doc/src/Tools.txt
+++ b/doc/src/Tools.txt
@@ -43,40 +43,53 @@ to edit for your platform) which will build several of the tools which
 reside in that directory.  Most of them are larger packages in their
 own sub-directories with their own Makefiles and/or README files.
 
-"amber2lmp"_#amber
-"binary2txt"_#binary
-"ch2lmp"_#charmm
-"chain"_#chain
-"colvars"_#colvars
-"createatoms"_#createatoms
-"doxygen"_#doxygen
-"drude"_#drude
-"eam database"_#eamdb
-"eam generate"_#eamgn
-"eff"_#eff
-"emacs"_#emacs
-"fep"_#fep
-"i-pi"_#ipi
-"ipp"_#ipp
-"kate"_#kate
-"lmp2arc"_#arc
-"lmp2cfg"_#cfg
-"matlab"_#matlab
-"micelle2d"_#micelle
-"moltemplate"_#moltemplate
-"msi2lmp"_#msi
-"phonon"_#phonon
-"polybond"_#polybond
-"pymol_asphere"_#pymol
-"python"_#pythontools
-"reax"_#reax_tool
-"smd"_#smd
-"vim"_#vim
-"xmgrace"_#xmgrace :ul
-
-:line
-
-amber2lmp tool :h3,link(amber)
+:line
+
+Pre-processing tools :h3
+
+"amber2lmp"_#amber,
+"ch2lmp"_#charmm,
+"chain"_#chain,
+"createatoms"_#createatoms,
+"drude"_#drude,
+"eam database"_#eamdb,
+"eam generate"_#eamgn,
+"eff"_#eff,
+"ipp"_#ipp,
+"micelle2d"_#micelle,
+"moltemplate"_#moltemplate,
+"msi2lmp"_#msi,
+"polybond"_#polybond :tb(c=6,ea=c,a=l)
+
+Post-processing tools :h3
+
+"amber2lmp"_#amber,
+"binary2txt"_#binary,
+"ch2lmp"_#charmm,
+"colvars"_#colvars,
+"eff"_#eff,
+"fep"_#fep,
+"lmp2arc"_#arc,
+"lmp2cfg"_#cfg,
+"matlab"_#matlab,
+"phonon"_#phonon,
+"pymol_asphere"_#pymol,
+"python"_#pythontools,
+"reax"_#reax_tool,
+"smd"_#smd,
+"xmgrace"_#xmgrace :tb(c=6,ea=c,a=l)
+
+Miscellaneous tools :h3
+
+"doxygen"_#doxygen,
+"emacs"_#emacs,
+"i-pi"_#ipi,
+"kate"_#kate,
+"vim"_#vim :tb(c=5,ea=c,a=l)
+
+:line
+
+amber2lmp tool :h4,link(amber)
 
 The amber2lmp sub-directory contains two Python scripts for converting
 files back-and-forth between the AMBER MD code and LAMMPS.  See the
@@ -91,7 +104,7 @@ necessary modifications yourself.
 
 :line
 
-binary2txt tool :h3,link(binary)
+binary2txt tool :h4,link(binary)
 
 The file binary2txt.cpp converts one or more binary LAMMPS dump file
 into ASCII text files.  The syntax for running the tool is
@@ -104,7 +117,7 @@ since binary files are not compatible across all platforms.
 
 :line
 
-ch2lmp tool :h3,link(charmm)
+ch2lmp tool :h4,link(charmm)
 
 The ch2lmp sub-directory contains tools for converting files
 back-and-forth between the CHARMM MD code and LAMMPS.
@@ -129,7 +142,7 @@ Chris Lorenz (chris.lorenz at kcl.ac.uk), King's College London.
 
 :line
 
-chain tool :h3,link(chain)
+chain tool :h4,link(chain)
 
 The file chain.f creates a LAMMPS data file containing bead-spring
 polymer chains and/or monomer solvent atoms.  It uses a text file
@@ -146,7 +159,7 @@ for the "chain benchmark"_Speed_bench.html.
 
 :line
 
-colvars tools :h3,link(colvars)
+colvars tools :h4,link(colvars)
 
 The colvars directory contains a collection of tools for postprocessing
 data produced by the colvars collective variable library.
@@ -168,7 +181,7 @@ gmail.com) at ICTP, Italy.
 
 :line
 
-createatoms tool :h3,link(createatoms)
+createatoms tool :h4,link(createatoms)
 
 The tools/createatoms directory contains a Fortran program called
 createAtoms.f which can generate a variety of interesting crystal
@@ -181,7 +194,7 @@ The tool is authored by Xiaowang Zhou (Sandia), xzhou at sandia.gov.
 
 :line
 
-doxygen tool :h3,link(doxygen)
+doxygen tool :h4,link(doxygen)
 
 The tools/doxygen directory contains a shell script called
 doxygen.sh which can generate a call graph and API lists using
@@ -193,7 +206,7 @@ The tool is authored by Nandor Tamaskovics, numericalfreedom at googlemail.com.
 
 :line
 
-drude tool :h3,link(drude)
+drude tool :h4,link(drude)
 
 The tools/drude directory contains a Python script called
 polarizer.py which can add Drude oscillators to a LAMMPS
@@ -206,7 +219,7 @@ at univ-bpclermont.fr, alain.dequidt at univ-bpclermont.fr
 
 :line
 
-eam database tool :h3,link(eamdb)
+eam database tool :h4,link(eamdb)
 
 The tools/eam_database directory contains a Fortran program that will
 generate EAM alloy setfl potential files for any combination of 16
@@ -222,7 +235,7 @@ X. W. Zhou, R. A. Johnson, and H. N. G. Wadley, Phys. Rev. B, 69,
 
 :line
 
-eam generate tool :h3,link(eamgn)
+eam generate tool :h4,link(eamgn)
 
 The tools/eam_generate directory contains several one-file C programs
 that convert an analytic formula into a tabulated "embedded atom
@@ -235,7 +248,7 @@ The source files and potentials were provided by Gerolf Ziegenhain
 
 :line
 
-eff tool :h3,link(eff)
+eff tool :h4,link(eff)
 
 The tools/eff directory contains various scripts for generating
 structures and post-processing output for simulations using the
@@ -246,7 +259,7 @@ These tools were provided by Andres Jaramillo-Botero at CalTech
 
 :line
 
-emacs tool :h3,link(emacs)
+emacs tool :h4,link(emacs)
 
 The tools/emacs directory contains an Emacs Lisp add-on file for GNU Emacs 
 that enables a lammps-mode for editing input scripts when using GNU Emacs,
@@ -257,7 +270,7 @@ These tools were provided by Aidan Thompson at Sandia
 
 :line
 
-fep tool :h3,link(fep)
+fep tool :h4,link(fep)
 
 The tools/fep directory contains Python scripts useful for
 post-processing results from performing free-energy perturbation
@@ -270,7 +283,7 @@ See README file in the tools/fep directory.
 
 :line
 
-i-pi tool :h3,link(ipi)
+i-pi tool :h4,link(ipi)
 
 The tools/i-pi directory contains a version of the i-PI package, with
 all the LAMMPS-unrelated files removed.  It is provided so that it can
@@ -287,7 +300,7 @@ calculations with LAMMPS.
 
 :line
 
-ipp tool :h3,link(ipp)
+ipp tool :h4,link(ipp)
 
 The tools/ipp directory contains a Perl script ipp which can be used
 to facilitate the creation of a complicated file (say, a lammps input
@@ -301,7 +314,7 @@ tools/createatoms tool's input file.
 
 :line
 
-kate tool :h3,link(kate)
+kate tool :h4,link(kate)
 
 The file in the tools/kate directory is an add-on to the Kate editor
 in the KDE suite that allow syntax highlighting of LAMMPS input
@@ -312,7 +325,7 @@ The file was provided by Alessandro Luigi Sellerio
 
 :line
 
-lmp2arc tool :h3,link(arc)
+lmp2arc tool :h4,link(arc)
 
 The lmp2arc sub-directory contains a tool for converting LAMMPS output
 files to the format for Accelrys' Insight MD code (formerly
@@ -328,7 +341,7 @@ Greathouse at Sandia (jagreat at sandia.gov).
 
 :line
 
-lmp2cfg tool :h3,link(cfg)
+lmp2cfg tool :h4,link(cfg)
 
 The lmp2cfg sub-directory contains a tool for converting LAMMPS output
 files into a series of *.cfg files which can be read into the
@@ -339,7 +352,7 @@ This tool was written by Ara Kooser at Sandia (askoose at sandia.gov).
 
 :line
 
-matlab tool :h3,link(matlab)
+matlab tool :h4,link(matlab)
 
 The matlab sub-directory contains several "MATLAB"_matlabhome scripts for
 post-processing LAMMPS output.  The scripts include readers for log
@@ -357,7 +370,7 @@ These scripts were written by Arun Subramaniyan at Purdue Univ
 
 :line
 
-micelle2d tool :h3,link(micelle)
+micelle2d tool :h4,link(micelle)
 
 The file micelle2d.f creates a LAMMPS data file containing short lipid
 chains in a monomer solution.  It uses a text file containing lipid
@@ -374,7 +387,7 @@ definition file.  This tool was used to create the system for the
 
 :line
 
-moltemplate tool :h3,link(moltemplate)
+moltemplate tool :h4,link(moltemplate)
 
 The moltemplate sub-directory contains a Python-based tool for
 building molecular systems based on a text-file description, and
@@ -388,7 +401,7 @@ supports it.  It has its own WWW page at
 
 :line
 
-msi2lmp tool :h3,link(msi)
+msi2lmp tool :h4,link(msi)
 
 The msi2lmp sub-directory contains a tool for creating LAMMPS template
 input and data files from BIOVIA's Materias Studio files (formerly Accelrys'
@@ -405,7 +418,7 @@ See the README file in the tools/msi2lmp folder for more information.
 
 :line
 
-phonon tool :h3,link(phonon)
+phonon tool :h4,link(phonon)
 
 The phonon sub-directory contains a post-processing tool useful for
 analyzing the output of the "fix phonon"_fix_phonon.html command in
@@ -420,7 +433,7 @@ University.
 
 :line
 
-polybond tool :h3,link(polybond)
+polybond tool :h4,link(polybond)
 
 The polybond sub-directory contains a Python-based tool useful for
 performing "programmable polymer bonding".  The Python file
@@ -434,7 +447,7 @@ This tool was written by Zachary Kraus at Georgia Tech.
 
 :line
 
-pymol_asphere tool :h3,link(pymol)
+pymol_asphere tool :h4,link(pymol)
 
 The pymol_asphere sub-directory contains a tool for converting a
 LAMMPS dump file that contains orientation info for ellipsoidal
@@ -452,7 +465,7 @@ This tool was written by Mike Brown at Sandia.
 
 :line
 
-python tool :h3,link(pythontools)
+python tool :h4,link(pythontools)
 
 The python sub-directory contains several Python scripts
 that perform common LAMMPS post-processing tasks, such as:
@@ -468,7 +481,7 @@ README for more info on Pizza.py and how to use these scripts.
 
 :line
 
-reax tool :h3,link(reax_tool)
+reax tool :h4,link(reax_tool)
 
 The reax sub-directory contains stand-alond codes that can
 post-process the output of the "fix reax/bonds"_fix_reax_bonds.html
@@ -479,7 +492,7 @@ These tools were written by Aidan Thompson at Sandia.
 
 :line
 
-smd tool :h3,link(smd)
+smd tool :h4,link(smd)
 
 The smd sub-directory contains a C++ file dump2vtk_tris.cpp and
 Makefile which can be compiled and used to convert triangle output
@@ -495,7 +508,7 @@ Ernst Mach Institute in Germany (georg.ganzenmueller at emi.fhg.de).
 
 :line
 
-vim tool :h3,link(vim)
+vim tool :h4,link(vim)
 
 The files in the tools/vim directory are add-ons to the VIM editor
 that allow easier editing of LAMMPS input scripts.  See the README.txt
@@ -506,7 +519,7 @@ ziegenhain.com)
 
 :line
 
-xmgrace tool :h3,link(xmgrace)
+xmgrace tool :h4,link(xmgrace)
 
 The files in the tools/xmgrace directory can be used to plot the
 thermodynamic data in LAMMPS log files via the xmgrace plotting
-- 
GitLab


From 703a795af851366233d700e05463ff9e59761993 Mon Sep 17 00:00:00 2001
From: Richard Berger <richard.berger@temple.edu>
Date: Mon, 20 Aug 2018 01:50:16 -0400
Subject: [PATCH 237/243] Modify Howto and Tools

- add missing TOCs in Howto section
- limit section numbering to maximum of 3 levels
- add "Tool descriptions" header
---
 doc/src/Howto.txt  | 156 +++++++++++++++++++++++++++++++--------------
 doc/src/Manual.txt |   2 +-
 doc/src/Tools.txt  |   2 +
 3 files changed, 110 insertions(+), 50 deletions(-)

diff --git a/doc/src/Howto.txt b/doc/src/Howto.txt
index bcfae46579..9d385f23a4 100644
--- a/doc/src/Howto.txt
+++ b/doc/src/Howto.txt
@@ -21,67 +21,44 @@ also show how to setup and run various kinds of simulations.
 
 Tutorials howto :h3
 
-"Using GitHub with LAMMPS"_Howto_github.html
-"PyLAMMPS interface to LAMMPS"_Howto_pylammps.html
-"Using LAMMPS with bash on Windows"_Howto_bash.html :all(b)
+<!-- RST
 
-General howto :h3
+.. toctree::
+   :name: tutorials
+   :maxdepth: 1
 
-"Restart a simulation"_Howto_restart.html
-"Visualize LAMMPS snapshots"_Howto_viz.html
-"Run multiple simulations from one input script"_Howto_multiple.html
-"Multi-replica simulations"_Howto_replica.html
-"Library interface to LAMMPS"_Howto_library.html
-"Couple LAMMPS to other codes"_Howto_couple.html :all(b)
+   Howto_github
+   Howto_pylammps
+   Howto_bash
 
-Settings howto :h3
+END_RST -->
 
-"2d simulations"_Howto_2d.html
-"Triclinic (non-orthogonal) simulation boxes"_Howto_triclinic.html
-"Thermostats"_Howto_thermostat.html
-"Barostats"_Howto_barostat.html
-"Walls"_Howto_walls.html
-"NEMD simulations"_Howto_nemd.html
-"Long-range dispersion settings"_Howto_dispersion.html :all(b)
+<!-- HTML_ONLY -->
 
-Analysis howto :h3
+"Using GitHub with LAMMPS"_Howto_github.html
+"PyLAMMPS interface to LAMMPS"_Howto_pylammps.html
+"Using LAMMPS with bash on Windows"_Howto_bash.html :all(b)
 
-"Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_Howto_output.html
-"Use chunks to calculate system properties"_Howto_chunk.html
-"Calculate temperature"_Howto_temperature.html
-"Calculate elastic constants"_Howto_elastic.html
-"Calculate thermal conductivity"_Howto_kappa.html
-"Calculate viscosity"_Howto_viscosity.html
-"Calculate diffusion coefficients"_Howto_diffusion.html :all(b)
+<!-- END_HTML_ONLY -->
 
-Force fields howto :h3
+General howto :h3
 
-"CHARMM, AMBER, and DREIDING force fields"_Howto_bioFF.html
-"TIP3P water model"_Howto_tip3p.html
-"TIP4P water model"_Howto_tip4p.html
-"SPC water model"_Howto_spc.html :all(b)
+<!-- RST
 
-Packages howto :h3
+.. toctree::
+   :name: general
+   :maxdepth: 1
 
-"Finite-size spherical and aspherical particles"_Howto_spherical.html
-"Granular models"_Howto_granular.html
-"Body style particles"_Howto_body.html
-"Polarizable models"_Howto_polarizable.html
-"Adiabatic core/shell model"_Howto_coreshell.html
-"Drude induced dipoles"_Howto_drude.html
-"Drude induced dipoles (extended)"_Howto_drude2.html
-"Manifolds (surfaces)"_Howto_manifold.html
-"Magnetic spins"_Howto_spins.html :all(b)
-
-<!-- HTML_ONLY -->
+   Howto_restart
+   Howto_viz
+   Howto_multiple
+   Howto_replica
+   Howto_library
+   Howto_couple
 
-External howto :h3
+END_RST -->
 
-"Using GitHub with LAMMPS"_Howto_github.html
-"PyLAMMPS interface to LAMMPS"_Howto_pylammps.html
-"Using LAMMPS with bash on Windows"_Howto_bash.html :all(b)
-
-General howto :h3
+<!-- HTML_ONLY -->
 
 "Restart a simulation"_Howto_restart.html
 "Visualize LAMMPS snapshots"_Howto_viz.html
@@ -90,8 +67,28 @@ General howto :h3
 "Library interface to LAMMPS"_Howto_library.html
 "Couple LAMMPS to other codes"_Howto_couple.html :all(b)
 
+<!-- END_HTML_ONLY -->
+
 Settings howto :h3
 
+<!-- RST
+
+.. toctree::
+   :name: settings
+   :maxdepth: 1
+
+   Howto_2d
+   Howto_triclinic
+   Howto_thermostat
+   Howto_barostat
+   Howto_walls
+   Howto_nemd
+   Howto_dispersion
+
+END_RST -->
+
+<!-- HTML_ONLY -->
+
 "2d simulations"_Howto_2d.html
 "Triclinic (non-orthogonal) simulation boxes"_Howto_triclinic.html
 "Thermostats"_Howto_thermostat.html
@@ -100,8 +97,29 @@ Settings howto :h3
 "NEMD simulations"_Howto_nemd.html
 "Long-range dispersion settings"_Howto_dispersion.html :all(b)
 
+<!-- END_HTML_ONLY -->
+
+
 Analysis howto :h3
 
+<!-- RST
+
+.. toctree::
+   :name: analysis
+   :maxdepth: 1
+
+   Howto_output
+   Howto_chunk
+   Howto_temperature
+   Howto_elastic
+   Howto_kappa
+   Howto_viscosity
+   Howto_diffusion
+
+END_RST -->
+
+<!-- HTML_ONLY -->
+
 "Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_Howto_output.html
 "Use chunks to calculate system properties"_Howto_chunk.html :all(b)
 "Calculate temperature"_Howto_temperature.html
@@ -110,15 +128,55 @@ Analysis howto :h3
 "Calculate viscosity"_Howto_viscosity.html
 "Calculate a diffusion coefficient"_Howto_diffusion.html :all(b)
 
+<!-- END_HTML_ONLY -->
+
 Force fields howto :h3
 
+<!-- RST
+
+.. toctree::
+   :name: force
+   :maxdepth: 1
+
+   Howto_bioFF
+   Howto_tip3p
+   Howto_tip4p
+   Howto_spc
+
+END_RST -->
+
+<!-- HTML_ONLY -->
+
 "CHARMM, AMBER, and DREIDING force fields"_Howto_bioFF.html
 "TIP3P water model"_Howto_tip3p.html
 "TIP4P water model"_Howto_tip4p.html
 "SPC water model"_Howto_spc.html :all(b)
 
+<!-- END_HTML_ONLY -->
+
 Packages howto :h3
 
+<!-- RST
+
+.. toctree::
+   :name: packages
+   :maxdepth: 1
+
+   Howto_spherical
+   Howto_granular
+   Howto_body
+   Howto_polarizable
+   Howto_coreshell
+   Howto_drude
+   Howto_drude2
+   Howto_manifold
+   Howto_spins
+
+END_RST -->
+
+
+<!-- HTML_ONLY -->
+
 "Finite-size spherical and aspherical particles"_Howto_spherical.html
 "Granular models"_Howto_granular.html
 "Body style particles"_Howto_body.html
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index 30e1864106..c5e5aff61b 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -66,7 +66,7 @@ every LAMMPS command.
 
 .. toctree::
    :maxdepth: 2
-   :numbered:
+   :numbered: 3
    :caption: User Documentation
    :name: userdoc
    :includehidden:
diff --git a/doc/src/Tools.txt b/doc/src/Tools.txt
index 5e02e00715..a9ad5032ce 100644
--- a/doc/src/Tools.txt
+++ b/doc/src/Tools.txt
@@ -89,6 +89,8 @@ Miscellaneous tools :h3
 
 :line
 
+Tool descriptions :h3
+
 amber2lmp tool :h4,link(amber)
 
 The amber2lmp sub-directory contains two Python scripts for converting
-- 
GitLab


From 353c004d6c1eda1e298208faab6b3dd609efa278 Mon Sep 17 00:00:00 2001
From: Christoph Junghans <junghans@lanl.gov>
Date: Mon, 20 Aug 2018 10:07:49 -0600
Subject: [PATCH 238/243] cmake: required v3.7 for some DOWNLOAD options

---
 cmake/CMakeLists.txt | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 0d8a4894bd..460d177c92 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -377,6 +377,9 @@ endif()
 if(PKG_LATTE)
   option(DOWNLOAD_LATTE "Download latte (instead of using the system's one)" OFF)
   if(DOWNLOAD_LATTE)
+    if (CMAKE_VERSION VERSION_LESS "3.7") # due to SOURCE_SUBDIR 
+      message(FATAL_ERROR "For downlading LATTE you need at least cmake-3.7")
+    endif()
     message(STATUS "LATTE not found - we will build our own")
     include(ExternalProject)
     ExternalProject_Add(latte_build
@@ -479,6 +482,9 @@ if(PKG_MSCG)
   find_package(GSL REQUIRED)
   option(DOWNLOAD_MSCG "Download latte (instead of using the system's one)" OFF)
   if(DOWNLOAD_MSCG)
+    if (CMAKE_VERSION VERSION_LESS "3.7") # due to SOURCE_SUBDIR 
+      message(FATAL_ERROR "For downlading LATTE you need at least cmake-3.7")
+    endif()
     include(ExternalProject)
     if(NOT LAPACK_FOUND)
       set(EXTRA_MSCG_OPTS "-DLAPACK_LIBRARIES=${CMAKE_CURRENT_BINARY_DIR}/liblinalg.a")
-- 
GitLab


From f73ffb829ba9a3b4520f8c158be45e3aa41a40cb Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Mon, 20 Aug 2018 11:20:23 -0600
Subject: [PATCH 239/243] add a needed ifort flag for LAMMPS/LATTE link

---
 lib/latte/Makefile.lammps.ifort | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/latte/Makefile.lammps.ifort b/lib/latte/Makefile.lammps.ifort
index 0491bdd8a5..b71b21cca8 100644
--- a/lib/latte/Makefile.lammps.ifort
+++ b/lib/latte/Makefile.lammps.ifort
@@ -4,9 +4,9 @@
 
 latte_SYSINC = 
 latte_SYSLIB = ../../lib/latte/filelink.o \
-               -llatte -lifcore -lsvml -lompstub -limf -lmkl_intel_lp64 \
-               -lmkl_intel_thread -lmkl_core -lmkl_intel_thread -lpthread \
-               -openmp -O0
+               -llatte -lifport -lifcore -lsvml -lompstub -limf \
+               -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core \
+               -lmkl_intel_thread -lpthread -openmp -O0
 latte_SYSPATH = -openmp -L${MKLROOT}/lib/intel64 -lmkl_lapack95_lp64 \
                 -L/opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/intel64
 
-- 
GitLab


From 639573ff8735e8c8ca68eeb22b82cf088f2d4f6d Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Mon, 20 Aug 2018 13:10:26 -0600
Subject: [PATCH 240/243] more instructions on external lib downloads, and
 CMake versions

---
 doc/src/Build_cmake.txt  |  5 +++--
 doc/src/Build_extras.txt | 46 +++++++++++++++++++++++++++++++++-------
 2 files changed, 41 insertions(+), 10 deletions(-)

diff --git a/doc/src/Build_cmake.txt b/doc/src/Build_cmake.txt
index 38765c3d4e..08c1c72180 100644
--- a/doc/src/Build_cmake.txt
+++ b/doc/src/Build_cmake.txt
@@ -79,8 +79,9 @@ directory to un-install all packages.  The purge removes all the *.h
 files auto-generated by make.
 
 You must have CMake version 2.8 or later on your system to build
-LAMMPS.  If you include the GPU or KOKKOS packages, CMake version 3.2
-or later is required.  Installation instructions for CMake are below.
+LAMMPS.  A handful of LAMMPS packages (KOKKOS, LATTE, MSCG) require a
+later version.  CMake will print a message telling you if a later
+version is required.  Installation instructions for CMake are below.
 
 After the initial build, if you edit LAMMPS source files, or add your
 own new files to the source directory, you can just re-type make from
diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt
index 67c84e54b1..5c33a0a4d4 100644
--- a/doc/src/Build_extras.txt
+++ b/doc/src/Build_extras.txt
@@ -175,8 +175,15 @@ package?" page.
 [CMake build]:
 
 -D DOWNLOAD_KIM=value    # download OpenKIM API v1 for build, value = no (default) or yes
--D KIM_LIBRARY=path      # path to KIM shared library (only needed if a custom location) 
--D KIM_INCLUDE_DIR=path  # path to KIM include directory (only needed if a custom location) :pre
+-D KIM_LIBRARY=path      # KIM library file (only needed if a custom location) 
+-D KIM_INCLUDE_DIR=path  # KIM include directory (only needed if a custom location) :pre
+
+If DOWNLOAD_KIM is set, the KIM library will be downloaded and built
+inside the CMake build directory.  If the KIM library is already on
+your system (in a location CMake cannot find it), KIM_LIBRARY is the
+filename (plus path) of the KIM library file, not the directory the
+library file is in.  KIM_INCLUDE_DIR is the directory the KIM include
+file is in.
 
 [Traditional make]:
 
@@ -296,7 +303,13 @@ library.
 [CMake build]:
 
 -D DOWNLOAD_LATTE=value    # download LATTE for build, value = no (default) or yes
--D LATTE_LIBRARY=path      # path to LATTE shared library (only needed if a custom location) :pre
+-D LATTE_LIBRARY=path      # LATTE library file (only needed if a custom location) :pre
+
+If DOWNLOAD_LATTE is set, the LATTE library will be downloaded and
+built inside the CMake build directory.  If the LATTE library is
+already on your system (in a location CMake cannot find it),
+LATTE_LIBRARY is the filename (plus path) of the LATTE library file,
+not the directory the library file is in.
 
 [Traditional make]:
 
@@ -371,8 +384,15 @@ lib/mscg/README and MSCG/Install files for more details.
 [CMake build]:
 
 -D DOWNLOAD_MSCG=value    # download MSCG for build, value = no (default) or yes
--D MSCG_LIBRARY=path      # path to MSCG shared library (only needed if a custom location) 
--D MSCG_INCLUDE_DIR=path  # path to MSCG include directory (only needed if a custom location) :pre
+-D MSCG_LIBRARY=path      # MSCG library file (only needed if a custom location) 
+-D MSCG_INCLUDE_DIR=path  # MSCG include directory (only needed if a custom location) :pre
+
+If DOWNLOAD_MSCG is set, the MSCG library will be downloaded and built
+inside the CMake build directory.  If the MSCG library is already on
+your system (in a location CMake cannot find it), MSCG_LIBRARY is the
+filename (plus path) of the MSCG library file, not the directory the
+library file is in.  MSCG_INCLUDE_DIR is the directory the MSCG
+include file is in.
 
 [Traditional make]:
 
@@ -515,8 +535,15 @@ library"_voro_home.
 [CMake build]:
 
 -D DOWNLOAD_VORO=value    # download Voro++ for build, value = no (default) or yes
--D VORO_LIBRARY=path      # (only needed if at custom location) path to VORO shared library
--D VORO_INCLUDE_DIR=path  # (only needed if at custom location) path to VORO include directory :pre
+-D VORO_LIBRARY=path      # Voro++ library file (only needed if at custom location) 
+-D VORO_INCLUDE_DIR=path  # Voro++ include directory (only needed if at custom location) :pre
+
+If DOWNLOAD_VORO is set, the Voro++ library will be downloaded and
+built inside the CMake build directory.  If the Voro++ library is
+already on your system (in a location CMake cannot find it),
+VORO_LIBRARY is the filename (plus path) of the Voro++ library file,
+not the directory the library file is in.  VORO_INCLUDE_DIR is the
+directory the Voro++ include file is in.
 
 [Traditional make]:
 
@@ -877,7 +904,10 @@ Eigen3 is a template library, so you do not need to build it.
 -D DOWNLOAD_EIGEN3            # download Eigen3, value = no (default) or yes
 -D EIGEN3_INCLUDE_DIR=path    # path to Eigen library (only needed if a custom location) :pre
 
-Set EIGEN3_INCLUDE_DIR if CMake cannot find the Eigen3 library.
+If DOWNLOAD_EIGEN3 is set, the Eigen3 library will be downloaded and
+inside the CMake build directory.  If the Eig3n3 library is already on
+your system (in a location CMake cannot find it), EIGEN3_INCLUDE_DIR
+is the directory the Eigen3++ include file is in.
 
 [Traditional make]:
 
-- 
GitLab


From 0ca0e0a93cbee9c68ede714cd9aa379af9f3773b Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Mon, 20 Aug 2018 13:36:44 -0600
Subject: [PATCH 241/243] mis-spelled word

---
 doc/src/Intro_authors.txt | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/doc/src/Intro_authors.txt b/doc/src/Intro_authors.txt
index d6258f85a0..b909265a3e 100644
--- a/doc/src/Intro_authors.txt
+++ b/doc/src/Intro_authors.txt
@@ -26,8 +26,9 @@ and Ray Shan, now at Materials Design.
 :line
 
 The "Authors page"_http://lammps.sandia.gov/authors.html of the
-"LAMMPS website"_lws has a comprhensive list of all the individuals who
-have contributed code for a new feature or command or tool to LAMMPS.
+"LAMMPS website"_lws has a comprehensive list of all the individuals
+who have contributed code for a new feature or command or tool to
+LAMMPS.
 
 :line
 
-- 
GitLab


From c719af8bcd6ae81030f2a0b655c95b4737e423cc Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Mon, 20 Aug 2018 13:42:34 -0600
Subject: [PATCH 242/243] remove wrong link optimization flag

---
 lib/latte/Makefile.lammps.ifort | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/latte/Makefile.lammps.ifort b/lib/latte/Makefile.lammps.ifort
index b71b21cca8..90010210af 100644
--- a/lib/latte/Makefile.lammps.ifort
+++ b/lib/latte/Makefile.lammps.ifort
@@ -6,7 +6,7 @@ latte_SYSINC =
 latte_SYSLIB = ../../lib/latte/filelink.o \
                -llatte -lifport -lifcore -lsvml -lompstub -limf \
                -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core \
-               -lmkl_intel_thread -lpthread -openmp -O0
+               -lmkl_intel_thread -lpthread -openmp
 latte_SYSPATH = -openmp -L${MKLROOT}/lib/intel64 -lmkl_lapack95_lp64 \
                 -L/opt/intel/composer_xe_2013_sp1.2.144/compiler/lib/intel64
 
-- 
GitLab


From f8faf4dfe22495a8e465ecb9f38ae0280422e6fe Mon Sep 17 00:00:00 2001
From: "Steven J. Plimpton" <sjplimp@singsing.sandia.gov>
Date: Mon, 20 Aug 2018 13:50:55 -0600
Subject: [PATCH 243/243] cosmetic tweak to Howto page

---
 doc/src/Howto.txt | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/doc/src/Howto.txt b/doc/src/Howto.txt
index 9d385f23a4..438ea561a1 100644
--- a/doc/src/Howto.txt
+++ b/doc/src/Howto.txt
@@ -8,14 +8,13 @@ Section"_Examples.html :c
 
 :line
 
-How to discussions :h2
+Howto discussions :h2
 
 These doc pages describe how to perform various tasks with LAMMPS,
 both for users and developers.  The
 "glossary"_http://lammps.sandia.gov website page also lists MD
-terminology with links to corresponding LAMMPS manual pages.
-
-The example input scripts included in the examples dir of the LAMMPS
+terminology with links to corresponding LAMMPS manual pages.  The
+example input scripts included in the examples dir of the LAMMPS
 distribution and highlighted on the "Examples"_Examples.html doc page
 also show how to setup and run various kinds of simulations.
 
-- 
GitLab