From 13a3caa878407ff2a6d06eacbc0ed1840c11c9ae Mon Sep 17 00:00:00 2001
From: sjplimp <sjplimp@f3b2605a-c512-4ea7-a41b-209d697bcdaa>
Date: Fri, 18 Apr 2014 15:15:16 +0000
Subject: [PATCH] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@11826
 f3b2605a-c512-4ea7-a41b-209d697bcdaa

---
 doc/compute_voronoi_atom.html | 45 +++++++++++++++++++++++++----------
 doc/compute_voronoi_atom.txt  | 44 ++++++++++++++++++++++++----------
 2 files changed, 65 insertions(+), 24 deletions(-)

diff --git a/doc/compute_voronoi_atom.html b/doc/compute_voronoi_atom.html
index 7119991d2a..2b086741ea 100644
--- a/doc/compute_voronoi_atom.html
+++ b/doc/compute_voronoi_atom.html
@@ -24,13 +24,14 @@
 <LI>keyword = <I>only_group</I> or <I>surface</I> or <I>radius</I> or <I>edge_histo</I> or <I>edge_threshold</I> or <I>face_threshold</I> 
 
 <PRE>  <I>only_group</I> = no arg
+  <I>occupation</I> = no arg
   <I>surface</I> arg = sgroup-ID
     sgroup-ID = compute the dividing surface between group-ID and sgroup-ID
       this keyword adds a third column to the compute output
   <I>radius</I> arg = v_r
-    v_r = radius atom style variable for a poly-disperse voronoi tessellation
+    v_r = radius atom style variable for a poly-disperse Voronoi tessellation
   <I>edge_histo</I> arg = maxedge
-    maxedge = maximum number of voronoi cell edges to be accounted in the histogram 
+    maxedge = maximum number of Voronoi cell edges to be accounted in the histogram 
   <I>edge_threshold</I> arg = minlength
     minlength = minimum length for an edge to be counted
   <I>face_threshold</I> arg = minarea
@@ -45,6 +46,8 @@ compute 2 precipitate voronoi/atom surface matrix
 compute 3b precipitate voronoi/atom radius v_r 
 compute 4 solute voronoi/atom only_group 
 </PRE>
+<PRE>compute 5 defects voronoi/atom occupation 
+</PRE>
 <P><B>Description:</B>
 </P>
 <P>Define a computation that calculates the Voronoi tessellation of the
@@ -66,19 +69,19 @@ equivalent to deleting all atoms not contained in the group prior to
 evaluating the tessellation.
 </P>
 <P>If the <I>surface</I> keyword is specified a third quantity per atom is
-computed: the voronoi cell surface of the given atom. <I>surface</I> takes
+computed: the Voronoi cell surface of the given atom. <I>surface</I> takes
 a group ID as an argument. If a group other than <I>all</I> is specified,
-only the voronoi cell facets facing a neighbor atom from the specified
+only the Voronoi cell facets facing a neighbor atom from the specified
 group are counted towards the surface area.
 </P>
 <P>In the example above, a precipitate embedded in a matrix, only atoms
 at the surface of the precipitate will have non-zero surface area, and
-only the outward facing facets of the voronoi cells are counted (the
+only the outward facing facets of the Voronoi cells are counted (the
 hull of the precipitate). The total surface area of the precipitate
 can be obtained by running a "reduce sum" compute on c_2[3]
 </P>
 <P>If the <I>radius</I> keyword is specified with an atom style variable as
-the argument, a poly-disperse voronoi tessellation is
+the argument, a poly-disperse Voronoi tessellation is
 performed. Examples for radius variables are
 </P>
 <PRE>variable r1 atom (type==1)*0.1+(type==2)*0.4
@@ -90,9 +93,9 @@ and 0.4 units for type 2 atoms, and v_r2 accesses the radius property
 present in atom_style sphere for granular models.
 </P>
 <P>The <I>edge_histo</I> keyword activates the compilation of a histogram of
-number of edges on the faces of the voronoi cells in the compute
+number of edges on the faces of the Voronoi cells in the compute
 group. The argument maxedge of the this keyword is the largest number
-of edges on a single voronoi cell face expected to occur in the
+of edges on a single Voronoi cell face expected to occur in the
 sample. This keyword adds the generation of a global vector with
 maxedge+1 entries. The last entry in the vector contains the number of
 faces with with more than maxedge edges. Since the polygon with the
@@ -102,9 +105,25 @@ will always be zero.
 <P>The <I>edge_threshold</I> and <I>face_threshold</I> keywords allow the
 suppression of edges below a given minimum length and faces below a
 given minimum area. Ultra short edges and ultra small faces can occur
-as artifacts of the voronoi tessellation. These keywords will affect
+as artifacts of the Voronoi tessellation. These keywords will affect
 the neighbor count and edge histogram outputs.
 </P>
+<P>If the <I>occupation</I> keyword is specified the tessellation is only
+performed for the first invocation of the compute and then stored.
+For all following invocations of the compute the number of atoms in
+each Voronoi cell in the stored tessellation is counted. In this mode
+the compute returns a per-atom array with 2 columns. The first column
+is the number of atoms currently in the Voronoi volume defined by this 
+atom at the time of the first invocation of the compute (note that the 
+atom may have moved significantly). The second column contains the
+total number of atoms sharing the Voronoi cell of the stored 
+tessellation at the location of the current atom. Numbers in column one
+can be any positive integer including zero, while column two values will 
+always be greater than zero. Column one data can be used 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.
+</P>
 <HR>
 
 <P>The Voronoi calculation is performed by the freely available <A HREF = "http://math.lbl.gov/voro++">Voro++
@@ -138,9 +157,11 @@ systems.  Note that you define the z extent of the simulation box for
 </P>
 <P><B>Output info:</B>
 </P>
-<P>This compute calculates a per-atom array with 2 columns.  The first
-column is the Voronoi volume, the second is the neighbor count, as
-described above.  These values can be accessed by any command that
+<P>This compute calculates a per-atom array with 2 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 <I>occupation</I> keyword is specified). 
+These values can be accessed by any command that
 uses per-atom values from a compute as input.  See <A HREF = "Section_howto.html#howto_15">Section_howto
 15</A> for an overview of LAMMPS output
 options.
