From b0f09063e0ee5dfdc72dba28a877b4a1c1b442d4 Mon Sep 17 00:00:00 2001
From: sjplimp <sjplimp@f3b2605a-c512-4ea7-a41b-209d697bcdaa>
Date: Thu, 20 Oct 2011 15:01:56 +0000
Subject: [PATCH] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@7149
 f3b2605a-c512-4ea7-a41b-209d697bcdaa

---
 doc/atom_style.html              |  32 ++++++---
 doc/atom_style.txt               |  34 +++++----
 doc/compute_erotate_asphere.html |  32 ++++++---
 doc/compute_erotate_asphere.txt  |  32 ++++++---
 doc/compute_property_atom.html   |  19 ++++-
 doc/compute_property_atom.txt    |  20 ++++--
 doc/fix.html                     |   3 +
 doc/fix.txt                      |   3 +
 doc/fix_rigid.html               |  29 ++++----
 doc/fix_rigid.txt                |  29 ++++----
 doc/fix_srd.html                 |  44 ++++++------
 doc/fix_srd.txt                  |  44 ++++++------
 doc/read_data.html               |  99 +++++++++++++++++++++++---
 doc/read_data.txt                |  91 +++++++++++++++++++++---
 doc/set.html                     | 115 ++++++++++++++++++++++--------
 doc/set.txt                      | 118 ++++++++++++++++++++++---------
 16 files changed, 539 insertions(+), 205 deletions(-)

diff --git a/doc/atom_style.html b/doc/atom_style.html
index 8356e44dfc..8b16f36569 100644
--- a/doc/atom_style.html
+++ b/doc/atom_style.html
@@ -15,7 +15,7 @@
 </P>
 <PRE>atom_style style args 
 </PRE>
-<UL><LI>style = <I>angle</I> or <I>atomic</I> or <I>bond</I> or <I>charge</I> or <I>dipole</I> or         <I>electron</I> or <I>ellipsoid</I> or <I>full</I> or <I>meso</I> or <I>molecular</I> or 	<I>peri</I> or <I>sphere</I> or <I>hybrid</I> 
+<UL><LI>style = <I>angle</I> or <I>atomic</I> or <I>bond</I> or <I>charge</I> or <I>dipole</I> or         <I>electron</I> or <I>ellipsoid</I> or <I>full</I> or <I>line</I> or <I>meso</I> or 	<I>molecular</I> or <I>peri</I> or <I>sphere</I> or <I>tri</I> or <I>hybrid</I> 
 </UL>
 <PRE>  args = none for any style except <I>hybrid</I>
   <I>hybrid</I> args = list of one or more sub-styles 
@@ -61,10 +61,12 @@ quantities.
 <TR><TD ><I>electron</I> </TD><TD > charge and spin and eradius </TD><TD > electronic force field </TD></TR>
 <TR><TD ><I>ellipsoid</I> </TD><TD > shape, quaternion for particle orientation, angular momentum </TD><TD > extended aspherical particles </TD></TR>
 <TR><TD ><I>full</I> </TD><TD > molecular + charge </TD><TD > bio-molecules </TD></TR>
+<TR><TD ><I>line</I> </TD><TD > end points, angular velocity </TD><TD > rigid bodies </TD></TR>
 <TR><TD ><I>meso</I> </TD><TD > rho, e, cv </TD><TD > SPH particles </TD></TR>
 <TR><TD ><I>molecular</I> </TD><TD > bonds, angles, dihedrals, impropers </TD><TD > uncharged molecules </TD></TR>
 <TR><TD ><I>peri</I> </TD><TD > mass, volume </TD><TD > mesocopic Peridynamic models </TD></TR>
 <TR><TD ><I>sphere</I> </TD><TD > diameter, mass, angular velocity </TD><TD > granular models </TD></TR>
+<TR><TD ><I>tri</I> </TD><TD > corner points, angular momentum </TD><TD > rigid bodies </TD></TR>
 <TR><TD ><I>wavepacket</I> </TD><TD > charge, spin, eradius, etag, cs_re, cs_im </TD><TD > AWPMD 
 </TD></TR></TABLE></DIV>
 
@@ -73,8 +75,8 @@ the <A HREF = "mass.html">mass</A> command, except for the finite-size particle
 styles discussed below.  They assign mass on a per-atom basis.
 </P>
 <P>All of the styles define point particles, except the <I>sphere</I>,
-<I>ellipsoid</I>, <I>electron</I>, <I>peri</I>, and <I>wavepacket</I> styles, which define
-finite-size particles.
+<I>ellipsoid</I>, <I>electron</I>, <I>peri</I>, <I>wavepacket</I>, <I>line</I>, and <I>tri</I>
+styles, which define finite-size particles.
 </P>
 <P>For the <I>sphere</I> style, the particles are spheres and each stores a
 per-particle diameter and mass.  If the diameter > 0.0, the particle
@@ -104,6 +106,14 @@ cs= (cs_re,cs_im).  Each of the wave packets is treated as a separate
 particle in LAMMPS, wave packets belonging to the same electron must
 have identical <I>etag</I> values.
 </P>
+<P>For the <I>line</I> style, the particles are idealized line segments and
+each stores a per-particle mass and length and orientation (i.e. the
+end points of the line segment).
+</P>
+<P>For the <I>tri</I> style, the particles are planar triangles and each
+stores a per-particle mass and size and orientation (i.e. the corner
+points of the triangle).
+</P>
 <HR>
 
 <P>Typically, simulations require only a single (non-hybrid) atom style.
@@ -130,14 +140,14 @@ section</A>.
 </P>
 <P>The <I>angle</I>, <I>bond</I>, <I>full</I>, and <I>molecular</I> styles are part of the
 MOLECULAR package.  The <I>dipole</I> style is part of the "dipole"
-package.  The <I>ellipsoid</I> style is part of the "asphere" package.  The
-<I>peri</I> style is part of the PERI package for Peridynamics.  The
-<I>electron</I> style is part of the USER-EFF package for <A HREF = "pair_eff.html">electronic force
-fields</A>.  The <I>meso</I> style is part of the USER-SPH
-package for smoothed particle hydrodyanmics (SPH).  See <A HREF = "USER/sph/SPH_LAMMPS_userguide.pdf">this PDF
-guide</A> to using SPH in LAMMPS.  The
-<I>wavepacket</I> style is part of the USER-AWPMD package for the
-<A HREF = "pair_awpmd.html">antisymmetrized wave packet MD method</A>.  They are
+package.  The <I>ellipsoid</I>, <I>line</I>, and <I>tri</I> styles are part of the
+"asphere" package.  The <I>peri</I> style is part of the PERI package for
+Peridynamics.  The <I>electron</I> style is part of the USER-EFF package
+for <A HREF = "pair_eff.html">electronic force fields</A>.  The <I>meso</I> style is part
+of the USER-SPH package for smoothed particle hydrodyanmics (SPH).
+See <A HREF = "USER/sph/SPH_LAMMPS_userguide.pdf">this PDF guide</A> to using SPH in
+LAMMPS.  The <I>wavepacket</I> style is part of the USER-AWPMD package for
+the <A HREF = "pair_awpmd.html">antisymmetrized wave packet MD method</A>.  They are
 only enabled if LAMMPS was built with that package.  See the <A HREF = "Section_start.html#start_3">Making
 LAMMPS</A> section for more info.
 </P>
diff --git a/doc/atom_style.txt b/doc/atom_style.txt
index 8925291bc4..5f85786a7a 100644
--- a/doc/atom_style.txt
+++ b/doc/atom_style.txt
@@ -13,8 +13,8 @@ atom_style command :h3
 atom_style style args :pre
 
 style = {angle} or {atomic} or {bond} or {charge} or {dipole} or \
-        {electron} or {ellipsoid} or {full} or {meso} or {molecular} or \
-	{peri} or {sphere} or {hybrid} :ul
+        {electron} or {ellipsoid} or {full} or {line} or {meso} or \
+	{molecular} or {peri} or {sphere} or {tri} or {hybrid} :ul
   args = none for any style except {hybrid}
   {hybrid} args = list of one or more sub-styles :pre
 
@@ -58,10 +58,12 @@ quantities.
 {electron} | charge and spin and eradius | electronic force field |
 {ellipsoid} | shape, quaternion for particle orientation, angular momentum | extended aspherical particles |
 {full} | molecular + charge | bio-molecules |
+{line} | end points, angular velocity | rigid bodies |
 {meso} | rho, e, cv | SPH particles |
 {molecular} | bonds, angles, dihedrals, impropers | uncharged molecules |
 {peri} | mass, volume | mesocopic Peridynamic models |
 {sphere} | diameter, mass, angular velocity | granular models |
+{tri} | corner points, angular momentum | rigid bodies |
 {wavepacket} | charge, spin, eradius, etag, cs_re, cs_im | AWPMD :tb(c=3,s=|)
 
 All of the styles assign mass to particles on a per-type basis, using
@@ -69,8 +71,8 @@ the "mass"_mass.html command, except for the finite-size particle
 styles discussed below.  They assign mass on a per-atom basis.
 
 All of the styles define point particles, except the {sphere},
-{ellipsoid}, {electron}, {peri}, and {wavepacket} styles, which define
-finite-size particles.
+{ellipsoid}, {electron}, {peri}, {wavepacket}, {line}, and {tri}
+styles, which define finite-size particles.
 
 For the {sphere} style, the particles are spheres and each stores a
 per-particle diameter and mass.  If the diameter > 0.0, the particle
