From eec46d66ec9851912b5d4356c0e9cfd141d18d3a Mon Sep 17 00:00:00 2001
From: sjplimp <sjplimp@f3b2605a-c512-4ea7-a41b-209d697bcdaa>
Date: Sat, 25 Jan 2014 23:06:52 +0000
Subject: [PATCH] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@11329
 f3b2605a-c512-4ea7-a41b-209d697bcdaa

---
 doc/atom_style.html | 36 +++++++++++++++++++++++++++---------
 doc/atom_style.txt  | 36 +++++++++++++++++++++++++++---------
 doc/read_data.html  | 23 ++++++++++++++++++-----
 doc/read_data.txt   | 23 ++++++++++++++++++-----
 4 files changed, 90 insertions(+), 28 deletions(-)

diff --git a/doc/atom_style.html b/doc/atom_style.html
index fdadf243d5..49de9bf614 100644
--- a/doc/atom_style.html
+++ b/doc/atom_style.html
@@ -15,13 +15,15 @@
 </P>
 <PRE>atom_style style args 
 </PRE>
-<UL><LI>style = <I>angle</I> or <I>atomic</I> or <I>body</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><LI>style = <I>angle</I> or <I>atomic</I> or <I>body</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>template</I> or <I>hybrid</I> 
 </UL>
 <PRE>  args = none for any style except <I>body</I> and <I>hybrid</I>
   <I>body</I> args = bstyle bstyle-args
     bstyle = style of body particles
     bstyle-args = additional arguments specific to the bstyle
                   see the <A HREF = "body.html">body</A> doc page for details
+  <I>template</I> args = template-ID
+    template-ID = ID of molecule template specified in a separate <A HREF = "molecule.html">molecule</A> command
   <I>hybrid</I> args = list of one or more sub-styles, each with their args 
 </PRE>
 <P><B>Examples:</B>
@@ -31,7 +33,8 @@ atom_style bond
 atom_style full
 atom_style body nparticle 2 10
 atom_style hybrid charge bond
-atom_style hybrid charge body nparticle 2 5 
+atom_style hybrid charge body nparticle 2 5
+atom_style template myMols 
 </PRE>
 <P><B>Description:</B>
 </P>
@@ -73,6 +76,7 @@ quantities.
 <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>template</I> </TD><TD > template index, template atom </TD><TD > small molecules with fixed topology </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>
@@ -92,9 +96,9 @@ output the custom values.
 14</A> for an overview of using finite-size
 particle models with LAMMPS.
 </P>
-<P>All of the styles assign mass to particles on a per-type basis, using
-the <A HREF = "mass.html">mass</A> command, except for the finite-size particle
-styles.  They assign mass to individual particles on a per-particle
+<P>All of the point-particle styles assign mass to particles on a
+per-type basis, using the <A HREF = "mass.html">mass</A> command, The finite-size
+particle styles assign mass to individual particles on a per-particle
 basis.
 </P>
 <P>For the <I>sphere</I> style, the particles are spheres and each stores a
@@ -133,6 +137,16 @@ end points of the line segment).
 stores a per-particle mass and size and orientation (i.e. the corner
 points of the triangle).
 </P>
+<P>The <I>template</I> style allows molecular topolgy (bonds,angles,etc) to be
+defined via a molecule template using the <A HREF = "molecule.txt">molecule</A>
+command.  The template stores one or more molecules with a single copy
+of the topology info (bonds,angles,etc) of each.  Individual atoms
+only store a template index and template atom to identify which
+molecule and which atom-within-the-molecule they represent.  Using the
+<I>template</I> style instead of the <I>bond</I>, <I>angle</I>, <I>molecular</I> styles
+can save memory for systems comprised of a large number of small
+molecules, all of a single type (or small number of types).
+</P>
 <P>For the <I>body</I> style, the particles are arbitrary bodies with internal
 attributes defined by the "style" of the bodies, which is specified by
 the <I>bstyle</I> argument.  Body particles can represent complex entities,
@@ -165,6 +179,10 @@ torque, you would need to use "atom_style hybrid sphere dipole".  When
 a hybrid style is used, atoms store and communicate the union of all
 quantities implied by the individual styles.
 </P>
+<P>When using the <I>hybrid</I> style, you cannot combine the <I>template</I> style
+with another molecular style that stores bond,angle,etc info on a
+per-atom basis.
+</P>
 <P>LAMMPS can be extended with new atom styles as well as new body
 styles; see <A HREF = "Section_modify.html">this section</A>.
 </P>
@@ -173,10 +191,10 @@ styles; see <A HREF = "Section_modify.html">this section</A>.
 <P>This command cannot be used after the simulation box is defined by a
 <A HREF = "read_data.html">read_data</A> or <A HREF = "create_box.html">create_box</A> command.
 </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>line</I> and <I>tri</I> styles are part of the