diff --git a/doc/compute_voronoi_atom.txt b/doc/compute_voronoi_atom.txt
index d907aad9c0..c4e651418b 100644
--- a/doc/compute_voronoi_atom.txt
+++ b/doc/compute_voronoi_atom.txt
@@ -17,13 +17,14 @@ voronoi/atom = style name of this compute command :l
 zero or more keyword/value pairs may be appended :l
 keyword = {only_group} or {surface} or {radius} or {edge_histo} or {edge_threshold} or {face_threshold} :l
   {only_group} = no arg
+  {occupation} = no arg
   {surface} arg = sgroup-ID
     sgroup-ID = compute the dividing surface between group-ID and sgroup-ID
       this keyword adds a third column to the compute output
   {radius} arg = v_r
-    v_r = radius atom style variable for a poly-disperse voronoi tessellation
+    v_r = radius atom style variable for a poly-disperse Voronoi tessellation
   {edge_histo} arg = maxedge
-    maxedge = maximum number of voronoi cell edges to be accounted in the histogram 
+    maxedge = maximum number of Voronoi cell edges to be accounted in the histogram 
   {edge_threshold} arg = minlength
     minlength = minimum length for an edge to be counted
   {face_threshold} arg = minarea
@@ -36,6 +37,7 @@ compute 1 all voronoi/atom
 compute 2 precipitate voronoi/atom surface matrix
 compute 3b precipitate voronoi/atom radius v_r 
 compute 4 solute voronoi/atom only_group :pre
+compute 5 defects voronoi/atom occupation :pre
 
 [Description:]
 
@@ -58,19 +60,19 @@ equivalent to deleting all atoms not contained in the group prior to
 evaluating the tessellation.
 
 If the {surface} keyword is specified a third quantity per atom is
-computed: the voronoi cell surface of the given atom. {surface} takes
+computed: the Voronoi cell surface of the given atom. {surface} takes
 a group ID as an argument. If a group other than {all} is specified,
-only the voronoi cell facets facing a neighbor atom from the specified
+only the Voronoi cell facets facing a neighbor atom from the specified
 group are counted towards the surface area.
 
 In the example above, a precipitate embedded in a matrix, only atoms
 at the surface of the precipitate will have non-zero surface area, and
-only the outward facing facets of the voronoi cells are counted (the
+only the outward facing facets of the Voronoi cells are counted (the
 hull of the precipitate). The total surface area of the precipitate
 can be obtained by running a "reduce sum" compute on c_2\[3\]
 
 If the {radius} keyword is specified with an atom style variable as
-the argument, a poly-disperse voronoi tessellation is
+the argument, a poly-disperse Voronoi tessellation is
 performed. Examples for radius variables are
 
 variable r1 atom (type==1)*0.1+(type==2)*0.4
@@ -82,9 +84,9 @@ and 0.4 units for type 2 atoms, and v_r2 accesses the radius property
 present in atom_style sphere for granular models.
 
 The {edge_histo} keyword activates the compilation of a histogram of
-number of edges on the faces of the voronoi cells in the compute
+number of edges on the faces of the Voronoi cells in the compute
 group. The argument maxedge of the this keyword is the largest number
-of edges on a single voronoi cell face expected to occur in the
+of edges on a single Voronoi cell face expected to occur in the
 sample. This keyword adds the generation of a global vector with
 maxedge+1 entries. The last entry in the vector contains the number of
 faces with with more than maxedge edges. Since the polygon with the
@@ -94,9 +96,25 @@ will always be zero.
 The {edge_threshold} and {face_threshold} keywords allow the
 suppression of edges below a given minimum length and faces below a
 given minimum area. Ultra short edges and ultra small faces can occur
-as artifacts of the voronoi tessellation. These keywords will affect
+as artifacts of the Voronoi tessellation. These keywords will affect
 the neighbor count and edge histogram outputs.
 
+If the {occupation} keyword is specified the tessellation is only
+performed for the first invocation of the compute and then stored.
+For all following invocations of the compute the number of atoms in
+each Voronoi cell in the stored tessellation is counted. In this mode
+the compute returns a per-atom array with 2 columns. The first column
+is the number of atoms currently in the Voronoi volume defined by this
+atom at the time of the first invocation of the compute (note that the
+atom may have moved significantly). The second column contains the
+total number of atoms sharing the Voronoi cell of the stored
+tessellation at the location of the current atom. Numbers in column
+one can be any positive integer including zero, while column two
+values will always be greater than zero. Column one data can be used
+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.
+
 :line
 
 The Voronoi calculation is performed by the freely available "Voro++
@@ -130,9 +148,11 @@ systems.  Note that you define the z extent of the simulation box for
 
 [Output info:]
 
-This compute calculates a per-atom array with 2 columns.  The first
-column is the Voronoi volume, the second is the neighbor count, as
-described above.  These values can be accessed by any command that
+This compute calculates a per-atom array with 2 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_howto
 15"_Section_howto.html#howto_15 for an overview of LAMMPS output
 options.
-- 
GitLab