@@ -100,6 +102,14 @@ cs= (cs_re,cs_im).  Each of the wave packets is treated as a separate
 particle in LAMMPS, wave packets belonging to the same electron must
 have identical {etag} values.
 
+For the {line} style, the particles are idealized line segments and
+each stores a per-particle mass and length and orientation (i.e. the
+end points of the line segment).
+
+For the {tri} style, the particles are planar triangles and each
+stores a per-particle mass and size and orientation (i.e. the corner
+points of the triangle).
+
 :line
 
 Typically, simulations require only a single (non-hybrid) atom style.
@@ -126,14 +136,14 @@ This command cannot be used after the simulation box is defined by a
 
 The {angle}, {bond}, {full}, and {molecular} styles are part of the
 MOLECULAR package.  The {dipole} style is part of the "dipole"
-package.  The {ellipsoid} style is part of the "asphere" package.  The
-{peri} style is part of the PERI package for Peridynamics.  The
-{electron} style is part of the USER-EFF package for "electronic force
-fields"_pair_eff.html.  The {meso} style is part of the USER-SPH
-package for smoothed particle hydrodyanmics (SPH).  See "this PDF
-guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in LAMMPS.  The
-{wavepacket} style is part of the USER-AWPMD package for the
-"antisymmetrized wave packet MD method"_pair_awpmd.html.  They are
+package.  The {ellipsoid}, {line}, and {tri} styles are part of the
+"asphere" package.  The {peri} style is part of the PERI package for
+Peridynamics.  The {electron} style is part of the USER-EFF package
+for "electronic force fields"_pair_eff.html.  The {meso} style is part
+of the USER-SPH package for smoothed particle hydrodyanmics (SPH).
+See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in
+LAMMPS.  The {wavepacket} style is part of the USER-AWPMD package for
+the "antisymmetrized wave packet MD method"_pair_awpmd.html.  They are
 only enabled if LAMMPS was built with that package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info.
 
diff --git a/doc/compute_erotate_asphere.html b/doc/compute_erotate_asphere.html
index 642fb57767..161aef27c2 100644
--- a/doc/compute_erotate_asphere.html
+++ b/doc/compute_erotate_asphere.html
@@ -25,15 +25,19 @@
 <P><B>Description:</B>
 </P>
 <P>Define a computation that calculates the rotational kinetic energy of
-a group of aspherical particles.
+a group of aspherical particles.  The aspherical particles can be
+ellipsoids, or line segments, or triangles.  See the
+<A HREF = "atom_style.html">atom_style</A> and <A HREF = "read_data.html">read_data</A> commands
+for descriptions of these options.
 </P>
-<P>The rotational kinetic energy is computed as 1/2 I w^2, where I is the
-inertia tensor for the aspherical particle and w is its angular
-velocity, which is computed from its angular momentum.
+<P>For all 3 types of particles, the rotational kinetic energy is
+computed as 1/2 I w^2, where I is the inertia tensor for the
+aspherical particle and w is its angular velocity, which is computed
+from its angular momentum if needed.
 </P>
-<P>IMPORTANT NOTE: For <A HREF = "dimension.html">2d models</A>, particles are treated
-as ellipsoids, not ellipses, meaning their moments of inertia will be
-the same as in 3d.
+<P>IMPORTANT NOTE: For <A HREF = "dimension.html">2d models</A>, ellipsoidal particles
+are treated as ellipsoids, not ellipses, meaning their moments of
+inertia will be the same as in 3d.
 </P>
 <P><B>Output info:</B>
 </P>
@@ -47,9 +51,17 @@ scalar value will be in energy <A HREF = "units.html">units</A>.
 </P>
 <P><B>Restrictions:</B>
 </P>
-<P>This compute requires that atoms store a shape and quaternion
-orientation and angular momentum as defined by the <A HREF = "atom_style.html">atom_style
-ellipsoid</A> command.
+<P>This compute requires that ellipsoidal particles atoms store a shape
+and quaternion orientation and angular momentum as defined by the
+<A HREF = "atom_style.html">atom_style ellipsoid</A> command.
+</P>
+<P>This compute requires that line segment particles atoms store a length
+and orientation and angular velocity as defined by the <A HREF = "atom_style.html">atom_style
+line</A> command.
+</P>
+<P>This compute requires that triangular particles atoms store a size and
+shape and quaternion orientation and angular momentum as defined by
+the <A HREF = "atom_style.html">atom_style tri</A> command.
 </P>
 <P>All particles in the group must be finite-size.  They cannot be point
 particles.
diff --git a/doc/compute_erotate_asphere.txt b/doc/compute_erotate_asphere.txt
index 607d9d4425..39aded0ed7 100644
--- a/doc/compute_erotate_asphere.txt
+++ b/doc/compute_erotate_asphere.txt
@@ -22,15 +22,19 @@ compute 1 all erotate/asphere :pre
 [Description:]
 
 Define a computation that calculates the rotational kinetic energy of
-a group of aspherical particles.
+a group of aspherical particles.  The aspherical particles can be
+ellipsoids, or line segments, or triangles.  See the
+"atom_style"_atom_style.html and "read_data"_read_data.html commands
+for descriptions of these options.
 
-The rotational kinetic energy is computed as 1/2 I w^2, where I is the
-inertia tensor for the aspherical particle and w is its angular
-velocity, which is computed from its angular momentum.
+For all 3 types of particles, the rotational kinetic energy is
+computed as 1/2 I w^2, where I is the inertia tensor for the
+aspherical particle and w is its angular velocity, which is computed
+from its angular momentum if needed.
 
-IMPORTANT NOTE: For "2d models"_dimension.html, particles are treated
-as ellipsoids, not ellipses, meaning their moments of inertia will be
-the same as in 3d.
+IMPORTANT NOTE: For "2d models"_dimension.html, ellipsoidal particles
+are treated as ellipsoids, not ellipses, meaning their moments of
+inertia will be the same as in 3d.
 
 [Output info:]
 
@@ -44,9 +48,17 @@ scalar value will be in energy "units"_units.html.
 
 [Restrictions:]
 
-This compute requires that atoms store a shape and quaternion
-orientation and angular momentum as defined by the "atom_style
-ellipsoid"_atom_style.html command.
+This compute requires that ellipsoidal particles atoms store a shape
+and quaternion orientation and angular momentum as defined by the
+"atom_style ellipsoid"_atom_style.html command.
+
+This compute requires that line segment particles atoms store a length
+and orientation and angular velocity as defined by the "atom_style
+line"_atom_style.html command.
+
+This compute requires that triangular particles atoms store a size and
+shape and quaternion orientation and angular momentum as defined by
+the "atom_style tri"_atom_style.html command.
 
 All particles in the group must be finite-size.  They cannot be point
 particles.
diff --git a/doc/compute_property_atom.html b/doc/compute_property_atom.html
index aec547b978..3adf2535dc 100644
--- a/doc/compute_property_atom.html
+++ b/doc/compute_property_atom.html
@@ -29,7 +29,11 @@
 			angmomx, angmomy, angmomz,
 			shapex,shapey, shapez,
 		        quatw, quati, quatj, quatk, tqx, tqy, tqz,
-			spin, eradius, ervel, erforce 
+			spin, eradius, ervel, erforce
+			end1x, end1y, end1z, end2x, end2y, end2z,
+			corner1x, corner1y, corner1z,
+			corner2x, corner2y, corner2z,
+			corner3x, corner3y, corner3z 
 </PRE>
 <PRE>      id = atom ID
       mol = molecule ID
@@ -47,13 +51,15 @@
       radius,diameter = radius,diameter of spherical particle
       omegax,omegay,omegaz = angular velocity of extended particle
       angmomx,angmomy,angmomz = angular momentum of extended particle
+      shapex,shapey,shapez = 3 diameters of aspherical particle
+      quatw,quati,quatj,quatk = quaternion components for aspherical particles
       tqx,tqy,tqz = torque on extended particles
       spin = electron spin
       eradius = electron radius
       ervel = electron radial velocity
       erforce = electron radial force
-      shapex,shapey,shapez = 3 diameters of aspherical particle
-      quatw,quati,quatj,quatk = quaternion components for aspherical particles 
+      end12x, end12y, end12z = end points of line segment
+      coner123x, corner123y, corner123z = corner points of triangle 
 </PRE>
 
 </UL>
@@ -94,6 +100,13 @@ and <I>quatk</I> are also defined for ellipsoidal particles and store the
 See the <A HREF = "set.html">set</A> command for an explanation of the quaternion
 vector.
 </P>
+<P><I>End1x</I>, <I>end1y</I>, <I>end1z</I>, <I>end2x</I>, <I>end2y</I>, <I>end2z</I>, are defined for
+line segment particles and define the end points of each line segment.
+</P>
+<P><I>Corner1x</I>, <I>corner1y</I>, <I>corner1z</I>, <I>corner2x</I>, <I>corner2y</I>,
+<I>corner2z</I>, <I>corner3x</I>, <I>corner3y</I>, <I>corner3z</I>, are defined for
+triangular particles and define the corner points of each triangle.
+</P>
 <P><B>Output info:</B>
 </P>
 <P>This compute calculates a per-atom vector or per-atom array depending