-ASPHERE pacakge.  The <I>body</I> style is part of the BODY package.  The
-<I>dipole</I> style is part of the DIPOLE package.  The <I>peri</I> style is
+<P>The <I>angle</I>, <I>bond</I>, <I>full</I>, <I>molecular</I>, and <I>template</I> styles are
+part of the MOLECULAR package.  The <I>line</I> and <I>tri</I> styles are part
+of the ASPHERE pacakge.  The <I>body</I> style is part of the BODY package.
+The <I>dipole</I> style is part of the DIPOLE 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
diff --git a/doc/atom_style.txt b/doc/atom_style.txt
index 44049ee8f1..3350c60744 100644
--- a/doc/atom_style.txt
+++ b/doc/atom_style.txt
@@ -14,12 +14,14 @@ atom_style style args :pre
 
 style = {angle} or {atomic} or {body} or {bond} or {charge} or {dipole} or \
         {electron} or {ellipsoid} or {full} or {line} or {meso} or \
-	{molecular} or {peri} or {sphere} or {tri} or {hybrid} :ul
+	{molecular} or {peri} or {sphere} or {tri} or {template} or {hybrid} :ul
   args = none for any style except {body} and {hybrid}
   {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
+  {template} args = template-ID
+    template-ID = ID of molecule template specified in a separate "molecule"_molecule.html command
   {hybrid} args = list of one or more sub-styles, each with their args :pre
 
 [Examples:]
@@ -29,7 +31,8 @@ atom_style bond
 atom_style full
 atom_style body nparticle 2 10
 atom_style hybrid charge bond
-atom_style hybrid charge body nparticle 2 5 :pre
+atom_style hybrid charge body nparticle 2 5
+atom_style template myMols :pre
 
 [Description:]
 
@@ -70,6 +73,7 @@ quantities.
 {molecular} | bonds, angles, dihedrals, impropers | uncharged molecules |
 {peri} | mass, volume | mesocopic Peridynamic models |
 {sphere} | diameter, mass, angular velocity | granular models |
+{template} | template index, template atom | small molecules with fixed topology |
 {tri} | corner points, angular momentum | rigid bodies |
 {wavepacket} | charge, spin, eradius, etag, cs_re, cs_im | AWPMD :tb(c=3,s=|)
 
@@ -88,9 +92,9 @@ All of the above styles define point particles, except the {sphere},
 14"_Section_howto.html#howto_14 for an overview of using finite-size
 particle models with LAMMPS.
 
-All of the styles assign mass to particles on a per-type basis, using
-the "mass"_mass.html command, except for the finite-size particle
-styles.  They assign mass to individual particles on a per-particle
+All of the point-particle styles assign mass to particles on a
+per-type basis, using the "mass"_mass.html command, The finite-size
+particle styles assign mass to individual particles on a per-particle
 basis.
 
 For the {sphere} style, the particles are spheres and each stores a
@@ -129,6 +133,16 @@ 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).
 
+The {template} style allows molecular topolgy (bonds,angles,etc) to be
+defined via a molecule template using the "molecule"_molecule.txt
+command.  The template stores one or more molecules with a single copy
+of the topology info (bonds,angles,etc) of each.  Individual atoms
+only store a template index and template atom to identify which
+molecule and which atom-within-the-molecule they represent.  Using the
+{template} style instead of the {bond}, {angle}, {molecular} styles
+can save memory for systems comprised of a large number of small
+molecules, all of a single type (or small number of types).
+
 For the {body} style, the particles are arbitrary bodies with internal
 attributes defined by the "style" of the bodies, which is specified by
 the {bstyle} argument.  Body particles can represent complex entities,
@@ -161,6 +175,10 @@ torque, you would need to use "atom_style hybrid sphere dipole".  When
 a hybrid style is used, atoms store and communicate the union of all
 quantities implied by the individual styles.
 
+When using the {hybrid} style, you cannot combine the {template} style
+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.
 
@@ -169,10 +187,10 @@ styles; see "this section"_Section_modify.html.
 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 {angle}, {bond}, {full}, and {molecular} styles are part of the
-MOLECULAR package.  The {line} and {tri} styles are part of the
-ASPHERE pacakge.  The {body} style is part of the BODY package.  The
-{dipole} style is part of the DIPOLE package.  The {peri} style is
+The {angle}, {bond}, {full}, {molecular}, and {template} styles are
+part of the MOLECULAR package.  The {line} and {tri} styles are part
+of the ASPHERE pacakge.  The {body} style is part of the BODY package.
+The {dipole} style is part of the DIPOLE 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
diff --git a/doc/read_data.html b/doc/read_data.html
index 7db005e662..c743b3c895 100644
--- a/doc/read_data.html
+++ b/doc/read_data.html
@@ -343,6 +343,7 @@ of analysis.
 <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 >template</TD><TD > atom-ID molecule-ID template-index template-atom atom-type 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 ...  
@@ -359,6 +360,8 @@ of analysis.
 <LI>lineflag = 1 for line segment particles, 0 for point particles
 <LI>triangleflag = 1 for triangular particles, 0 for point particles
 <LI>bodyflag = 1 for body particles, 0 for point particles