diff --git a/doc/compute_property_atom.txt b/doc/compute_property_atom.txt
index f2a088be34..500ca25df4 100644
--- a/doc/compute_property_atom.txt
+++ b/doc/compute_property_atom.txt
@@ -23,8 +23,11 @@ input = one or more atom attributes :l
 			angmomx, angmomy, angmomz,
 			shapex,shapey, shapez,
 		        quatw, quati, quatj, quatk, tqx, tqy, tqz,
-			spin, eradius, ervel, erforce :pre
-
+			spin, eradius, ervel, erforce
+			end1x, end1y, end1z, end2x, end2y, end2z,
+			corner1x, corner1y, corner1z,
+			corner2x, corner2y, corner2z,
+			corner3x, corner3y, corner3z :pre
       id = atom ID
       mol = molecule ID
       type = atom type
@@ -41,13 +44,15 @@ input = one or more atom attributes :l
       radius,diameter = radius,diameter of spherical particle
       omegax,omegay,omegaz = angular velocity of extended particle
       angmomx,angmomy,angmomz = angular momentum of extended particle
+      shapex,shapey,shapez = 3 diameters of aspherical particle
+      quatw,quati,quatj,quatk = quaternion components for aspherical particles
       tqx,tqy,tqz = torque on extended particles
       spin = electron spin
       eradius = electron radius
       ervel = electron radial velocity
       erforce = electron radial force
-      shapex,shapey,shapez = 3 diameters of aspherical particle
-      quatw,quati,quatj,quatk = quaternion components for aspherical particles :pre
+      end12x, end12y, end12z = end points of line segment
+      coner123x, corner123y, corner123z = corner points of triangle :pre
 :ule
 
 [Examples:]
@@ -87,6 +92,13 @@ and {quatk} are also defined for ellipsoidal particles and store the
 See the "set"_set.html command for an explanation of the quaternion
 vector.
 
+{End1x}, {end1y}, {end1z}, {end2x}, {end2y}, {end2z}, are defined for
+line segment particles and define the end points of each line segment.
+
+{Corner1x}, {corner1y}, {corner1z}, {corner2x}, {corner2y},
+{corner2z}, {corner3x}, {corner3y}, {corner3z}, are defined for
+triangular particles and define the corner points of each triangle.
+
 [Output info:]
 
 This compute calculates a per-atom vector or per-atom array depending
diff --git a/doc/fix.html b/doc/fix.html
index e73695d95e..c005536590 100644
--- a/doc/fix.html
+++ b/doc/fix.html
@@ -184,6 +184,7 @@ list of fix styles available in LAMMPS:
 <LI><A HREF = "fix_gcmc.html">gcmc</A> - grand canonical insertions/deletions
 <LI><A HREF = "fix_heat.html">heat</A> - add/subtract momentum-conserving heat
 <LI><A HREF = "fix_indent.html">indent</A> - impose force due to an indenter
+<LI><A HREF = "fix_integrateU.html">integrateU</A> - Stokesian Dynamics evolution
 <LI><A HREF = "fix_langevin.html">langevin</A> - Langevin temperature control
 <LI><A HREF = "fix_lineforce.html">lineforce</A> - constrain atoms to move in a line
 <LI><A HREF = "fix_momentum.html">momentum</A> - zero the linear and/or angular momentum of a group of atoms
@@ -200,8 +201,10 @@ list of fix styles available in LAMMPS:
 <LI><A HREF = "fix_nve.html">nve</A> - constant NVE time integration
 <LI><A HREF = "fix_nve_asphere.html">nve/asphere</A> - NVT for aspherical particles
 <LI><A HREF = "fix_nve_limit.html">nve/limit</A> - NVE with limited step length
+<LI><A HREF = "fix_nve_line.html">nve/line</A> - NVE for line segments
 <LI><A HREF = "fix_nve_noforce.html">nve/noforce</A> - NVE without forces (v only)
 <LI><A HREF = "fix_nve_sphere.html">nve/sphere</A> - NVT for spherical particles
+<LI><A HREF = "fix_nve_tri.html">nve/tri</A> - NVE for triangles
 <LI><A HREF = "fix_nh.html">nvt</A> - constant NVT time integration via Nose/Hoover
 <LI><A HREF = "fix_nvt_asphere.html">nvt/asphere</A> - NVT for aspherical particles
 <LI><A HREF = "fix_nvt_sllod.html">nvt/sllod</A> - NVT for NEMD with SLLOD equations
diff --git a/doc/fix.txt b/doc/fix.txt
index a31f5bf0b2..6f59881200 100644
--- a/doc/fix.txt
+++ b/doc/fix.txt
@@ -179,6 +179,7 @@ list of fix styles available in LAMMPS:
 "gcmc"_fix_gcmc.html - grand canonical insertions/deletions
 "heat"_fix_heat.html - add/subtract momentum-conserving heat
 "indent"_fix_indent.html - impose force due to an indenter
+"integrateU"_fix_integrateU.html - Stokesian Dynamics evolution
 "langevin"_fix_langevin.html - Langevin temperature control
 "lineforce"_fix_lineforce.html - constrain atoms to move in a line
 "momentum"_fix_momentum.html - zero the linear and/or angular momentum of a group of atoms
@@ -195,8 +196,10 @@ list of fix styles available in LAMMPS:
 "nve"_fix_nve.html - constant NVE time integration
 "nve/asphere"_fix_nve_asphere.html - NVT for aspherical particles
 "nve/limit"_fix_nve_limit.html - NVE with limited step length
+"nve/line"_fix_nve_line.html - NVE for line segments
 "nve/noforce"_fix_nve_noforce.html - NVE without forces (v only)
 "nve/sphere"_fix_nve_sphere.html - NVT for spherical particles
+"nve/tri"_fix_nve_tri.html - NVE for triangles
 "nvt"_fix_nh.html - constant NVT time integration via Nose/Hoover
 "nvt/asphere"_fix_nvt_asphere.html - NVT for aspherical particles
 "nvt/sllod"_fix_nvt_sllod.html - NVT for NEMD with SLLOD equations
diff --git a/doc/fix_rigid.html b/doc/fix_rigid.html
index 6d92361151..c15ed3ecfe 100644
--- a/doc/fix_rigid.html
+++ b/doc/fix_rigid.html
@@ -78,12 +78,13 @@ portions of a large biomolecule such as a protein.
 <P>Example of small rigid bodies are patchy nanoparticles, such as those
 modeled in <A HREF = "#Zhang">this paper</A> by Sharon Glotzer's group, clumps of
 granular particles, lipid molecules consiting of one or more point
-dipoles connected to other spheroids or ellipsoids, and coarse-grain
-models of nano or colloidal particles consisting of a small number of
-constituent particles.  Note that the <A HREF = "fix_shake.html">fix shake</A>
-command can also be used to rigidify small molecules of 2, 3, or 4
-atoms, e.g. water molecules.  That fix treats the constituent atoms as
-point masses.
+dipoles connected to other spheroids or ellipsoids, irregular
+particles built from line segments (2d) or triangles (3d), and
+coarse-grain models of nano or colloidal particles consisting of a
+small number of constituent particles.  Note that the <A HREF = "fix_shake.html">fix
+shake</A> command can also be used to rigidify small
+molecules of 2, 3, or 4 atoms, e.g. water molecules.  That fix treats
+the constituent atoms as point masses.
 </P>
 <P>These fixes also update the positions and velocities of the atoms in
 each rigid body via time integration.  The <I>rigid</I> and <I>rigid/nve</I>
@@ -118,14 +119,14 @@ setforce</A> command), and integrating them as usual
 <HR>
 
 <P>The constituent particles within a rigid body can be point particles
-(the default in LAMMPS) or finite-size particles, such as spheres and
-ellipsoids.  See the <A HREF = "atom_style.html">atom_style sphere and ellipsoid</A>
-commands for more details on these kinds of particles.  Finite-size
-particles contribute differently to the moment of inertia of a rigid
-body than do point particles.  Finite-size particles can also
-experience torque (e.g. due to <A HREF = "pair_gran.html">frictional granular
-interactions</A>) and have an orientation.  These
-contributions are accounted for by these fixes.
+(the default in LAMMPS) or finite-size particles, such as spheres or
+ellipsoids or line segments or triangles.  See the <A HREF = "atom_style.html">atom_style sphere
+and ellipsoid and line and tri</A> commands for more
+details on these kinds of particles.  Finite-size particles contribute
+differently to the moment of inertia of a rigid body than do point
+particles.  Finite-size particles can also experience torque (e.g. due
+to <A HREF = "pair_gran.html">frictional granular interactions</A>) and have an
+orientation.  These contributions are accounted for by these fixes.
 </P>
 <P>Forces between particles within a body do not contribute to the
 external force or torque on the body.  Thus for computational
diff --git a/doc/fix_rigid.txt b/doc/fix_rigid.txt
index a6e50b2c07..3d49aedd6d 100644
--- a/doc/fix_rigid.txt
+++ b/doc/fix_rigid.txt
@@ -67,12 +67,13 @@ portions of a large biomolecule such as a protein.
 Example of small rigid bodies are patchy nanoparticles, such as those
 modeled in "this paper"_#Zhang by Sharon Glotzer's group, clumps of
 granular particles, lipid molecules consiting of one or more point
-dipoles connected to other spheroids or ellipsoids, and coarse-grain
-models of nano or colloidal particles consisting of a small number of
-constituent particles.  Note that the "fix shake"_fix_shake.html
-command can also be used to rigidify small molecules of 2, 3, or 4
-atoms, e.g. water molecules.  That fix treats the constituent atoms as
-point masses.
+dipoles connected to other spheroids or ellipsoids, irregular
+particles built from line segments (2d) or triangles (3d), and
+coarse-grain models of nano or colloidal particles consisting of a
+small number of constituent particles.  Note that the "fix
+shake"_fix_shake.html command can also be used to rigidify small
+molecules of 2, 3, or 4 atoms, e.g. water molecules.  That fix treats
+the constituent atoms as point masses.
 
 These fixes also update the positions and velocities of the atoms in
 each rigid body via time integration.  The {rigid} and {rigid/nve}
@@ -107,14 +108,14 @@ setforce"_fix_setforce.html command), and integrating them as usual
 :line
 
 The constituent particles within a rigid body can be point particles
-(the default in LAMMPS) or finite-size particles, such as spheres and
-ellipsoids.  See the "atom_style sphere and ellipsoid"_atom_style.html
-commands for more details on these kinds of particles.  Finite-size
-particles contribute differently to the moment of inertia of a rigid
-body than do point particles.  Finite-size particles can also
-experience torque (e.g. due to "frictional granular
-interactions"_pair_gran.html) and have an orientation.  These
-contributions are accounted for by these fixes.
+(the default in LAMMPS) or finite-size particles, such as spheres or
+ellipsoids or line segments or triangles.  See the "atom_style sphere
+and ellipsoid and line and tri"_atom_style.html commands for more
+details on these kinds of particles.  Finite-size particles contribute
+differently to the moment of inertia of a rigid body than do point
+particles.  Finite-size particles can also experience torque (e.g. due
+to "frictional granular interactions"_pair_gran.html) and have an
+orientation.  These contributions are accounted for by these fixes.
 
 Forces between particles within a body do not contribute to the
 external force or torque on the body.  Thus for computational
diff --git a/doc/fix_srd.html b/doc/fix_srd.html
index df029d06fd..8746be8e54 100644
--- a/doc/fix_srd.html
+++ b/doc/fix_srd.html
@@ -38,10 +38,7 @@
   <I>cubic</I> values = style tolerance
     style = <I>error</I> or <I>warn</I>
     tolerance = fractional difference allowed (0 <= tol <= 1)
-  <I>shift</I> values = style seed
-    style = <I>no</I> or <I>yes</I> or <I>possible</I>
-    seed = random # seed (positive integer)
-  <I>stream</I> value = <I>yes</I> or <I>no</I> = whether or not streaming velocity is added for shear deformation 
+  <I>tstat</I> value = <I>yes</I> or <I>no</I> = thermostat SRD particles or not 
 </PRE>
 
 </UL>
@@ -58,13 +55,14 @@ particles that serve as a background solvent when interacting with big
 in <A HREF = "#Hecht">(Hecht)</A>.  The key idea behind using SRD particles as a
 cheap coarse-grained solvent is that SRD particles do not interact
 with each other, but only with the solute particles, which in LAMMPS
-can be spheroids, ellipsoids, or rigid bodies containing multiples
-spherioids and ellipsoids.  The collision and rotation properties of
-the model imbue the SRD particles with fluid-like properties,
-including an effective viscosity.  Thus simulations with large solute
-particles can be run more quickly, to measure solute propoerties like
-diffusivity and viscosity in a background fluid.  The usual LAMMPS
-fixes for such simulations, such as <A HREF = "fix_deform.html">fix deform</A>, <A HREF = "fix_viscosity.html">fix
+can be spheroids, ellipsoids, or line segments, or triangles, or rigid
+bodies containing multiple spherioids or ellipsoids or line segments
+or triangles.  The collision and rotation properties of the model
+imbue the SRD particles with fluid-like properties, including an
+effective viscosity.  Thus simulations with large solute particles can
+be run more quickly, to measure solute propoerties like diffusivity
+and viscosity in a background fluid.  The usual LAMMPS fixes for such
+simulations, such as <A HREF = "fix_deform.html">fix deform</A>, <A HREF = "fix_viscosity.html">fix
 viscosity</A>, and <A HREF = "fix_nvt_sllod.html">fix nvt/sllod</A>,
 can be used in conjunction with the SRD model.
 </P>
@@ -272,15 +270,19 @@ must still be specified.
 <P>Note that shifting of SRD coordinates requires extra communication,
 hence it should not normally be enabled unless required.
 </P>
-<P>The <I>stream</I> keyword should be used when SRD particles are used with
-the <A HREF = "fix_deform.html">fix deform</A> command to perform a simulation
-undergoing shear, e.g. to measure a viscosity.  If the <I>stream</I> style
-is set to <I>yes</I>, then the mean velocity of each bin of SRD particles
-is set to the streaming velocity of the deforming box, each time SRD
-velocities are reset, every N timesteps.  If the <I>stream</I> style is set
-to <I>no</I>, then the mean velocity is unchanged, which may mean that it
-takes a long time for the SRD fluid to come to equilibrium with a
-velocity profile that matches the simulation box deformation.
+<P>The <I>tstat</I> keyword will thermostat the SRD particles to the specified
+<I>Tsrd</I>.  This is done every N timesteps, during the velocity rotation
+operation, by rescaling the thermal velocity of particles in each SRD
+bin to the desired temperature.  If there is a streaming velocity
+associated with the system, e.g. due to use of the <A HREF = "fix_deform.html">fix
+deform</A> command to perform a simulation undergoing
+shear, then that is also accounted for.  The mean velocity of each bin
+of SRD particles is set to the position-dependent streaming velocity,
+based on the coordinates of the center of the SRD bin.  Note that for
+streaming simulations, if no thermostatting is performed (the
+default), then it may take a long time for the SRD fluid to come to
+equilibrium with a velocity profile that matches the simulation box
+deformation.
 </P>
 <HR>
 
@@ -358,7 +360,7 @@ for more info on packages.
 </P>
 <P>The option defaults are lamda inferred from Tsrd, collision = noslip,
 overlap = no, inside = error, exact = yes, radius = 1.0, bounce = 0,
-search = hgrid, cubic = error 0.01, shift = no, stream = yes.
+search = hgrid, cubic = error 0.01, shift = no, tstat = no.
 </P>
 <HR>
 
diff --git a/doc/fix_srd.txt b/doc/fix_srd.txt
index a45c21392e..07dd49b861 100644
--- a/doc/fix_srd.txt
+++ b/doc/fix_srd.txt
@@ -33,10 +33,7 @@ keyword = {lamda} or {collision} or {overlap} or {inside} or {exact} or {radius}
   {cubic} values = style tolerance
     style = {error} or {warn}
     tolerance = fractional difference allowed (0 <= tol <= 1)
-  {shift} values = style seed
-    style = {no} or {yes} or {possible}
-    seed = random # seed (positive integer)
-  {stream} value = {yes} or {no} = whether or not streaming velocity is added for shear deformation :pre
+  {tstat} value = {yes} or {no} = thermostat SRD particles or not :pre
 :ule
 
 [Examples:]
@@ -52,13 +49,14 @@ particles that serve as a background solvent when interacting with big
 in "(Hecht)"_#Hecht.  The key idea behind using SRD particles as a
 cheap coarse-grained solvent is that SRD particles do not interact
 with each other, but only with the solute particles, which in LAMMPS
-can be spheroids, ellipsoids, or rigid bodies containing multiples
-spherioids and ellipsoids.  The collision and rotation properties of
-the model imbue the SRD particles with fluid-like properties,
-including an effective viscosity.  Thus simulations with large solute
-particles can be run more quickly, to measure solute propoerties like
-diffusivity and viscosity in a background fluid.  The usual LAMMPS
-fixes for such simulations, such as "fix deform"_fix_deform.html, "fix
+can be spheroids, ellipsoids, or line segments, or triangles, or rigid
+bodies containing multiple spherioids or ellipsoids or line segments
+or triangles.  The collision and rotation properties of the model
+imbue the SRD particles with fluid-like properties, including an
+effective viscosity.  Thus simulations with large solute particles can
+be run more quickly, to measure solute propoerties like diffusivity
+and viscosity in a background fluid.  The usual LAMMPS fixes for such
+simulations, such as "fix deform"_fix_deform.html, "fix
 viscosity"_fix_viscosity.html, and "fix nvt/sllod"_fix_nvt_sllod.html,
 can be used in conjunction with the SRD model.
 
@@ -266,15 +264,19 @@ must still be specified.
 Note that shifting of SRD coordinates requires extra communication,
 hence it should not normally be enabled unless required.
 
-The {stream} keyword should be used when SRD particles are used with
-the "fix deform"_fix_deform.html command to perform a simulation
-undergoing shear, e.g. to measure a viscosity.  If the {stream} style
-is set to {yes}, then the mean velocity of each bin of SRD particles
-is set to the streaming velocity of the deforming box, each time SRD
-velocities are reset, every N timesteps.  If the {stream} style is set
-to {no}, then the mean velocity is unchanged, which may mean that it
-takes a long time for the SRD fluid to come to equilibrium with a
-velocity profile that matches the simulation box deformation.
+The {tstat} keyword will thermostat the SRD particles to the specified
+{Tsrd}.  This is done every N timesteps, during the velocity rotation
+operation, by rescaling the thermal velocity of particles in each SRD
+bin to the desired temperature.  If there is a streaming velocity
+associated with the system, e.g. due to use of the "fix
+deform"_fix_deform.html command to perform a simulation undergoing
+shear, then that is also accounted for.  The mean velocity of each bin
+of SRD particles is set to the position-dependent streaming velocity,
+based on the coordinates of the center of the SRD bin.  Note that for
+streaming simulations, if no thermostatting is performed (the
+default), then it may take a long time for the SRD fluid to come to
+equilibrium with a velocity profile that matches the simulation box
+deformation.
 
 :line
 
@@ -352,7 +354,7 @@ for more info on packages.
 
 The option defaults are lamda inferred from Tsrd, collision = noslip,
 overlap = no, inside = error, exact = yes, radius = 1.0, bounce = 0,
-search = hgrid, cubic = error 0.01, shift = no, stream = yes.
+search = hgrid, cubic = error 0.01, shift = no, tstat = no.
 
 :line
 
diff --git a/doc/read_data.html b/doc/read_data.html
index 2eced78fe0..fcf68f4680 100644
--- a/doc/read_data.html
+++ b/doc/read_data.html
@@ -80,6 +80,8 @@ is different than the default.
 <LI><I>improper types</I> = # of improper types in system
 <LI><I>extra bond per atom</I> = leave space for this many new bonds per atom
 <LI><I>ellipsoids</I> = # of ellipsoids in system
+<LI><I>lines</I> = # of line segments in system
+<LI><I>triangles</I> = # of triangles in system
 <LI><I>xlo xhi</I> = simulation box boundaries in x dimension
 <LI><I>ylo yhi</I> = simulation box boundaries in y dimension
 <LI><I>zlo zhi</I> = simulation box boundaries in z dimension
@@ -156,16 +158,19 @@ added to the system when a simulation runs, e.g. by using the <A HREF = "fix_bon
 bond/create</A> command.  This will pre-allocate
 space in LAMMPS data structures for storing the new bonds.
 </P>
-<P>The "ellipsoids<A HREF = "atom_style.html"> setting is only used with atom_style
-ellipsoid</A> and specifies how many of the atoms are
-finite-size ellipsoids; the remainder are point particles.  See the
-discussion of ellipsoidflag and the <I>Ellipsoids</I> section below.
+<P>The "ellipsoids" and "lines" and "triangles" settings are only used
+with <A HREF = "atom_style.html">atom_style ellipsoid or line or tri</A> and
+specifies how many of the atoms are finite-size ellipsoids or lines or
+triangles; the remainder are point particles.  See the discussion of
+ellipsoidflag and the <I>Ellipsoids</I> section below.  See the discussion
+of lineflag and the <I>Lines</I> section below.  See the discussion of
+triangleflag and the <I>Triangles</I> section below.
 </P>
 <HR>
 
 <P>These are the section keywords for the body of the file.
 </P>
-<UL><LI><I>Atoms, Velocities, Ellipsoids, Masses</I> = atom-property sections 
+<UL><LI><I>Atoms, Velocities, Masses, Ellipsoids, Lines, Triangles</I> = atom-property sections 
 <LI><I>Bonds, Angles, Dihedrals, Impropers</I> = molecular topology sections 
 <LI><I>Pair Coeffs, Bond Coeffs, Angle Coeffs, Dihedral Coeffs,    Improper Coeffs</I> = force field sections
 <LI><I>BondBond Coeffs, BondAngle Coeffs, MiddleBondTorsion Coeffs,    EndBondTorsion Coeffs, AngleTorsion Coeffs, AngleAngleTorsion Coeffs,    BondBond13 Coeffs, AngleAngle Coeffs</I> = class 2 force field sections 
@@ -290,10 +295,12 @@ of analysis.
 <TR><TD >electron</TD><TD > atom-ID atom-type q spin eradius x y z</TD></TR>
 <TR><TD >ellipsoid</TD><TD > atom-ID atom-type ellipsoidflag density x y z</TD></TR>
 <TR><TD >full</TD><TD > atom-ID molecule-ID atom-type q x y z</TD></TR>
+<TR><TD >line</TD><TD > atom-ID molecule-ID atom-type lineflag density x y z</TD></TR>
 <TR><TD >meso</TD><TD > atom-ID atom-type rho e cv x y z</TD></TR>
 <TR><TD >molecular</TD><TD > atom-ID molecule-ID atom-type x y z</TD></TR>
 <TR><TD >peri</TD><TD > atom-ID atom-type volume density x y z</TD></TR>
 <TR><TD >sphere</TD><TD > atom-ID atom-type diameter density x y z</TD></TR>
+<TR><TD >tri</TD><TD > atom-ID molecule-ID atom-type triangleflag density x y z</TD></TR>
 <TR><TD >wavepacket</TD><TD > atom-ID atom-type charge spin eradius etag cs_re cs_im x y z</TD></TR>
 <TR><TD >hybrid</TD><TD > atom-ID atom-type x y z sub-style1 sub-style2 ...  
 </TD></TR></TABLE></DIV>
@@ -306,7 +313,9 @@ of analysis.
 <LI>q = charge on atom (charge units)
 <LI>diameter = diameter of spherical atom (distance units)
 <LI>ellipsoidflag = 1 for ellipsoidal particles, 0 for point particles
-<LI>density = density of atom (mass/distance^3 units)
+<LI>lineflag = 1 for line segment particles, 0 for point particles
+<LI>triangleflag = 1 for triangular particles, 0 for point particles
+<LI>density = density of particle (mass/distance^3 or mass/distance^2 or mass/distance units, depending on dimensionality of particle)
 <LI>volume = volume of atom (distance^3 units)
 <LI>x,y,z = coordinates of atom
 <LI>mux,muy,muz = components of dipole moment of atom (dipole units)
@@ -342,9 +351,13 @@ keep track of molecule assignments.
 <P>The diameter specifies the size of a finite-size spherical particle.
 It can be set to 0.0, which means that atom is a point particle.
 </P>
-<P>The ellipsoidflag determines whether the particle is a finite-size
-ellipsoid of finite size, or a point particle.  Additional attributes
-must be defined for each ellipsoid in the <I>Ellipsoids</I> section.
+<P>The ellipsoidflag, lineflag, and triangleflag determine whether the
+particle is a finite-size ellipsoid or line or triangle of finite
+size, or a point particle.  Additional attributes must be defined for
+each ellipsoid in the <I>Ellipsoids</I> section.  Additional attributes
+must be defined for each line in the <I>Lines</I> section.  Additional
+attributes must be defined for each triangle in the <I>Triangles</I>
+section.
 </P>
 <P>Some pair styles and fixes and computes that operate on finite-size
 particles allow for a mixture of finite-size and point particles.  See
@@ -352,8 +365,10 @@ the doc pages of individual commands for details.
 </P>
 <P>The density is used in conjunction with the particle volume for
 finite-size particles to set the mass of the particle as mass =
-density * volume.  If the volume is 0.0, meaning a point particle,
-then the density value is used as the mass.
+density * volume.  In this context, volume can be a 3d quantity (for
+spheres or ellipsoids), a 2d quantity (for triangles), or a 1d
+quantity (for line segments).  If the volume is 0.0, meaning a point
+particle, then the density value is used as the mass.
 </P>
 <P>For atom_style hybrid, following the 5 initial values (ID,type,x,y,z),
 specific values for each sub-style must be listed.  The order of the
@@ -627,6 +642,37 @@ values in this section must be integers (1, not 1.0).
 </P>
 <HR>
 
+<P><I>Lines</I> section:
+</P>
+<UL><LI>one line per line segment 
+
+<LI>line syntax: atom-ID x1 y1 x2 y2 
+
+<LI>  atom-ID = ID of atom which is a line segment
+  x1,y1 = 1st end point
+  x2,y2 = 2nd end point
+example: 
+
+<PRE>  12 1.0 0.0 2.0 0.0 
+</PRE>
+
+</UL>
+<P>The <I>Lines</I> section must appear if <A HREF = "atom_style.html">atom_style line</A>
+is used and any atoms are listed in the <I>Atoms</I> section with a
+lineflag = 1.  The number of lines should be specified in the header
+section via the "lines" keyword.
+</P>
+<P>The 2 end points are the end points of the line segment.  The ordering
+of the 2 points should be such that using a right-hand rule to cross
+the line segment with a unit vector in the +z direction, gives an
+"outward" normal vector perpendicular to the line segment.
+I.e. normal = (c2-c1) x (0,0,1).  This orientation may be important
+for defining some interactions.
+</P>
+<P>The <I>Lines</I> section must appear after the <I>Atoms</I> section.
+</P>
+<HR>
+
 <P><I>Masses</I> section:
 </P>
 <UL><LI>one line per atom type 
@@ -685,6 +731,37 @@ script.
 </P>
 <HR>
 
+<P><I>Triangles</I> section:
+</P>
+<UL><LI>one line per triangle 
+
+<LI>line syntax: atom-ID x1 y1 x2 y2 
+
+<LI>  atom-ID = ID of atom which is a line segment
+  x1,y1,z1 = 1st corner point
+  x2,y2,z2 = 2nd corner point
+  x3,y3,z3 = 3rd corner point
+example: 
+
+<PRE>  12 0.0 0.0 0.0 2.0 0.0 1.0 0.0 2.0 1.0 
+</PRE>
+
+</UL>
+<P>The <I>Triangles</I> section must appear if <A HREF = "atom_style.html">atom_style
+tri</A> is used and any atoms are listed in the <I>Atoms</I>
+section with a triangleflag = 1.  The number of lines should be
+specified in the header section via the "triangles" keyword.
+</P>
+<P>The 3 corner points are the corner points of the triangle.  The
+ordering of the 3 points should be such that using a right-hand rule
+to go from point1 to point2 to point3 gives an "outward" normal vector
+to the face of the triangle.  I.e. normal = (c2-c1) x (c3-c1).  This
+orientation may be important for defining some interactions.
+</P>
+<P>The <I>Triangles</I> section must appear after the <I>Atoms</I> section.
+</P>
+<HR>
+
 <P><I>Velocities</I> section:
 </P>
 <UL><LI>one line per atom
diff --git a/doc/read_data.txt b/doc/read_data.txt
index d023d5de6e..b9fcccd0f6 100644
--- a/doc/read_data.txt
+++ b/doc/read_data.txt
@@ -77,6 +77,8 @@ is different than the default.
 {improper types} = # of improper types in system
 {extra bond per atom} = leave space for this many new bonds per atom
 {ellipsoids} = # of ellipsoids in system
+{lines} = # of line segments in system
+{triangles} = # of triangles in system
 {xlo xhi} = simulation box boundaries in x dimension
 {ylo yhi} = simulation box boundaries in y dimension
 {zlo zhi} = simulation box boundaries in z dimension
@@ -153,16 +155,19 @@ added to the system when a simulation runs, e.g. by using the "fix
 bond/create"_fix_bond_create.html command.  This will pre-allocate
 space in LAMMPS data structures for storing the new bonds.
 
-The "ellipsoids" setting is only used with atom_style
-ellipsoid"_atom_style.html and specifies how many of the atoms are
-finite-size ellipsoids; the remainder are point particles.  See the
-discussion of ellipsoidflag and the {Ellipsoids} section below.
+The "ellipsoids" and "lines" and "triangles" settings are only used
+with "atom_style ellipsoid or line or tri"_atom_style.html and
+specifies how many of the atoms are finite-size ellipsoids or lines or
+triangles; the remainder are point particles.  See the discussion of
+ellipsoidflag and the {Ellipsoids} section below.  See the discussion
+of lineflag and the {Lines} section below.  See the discussion of
+triangleflag and the {Triangles} section below.
 
 :line
 
 These are the section keywords for the body of the file.
 
-{Atoms, Velocities, Ellipsoids, Masses} = atom-property sections 
+{Atoms, Velocities, Masses, Ellipsoids, Lines, Triangles} = atom-property sections 
 {Bonds, Angles, Dihedrals, Impropers} = molecular topology sections 
 {Pair Coeffs, Bond Coeffs, Angle Coeffs, Dihedral Coeffs, \
    Improper Coeffs} = force field sections
@@ -270,10 +275,12 @@ dipole: atom-ID atom-type q x y z mux muy muz
 electron: atom-ID atom-type q spin eradius x y z
 ellipsoid: atom-ID atom-type ellipsoidflag density x y z
 full: atom-ID molecule-ID atom-type q x y z
+line: atom-ID molecule-ID atom-type lineflag density x y z
 meso: atom-ID atom-type rho e cv x y z
 molecular: atom-ID molecule-ID atom-type x y z
 peri: atom-ID atom-type volume density x y z
 sphere: atom-ID atom-type diameter density x y z
+tri: atom-ID molecule-ID atom-type triangleflag density x y z
 wavepacket: atom-ID atom-type charge spin eradius etag cs_re cs_im x y z
 hybrid: atom-ID atom-type x y z sub-style1 sub-style2 ...  :tb(s=:)
 
@@ -285,7 +292,9 @@ atom-type = type of atom (1-Ntype)
 q = charge on atom (charge units)
 diameter = diameter of spherical atom (distance units)
 ellipsoidflag = 1 for ellipsoidal particles, 0 for point particles
-density = density of atom (mass/distance^3 units)
+lineflag = 1 for line segment particles, 0 for point particles
+triangleflag = 1 for triangular particles, 0 for point particles
+density = density of particle (mass/distance^3 or mass/distance^2 or mass/distance units, depending on dimensionality of particle)
 volume = volume of atom (distance^3 units)
 x,y,z = coordinates of atom
 mux,muy,muz = components of dipole moment of atom (dipole units)
@@ -321,9 +330,13 @@ keep track of molecule assignments.
 The diameter specifies the size of a finite-size spherical particle.
 It can be set to 0.0, which means that atom is a point particle.
 
-The ellipsoidflag determines whether the particle is a finite-size
-ellipsoid of finite size, or a point particle.  Additional attributes
-must be defined for each ellipsoid in the {Ellipsoids} section.
+The ellipsoidflag, lineflag, and triangleflag determine whether the
+particle is a finite-size ellipsoid or line or triangle of finite
+size, or a point particle.  Additional attributes must be defined for
+each ellipsoid in the {Ellipsoids} section.  Additional attributes
+must be defined for each line in the {Lines} section.  Additional
+attributes must be defined for each triangle in the {Triangles}
+section.
 
 Some pair styles and fixes and computes that operate on finite-size
 particles allow for a mixture of finite-size and point particles.  See
@@ -331,8 +344,10 @@ the doc pages of individual commands for details.
 
 The density is used in conjunction with the particle volume for
 finite-size particles to set the mass of the particle as mass =
-density * volume.  If the volume is 0.0, meaning a point particle,
-then the density value is used as the mass.
+density * volume.  In this context, volume can be a 3d quantity (for
+spheres or ellipsoids), a 2d quantity (for triangles), or a 1d
+quantity (for line segments).  If the volume is 0.0, meaning a point
+particle, then the density value is used as the mass.
 
 For atom_style hybrid, following the 5 initial values (ID,type,x,y,z),
 specific values for each sub-style must be listed.  The order of the
@@ -560,6 +575,33 @@ values in this section must be integers (1, not 1.0).
 
 :line
 
+{Lines} section:
+
+one line per line segment :ulb,l
+line syntax: atom-ID x1 y1 x2 y2 :l
+  atom-ID = ID of atom which is a line segment
+  x1,y1 = 1st end point
+  x2,y2 = 2nd end point
+example: :l
+  12 1.0 0.0 2.0 0.0 :pre
+:ule
+
+The {Lines} section must appear if "atom_style line"_atom_style.html
+is used and any atoms are listed in the {Atoms} section with a
+lineflag = 1.  The number of lines should be specified in the header
+section via the "lines" keyword.
+
+The 2 end points are the end points of the line segment.  The ordering
+of the 2 points should be such that using a right-hand rule to cross
+the line segment with a unit vector in the +z direction, gives an
+"outward" normal vector perpendicular to the line segment.
+I.e. normal = (c2-c1) x (0,0,1).  This orientation may be important
+for defining some interactions.
+
+The {Lines} section must appear after the {Atoms} section.
+
+:line
+
 {Masses} section:
 
 one line per atom type :ulb,l
@@ -605,6 +647,33 @@ script.
 
 :line
 
+{Triangles} section:
+
+one line per triangle :ulb,l
+line syntax: atom-ID x1 y1 x2 y2 :l
+  atom-ID = ID of atom which is a line segment
+  x1,y1,z1 = 1st corner point
+  x2,y2,z2 = 2nd corner point
+  x3,y3,z3 = 3rd corner point
+example: :l
+  12 0.0 0.0 0.0 2.0 0.0 1.0 0.0 2.0 1.0 :pre
+:ule
+
+The {Triangles} section must appear if "atom_style
+tri"_atom_style.html is used and any atoms are listed in the {Atoms}
+section with a triangleflag = 1.  The number of lines should be
+specified in the header section via the "triangles" keyword.
+
+The 3 corner points are the corner points of the triangle.  The
+ordering of the 3 points should be such that using a right-hand rule
+to go from point1 to point2 to point3 gives an "outward" normal vector
+to the face of the triangle.  I.e. normal = (c2-c1) x (c3-c1).  This
+orientation may be important for defining some interactions.
+
+The {Triangles} section must appear after the {Atoms} section.
+
+:line
+
 {Velocities} section:
 
 one line per atom
diff --git a/doc/set.html b/doc/set.html
index a1feb65a31..06be9fb51c 100644
--- a/doc/set.html
+++ b/doc/set.html
@@ -21,7 +21,7 @@
 
 <LI>one or more keyword/value pairs may be appended 
 
-<LI>keyword = <I>type</I> or <I>type/fraction</I> or <I>mol</I> or <I>x</I> or <I>y</I> or <I>z</I> or           <I>charge</I> or <I>dipole</I> or <I>dipole/random</I> or <I>quat</I> or 	  <I>quat/random</I> or <I>diameter</I> or <I>shape</I> or <I>mass</I> or 	  <I>density</I> or <I>volume</I> or <I>image</I> or
+<LI>keyword = <I>type</I> or <I>type/fraction</I> or <I>mol</I> or <I>x</I> or <I>y</I> or <I>z</I> or           <I>charge</I> or <I>dipole</I> or <I>dipole/random</I> or <I>quat</I> or 	  <I>quat/random</I> or <I>diameter</I> or <I>shape</I> or 	  <I>length</I> or <I>tri</I> or <I>theta</I> or <I>angmom</I> or 	  <I>mass</I> or <I>density</I> or <I>volume</I> or <I>image</I> or
 	  <I>bond</I> or <I>angle</I> or <I>dihedral</I> or <I>improper</I> or
 	  <I>meso_e</I> or <I>meso_cv</I> or <I>meso_rho</I> 
 
@@ -40,14 +40,22 @@
     Dlen = magnitude of dipole moment (dipole units)
   <I>quat</I> values = a b c theta
     a,b,c = unit vector to rotate particle around via right-hand rule
-    theta = rotation angle in degrees
+    theta = rotation angle (degrees)
   <I>quat/random</I> value = seed
     seed = random # seed (positive integer) for quaternion orientations
   <I>diameter</I> value = diameter of spherical particle (distance units)
   <I>shape</I> value = Sx Sy Sz
     Sx,Sy,Sz = 3 diameters of ellipsoid (distance units)
+  <I>length</I> value = len
+    len = length of line segment (distance units)
+  <I>tri</I> value = side
+    side = side length of equilateral triangle (distance units)
+  <I>theta</I> value = angle (degrees)
+    angle = orientation of line segment with respect to x-axis
+  <I>angmom</I> values = Lx Ly Lz
+    Lx,Ly,Lz = components of angular momentum vector (distance-mass-velocity units)
   <I>mass</I> value = per-atom mass (mass units)
-  <I>density</I> value = particle density for sphere or ellipsoid (mass/distance^3 units)
+  <I>density</I> value = particle density for sphere or ellipsoid (mass/distance^3 or mass/distance^2 or mass/distance units, depending on dimensionality of particle)
   <I>volume</I> value = particle volume for Peridynamic particle (distance^3 units)
   <I>image</I> nx ny nz
     nx,ny,nz = which periodic image of the simulation box the atom is in
@@ -143,26 +151,31 @@ the orientation of a particular atom is the same, regardless of how
 many processors are being used.
 </P>
 <P>Keyword <I>quat</I> uses the specified values to create a quaternion
-(4-vector) that represents the orientation of the selected atoms.
-Note that particles defined by <A HREF = "atom_style.html">atom_style ellipsoid</A>
-have 3 shape parameters.  The 3 values must be non-zero for each
-particle set by this command.  They are used to specify the aspect
-ratios of an ellipsoidal particle, which is oriented by default with
-its x-axis along the simulation box's x-axis, and similarly for y and
-z.  If this body is rotated (via the right-hand rule) by an angle
-theta around a unit rotation vector (a,b,c), then the quaternion that
-represents its new orientation is given by (cos(theta/2),
-a*sin(theta/2), b*sin(theta/2), c*sin(theta/2)).  The theta and a,b,c
-values are the arguments to the <I>quat</I> keyword.  LAMMPS normalizes the
-quaternion in case (a,b,c) was not specified as a unit vector.  For 2d
-systems, the a,b,c values are ignored, since a rotation vector of
-(0,0,1) is the only valid choice.
+(4-vector) that represents the orientation of the selected atoms.  The
+particles must be ellipsoids as defined by the <A HREF = "atom_style.html">atom_style
+ellipsoid</A> command or triangles as defined by the
+<A HREF = "atom_style.html">atom_style tri</A> command.  Note that particles defined
+by <A HREF = "atom_style.html">atom_style ellipsoid</A> have 3 shape parameters.
+The 3 values must be non-zero for each particle set by this command.
+They are used to specify the aspect ratios of an ellipsoidal particle,
+which is oriented by default with its x-axis along the simulation
+box's x-axis, and similarly for y and z.  If this body is rotated (via
+the right-hand rule) by an angle theta around a unit rotation vector
+(a,b,c), then the quaternion that represents its new orientation is
+given by (cos(theta/2), a*sin(theta/2), b*sin(theta/2),
+c*sin(theta/2)).  The theta and a,b,c values are the arguments to the
+<I>quat</I> keyword.  LAMMPS normalizes the quaternion in case (a,b,c) was
+not specified as a unit vector.  For 2d systems, the a,b,c values are
+ignored, since a rotation vector of (0,0,1) is the only valid choice.
 </P>
 <P>Keyword <I>quat/random</I> randomizes the orientation of the quaternion of