+<LI>template-index = which molecule within the molecule template the atom is part of
+<LI>template-atom = which atom within a template molecule the atom is
 <LI>density = density of particle (mass/distance^3 or mass/distance^2 or mass/distance units, depending on dimensionality of particle)
 <LI>mass = mass of particle (mass units)
 <LI>volume = volume of particle (distance^3 units)
@@ -382,11 +385,11 @@ setting in the data file header.
 in dump files.  Normally, it is a unique value from 1 to Natoms for
 each atom.  Unique values larger than Natoms can be used, but they
 will cause extra memory to be allocated on each processor, if an atom
-map array is used (see the <A HREF = "atom_modify.html">atom_modify</A> command).
-If an atom map array is not used (e.g. an atomic system with no
-bonds), and velocities are not assigned in the data file, and you
-don't care if unique atom IDs appear in dump files, then the atom-IDs
-can all be set to 0.
+map array is used, but not if an atom map hash is used; see the
+<A HREF = "atom_modify.html">atom_modify</A> command for details.  If an atom map is
+not used (e.g. an atomic system with no bonds), and you don't care if
+unique atom IDs appear in dump files, then the atom-IDs can all be set
+to 0.
 </P>
 <P>The molecule ID is a 2nd identifier attached to an atom.  Normally, it
 is a number from 1 to N, identifying which molecule the atom belongs
@@ -403,6 +406,16 @@ Additional attributes must be defined for each ellipsoid, line,
 triangle, or body in the corresponding <I>Ellipsoids</I>, <I>Lines</I>,
 <I>Triangles</I>, or <I>Bodies</I> section.
 </P>
+<P>The <I>template-index</I> and <I>template-atom</I> are only defined used by
+<A HREF = "atom_style.html">atom_style template</A>.  In this case the
+<A HREF = "molecule.html">molecule</A> command is used to define a molecule template
+which contains one or more molecules.  If an atom belongs to one of
+those molecules, its <I>template-index</I> and <I>template-atom</I> are both set
+to positive integers; if not the values are both 0.  The
+<I>template-index</I> is which molecule (1 to Nmols) the atom belongs to.
+The <I>template-atom</I> is which atom (1 to Natoms) within the molecule
+the atom is.
+</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
 the doc pages of individual commands for details.
diff --git a/doc/read_data.txt b/doc/read_data.txt
index 8d8aaef3ac..7402acfb48 100644
--- a/doc/read_data.txt
+++ b/doc/read_data.txt
@@ -320,6 +320,7 @@ 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
+template: atom-ID molecule-ID template-index template-atom atom-type 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=:)
@@ -335,6 +336,8 @@ ellipsoidflag = 1 for ellipsoidal particles, 0 for point particles
 lineflag = 1 for line segment particles, 0 for point particles
 triangleflag = 1 for triangular particles, 0 for point particles
 bodyflag = 1 for body particles, 0 for point particles
+template-index = which molecule within the molecule template the atom is part of
+template-atom = which atom within a template molecule the atom is
 density = density of particle (mass/distance^3 or mass/distance^2 or mass/distance units, depending on dimensionality of particle)
 mass = mass of particle (mass units)
 volume = volume of particle (distance^3 units)
@@ -358,11 +361,11 @@ The atom-ID is used to identify the atom throughout the simulation and
 in dump files.  Normally, it is a unique value from 1 to Natoms for
 each atom.  Unique values larger than Natoms can be used, but they
 will cause extra memory to be allocated on each processor, if an atom
-map array is used (see the "atom_modify"_atom_modify.html command).
-If an atom map array is not used (e.g. an atomic system with no
-bonds), and velocities are not assigned in the data file, and you
-don't care if unique atom IDs appear in dump files, then the atom-IDs
-can all be set to 0.
+map array is used, but not if an atom map hash is used; see the
+"atom_modify"_atom_modify.html command for details.  If an atom map is
+not used (e.g. an atomic system with no bonds), and you don't care if
+unique atom IDs appear in dump files, then the atom-IDs can all be set
+to 0.
 
 The molecule ID is a 2nd identifier attached to an atom.  Normally, it
 is a number from 1 to N, identifying which molecule the atom belongs
@@ -379,6 +382,16 @@ Additional attributes must be defined for each ellipsoid, line,
 triangle, or body in the corresponding {Ellipsoids}, {Lines},
 {Triangles}, or {Bodies} section.
 
+The {template-index} and {template-atom} are only defined used by
+"atom_style template"_atom_style.html.  In this case the
+"molecule"_molecule.html command is used to define a molecule template
+which contains one or more molecules.  If an atom belongs to one of
+those molecules, its {template-index} and {template-atom} are both set
+to positive integers; if not the values are both 0.  The
+{template-index} is which molecule (1 to Nmols) the atom belongs to.
+The {template-atom} is which atom (1 to Natoms) within the molecule
+the atom is.
+
 Some pair styles and fixes and computes that operate on finite-size
 particles allow for a mixture of finite-size and point particles.  See
 the doc pages of individual commands for details.
-- 
GitLab