-the selected atoms.  Random numbers are used in such a way that the
-orientation of a particular atom is the same, regardless of how many
-processors are being used.  For 2d systems, only orientations in the
-xy plane are generated.  As with keyword <I>quat</I>, the 3 shape values
+the selected atoms.  The particles must be ellipsoids as defined by
+the <A HREF = "atom_style.html">atom_style ellipsoid</A> command or triangles as
+defined by the <A HREF = "atom_style.html">atom_style tri</A> command.  Random
+numbers are used in such a way that the orientation of a particular
+atom is the same, regardless of how many processors are being used.
+For 2d systems, only orientations in the xy plane are generated.  As
+with keyword <I>quat</I>, for ellipsoidal particles, the 3 shape values
 must be non-zero for each particle set by this command.
 </P>
 <P>Keyword <I>diameter</I> sets the size of the selected atoms.  The particles
@@ -174,7 +187,7 @@ defined with a density, e.g. via the <A HREF = "read_data.html">read_data</A>
 command.
 </P>
 <P>Keyword <I>shape</I> sets the size and shape of the selected atoms.  The
-particles must be aspherical ellipsoids as defined by the <A HREF = "atom_style.html">atom_style
+particles must be ellipsoids as defined by the <A HREF = "atom_style.html">atom_style
 ellipsoid</A> command.  The <I>Sx</I>, <I>Sy</I>, <I>Sz</I> settings are
 the 3 diameters of the ellipsoid in each direction.  All 3 can be set
 to the same value, which means the ellipsoid is effectively a sphere.
@@ -183,20 +196,60 @@ treated as a point particle.  Note that this command does not adjust
 the particle mass, even if it was defined with a density, e.g. via the
 <A HREF = "read_data.html">read_data</A> command.
 </P>
+<P>Keyword <I>length</I> sets the length of selected atoms.  The particles
+must be line segments as defined by the <A HREF = "atom_style.html">atom_style
+line</A> command.  If the specified value is non-zero the
+line segment is (re)set to a length = the specified value, centered
+around the particle position, with an orientation along the x-axis.
+If the specified value is 0.0, the particle will become a point
+particle.  Note that this command does not adjust the particle mass,
+even if it was defined with a density, e.g. via the
+<A HREF = "read_data.html">read_data</A> command.
+</P>
+<P>Keyword <I>tri</I> sets the size of selected atoms.  The particles must be
+triangles as defined by the <A HREF = "atom_style.html">atom_style tri</A> command.
+If the specified value is non-zero the triangle is (re)set to be an
+equilateral triangle in the xy plane with side length = the specified
+value, with a centroid at the particle position, with its base
+parallel to the x axis, and the y-axis running from the center of the
+base to the top point of the triangle.  If the specified value is 0.0,
+the particle will become a point particle.  Note that this command
+does not adjust the particle mass, even if it was defined with a
+density, e.g. via the <A HREF = "read_data.html">read_data</A> command.
+</P>
+<P>Keyword <I>theta</I> sets the orientation of selected atoms.  The particles
+must be line segments as defined by the <A HREF = "atom_style.html">atom_style
+line</A> command.  The specified value is used to set the
+orientation angle of the line segments with respect to the x axis.
+</P>
+<P>Keyword <I>angmom</I> sets the angular momentum of selected atoms.  The
+particles must be ellipsoids as defined by the <A HREF = "atom_style.html">atom_style
+ellipsoid</A> command or triangles as defined by the
+<A HREF = "atom_style.html">atom_style tri</A> command.  The angular momentum vector
+of the particles is set to the 3 specified components.
+</P>
 <P>Keyword <I>mass</I> sets the mass of all selected particles.  The particles
 must have a per-atom mass attribute, as defined by the
 <A HREF = "atom_style.html">atom_style</A> command.  See the "mass" command for how
 to set mass values on a per-type basis.
 </P>
-<P>Keyword <I>density</I> sets the mass of all selected particles.  The
-particles must have a per-atom mass attribute, as defined by the
-<A HREF = "atom_style.html">atom_style</A> command.  See the "mass" command for how
-to set mass values on a per-type basis.  If the atom has a radius
-attribute (see <A HREF = "atom_style.html">atom_style sphere</A>) and its radius is
-non-zero, its mass is set from the density and particle volume.  The
-same is true if the atom has a shape attribute (see <A HREF = "atom_style.html">atom_style
-ellipsoid</A>) and its 3 shape parameters are non-zero.
-Otherwise the mass is set to the density value directly.
+<P>Keyword <I>density</I> also sets the mass of all selected particles, but in
+a different way.  The particles must have a per-atom mass attribute,
+as defined by the <A HREF = "atom_style.html">atom_style</A> command.  If the atom
+has a radius attribute (see <A HREF = "atom_style.html">atom_style sphere</A>) and
+its radius is non-zero, its mass is set from the density and particle
+volume.  If the atom has a shape attribute (see <A HREF = "atom_style.html">atom_style
+ellipsoid</A>) and its 3 shape parameters are non-zero,
+then its mass is set from the density and particle volume.  If the
+atom has a length attribute (see <A HREF = "atom_style.html">atom_style line</A>)
+and its length is non-zero, then its mass is set from the density and
+line segment length (the input density is assumed to be in
+mass/distance units).  If the atom has an area attribute (see
+<A HREF = "atom_style.html">atom_style tri</A>) and its area is non-zero, then its
+mass is set from the density and triangle area (the input density is
+assumed to be in mass/distance^2 units).  If none of these cases are
+valid, then the mass is set to the density value directly (the input
+density is assumed to be in mass units).
 </P>
 <P>Keyword <I>volume</I> sets the volume of all selected particles.
 Currently, only the <A HREF = "atom_style.html">atom_style peri</A> command defines
diff --git a/doc/set.txt b/doc/set.txt
index 8f37b29f1b..0c352d0958 100644
--- a/doc/set.txt
+++ b/doc/set.txt
@@ -17,8 +17,9 @@ 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 \
-	  {quat/random} or {diameter} or {shape} or {mass} or \
-	  {density} or {volume} or {image} or
+	  {quat/random} or {diameter} or {shape} or \
+	  {length} or {tri} or {theta} or {angmom} or \
+	  {mass} or {density} or {volume} or {image} or
 	  {bond} or {angle} or {dihedral} or {improper} or
 	  {meso_e} or {meso_cv} or {meso_rho} :l
   {type} value = atom type
@@ -36,14 +37,22 @@ keyword = {type} or {type/fraction} or {mol} or {x} or {y} or {z} or \
     Dlen = magnitude of dipole moment (dipole units)
   {quat} values = a b c theta
     a,b,c = unit vector to rotate particle around via right-hand rule
-    theta = rotation angle in degrees
+    theta = rotation angle (degrees)
   {quat/random} value = seed
     seed = random # seed (positive integer) for quaternion orientations
   {diameter} value = diameter of spherical particle (distance units)
   {shape} value = Sx Sy Sz
     Sx,Sy,Sz = 3 diameters of ellipsoid (distance units)
+  {length} value = len
+    len = length of line segment (distance units)
+  {tri} value = side
+    side = side length of equilateral triangle (distance units)
+  {theta} value = angle (degrees)
+    angle = orientation of line segment with respect to x-axis
+  {angmom} values = Lx Ly Lz
+    Lx,Ly,Lz = components of angular momentum vector (distance-mass-velocity units)
   {mass} value = per-atom mass (mass units)
-  {density} value = particle density for sphere or ellipsoid (mass/distance^3 units)
+  {density} value = particle density for sphere or ellipsoid (mass/distance^3 or mass/distance^2 or mass/distance units, depending on dimensionality of particle)
   {volume} value = particle volume for Peridynamic particle (distance^3 units)
   {image} nx ny nz
     nx,ny,nz = which periodic image of the simulation box the atom is in
@@ -138,26 +147,31 @@ the orientation of a particular atom is the same, regardless of how
 many processors are being used.
 
 Keyword {quat} uses the specified values to create a quaternion
-(4-vector) that represents the orientation of the selected atoms.
-Note that particles defined by "atom_style ellipsoid"_atom_style.html
-have 3 shape parameters.  The 3 values must be non-zero for each
-particle set by this command.  They are used to specify the aspect
-ratios of an ellipsoidal particle, which is oriented by default with
-its x-axis along the simulation box's x-axis, and similarly for y and
-z.  If this body is rotated (via the right-hand rule) by an angle
-theta around a unit rotation vector (a,b,c), then the quaternion that
-represents its new orientation is given by (cos(theta/2),
-a*sin(theta/2), b*sin(theta/2), c*sin(theta/2)).  The theta and a,b,c
-values are the arguments to the {quat} keyword.  LAMMPS normalizes the
-quaternion in case (a,b,c) was not specified as a unit vector.  For 2d
-systems, the a,b,c values are ignored, since a rotation vector of
-(0,0,1) is the only valid choice.
+(4-vector) that represents the orientation of the selected atoms.  The
+particles must be ellipsoids as defined by the "atom_style
+ellipsoid"_atom_style.html command or triangles as defined by the
+"atom_style tri"_atom_style.html command.  Note that particles defined
+by "atom_style ellipsoid"_atom_style.html have 3 shape parameters.
+The 3 values must be non-zero for each particle set by this command.
+They are used to specify the aspect ratios of an ellipsoidal particle,
+which is oriented by default with its x-axis along the simulation
+box's x-axis, and similarly for y and z.  If this body is rotated (via
+the right-hand rule) by an angle theta around a unit rotation vector
+(a,b,c), then the quaternion that represents its new orientation is
+given by (cos(theta/2), a*sin(theta/2), b*sin(theta/2),
+c*sin(theta/2)).  The theta and a,b,c values are the arguments to the
+{quat} keyword.  LAMMPS normalizes the quaternion in case (a,b,c) was
+not specified as a unit vector.  For 2d systems, the a,b,c values are
+ignored, since a rotation vector of (0,0,1) is the only valid choice.
 
 Keyword {quat/random} randomizes the orientation of the quaternion of
-the selected atoms.  Random numbers are used in such a way that the
-orientation of a particular atom is the same, regardless of how many
-processors are being used.  For 2d systems, only orientations in the
-xy plane are generated.  As with keyword {quat}, the 3 shape values
+the selected atoms.  The particles must be ellipsoids as defined by
+the "atom_style ellipsoid"_atom_style.html command or triangles as
+defined by the "atom_style tri"_atom_style.html command.  Random
+numbers are used in such a way that the orientation of a particular
+atom is the same, regardless of how many processors are being used.
+For 2d systems, only orientations in the xy plane are generated.  As
+with keyword {quat}, for ellipsoidal particles, the 3 shape values
 must be non-zero for each particle set by this command.
 
 Keyword {diameter} sets the size of the selected atoms.  The particles
@@ -169,7 +183,7 @@ defined with a density, e.g. via the "read_data"_read_data.html
 command.
 
 Keyword {shape} sets the size and shape of the selected atoms.  The
-particles must be aspherical ellipsoids as defined by the "atom_style
+particles must be ellipsoids as defined by the "atom_style
 ellipsoid"_atom_style.html command.  The {Sx}, {Sy}, {Sz} settings are
 the 3 diameters of the ellipsoid in each direction.  All 3 can be set
 to the same value, which means the ellipsoid is effectively a sphere.
@@ -178,20 +192,60 @@ treated as a point particle.  Note that this command does not adjust
 the particle mass, even if it was defined with a density, e.g. via the
 "read_data"_read_data.html command.
 
+Keyword {length} sets the length of selected atoms.  The particles
+must be line segments as defined by the "atom_style
+line"_atom_style.html command.  If the specified value is non-zero the
+line segment is (re)set to a length = the specified value, centered
+around the particle position, with an orientation along the x-axis.
+If the specified value is 0.0, the particle will become a point
+particle.  Note that this command does not adjust the particle mass,
+even if it was defined with a density, e.g. via the
+"read_data"_read_data.html command.
+
+Keyword {tri} sets the size of selected atoms.  The particles must be
+triangles as defined by the "atom_style tri"_atom_style.html command.
+If the specified value is non-zero the triangle is (re)set to be an
+equilateral triangle in the xy plane with side length = the specified
+value, with a centroid at the particle position, with its base
+parallel to the x axis, and the y-axis running from the center of the
+base to the top point of the triangle.  If the specified value is 0.0,
+the particle will become a point particle.  Note that this command
+does not adjust the particle mass, even if it was defined with a
+density, e.g. via the "read_data"_read_data.html command.
+
+Keyword {theta} sets the orientation of selected atoms.  The particles
+must be line segments as defined by the "atom_style
+line"_atom_style.html command.  The specified value is used to set the
+orientation angle of the line segments with respect to the x axis.
+
+Keyword {angmom} sets the angular momentum of selected atoms.  The
+particles must be ellipsoids as defined by the "atom_style
+ellipsoid"_atom_style.html command or triangles as defined by the
+"atom_style tri"_atom_style.html command.  The angular momentum vector
+of the particles is set to the 3 specified components.
+
 Keyword {mass} sets the mass of all selected particles.  The particles
 must have a per-atom mass attribute, as defined by the
 "atom_style"_atom_style.html command.  See the "mass" command for how
 to set mass values on a per-type basis.
 
-Keyword {density} sets the mass of all selected particles.  The
-particles must have a per-atom mass attribute, as defined by the
-"atom_style"_atom_style.html command.  See the "mass" command for how
-to set mass values on a per-type basis.  If the atom has a radius
-attribute (see "atom_style sphere"_atom_style.html) and its radius is
-non-zero, its mass is set from the density and particle volume.  The
-same is true if the atom has a shape attribute (see "atom_style
-ellipsoid"_atom_style.html) and its 3 shape parameters are non-zero.
-Otherwise the mass is set to the density value directly.
+Keyword {density} also sets the mass of all selected particles, but in
+a different way.  The particles must have a per-atom mass attribute,
+as defined by the "atom_style"_atom_style.html command.  If the atom
+has a radius attribute (see "atom_style sphere"_atom_style.html) and
+its radius is non-zero, its mass is set from the density and particle
+volume.  If the atom has a shape attribute (see "atom_style
+ellipsoid"_atom_style.html) and its 3 shape parameters are non-zero,
+then its mass is set from the density and particle volume.  If the
+atom has a length attribute (see "atom_style line"_atom_style.html)
+and its length is non-zero, then its mass is set from the density and
+line segment length (the input density is assumed to be in
+mass/distance units).  If the atom has an area attribute (see
+"atom_style tri"_atom_style.html) and its area is non-zero, then its
+mass is set from the density and triangle area (the input density is
+assumed to be in mass/distance^2 units).  If none of these cases are
+valid, then the mass is set to the density value directly (the input
+density is assumed to be in mass units).
 
 Keyword {volume} sets the volume of all selected particles.
 Currently, only the "atom_style peri"_atom_style.html command defines
-- 
GitLab