From 43a8d254fae58f1757bbfe12cee283904dcc3c59 Mon Sep 17 00:00:00 2001 From: sjplimp <sjplimp@f3b2605a-c512-4ea7-a41b-209d697bcdaa> Date: Thu, 25 Jul 2013 23:57:01 +0000 Subject: [PATCH] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@10393 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- doc/compute_voronoi_atom.html | 100 +++++++++++++++++++++++++++++----- doc/compute_voronoi_atom.txt | 100 ++++++++++++++++++++++++++++------ 2 files changed, 168 insertions(+), 32 deletions(-) diff --git a/doc/compute_voronoi_atom.html b/doc/compute_voronoi_atom.html index c6ed8533c5..1a6a474d71 100644 --- a/doc/compute_voronoi_atom.html +++ b/doc/compute_voronoi_atom.html @@ -13,33 +13,103 @@ </H3> <P><B>Syntax:</B> </P> -<PRE>compute ID group-ID voronoi/atom +<PRE>compute ID group-ID voronoi/atom keyword arg </PRE> -<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command +<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command + <LI>voronoi/atom = style name of this compute command + +<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 args + <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 + <I>edge_histo</I> arg = maxedge + 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 + minarea = minimum area for a face to be counted +</PRE> + </UL> <P><B>Examples:</B> </P> -<PRE>compute 1 all voronoi/atom +<PRE>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> <P><B>Description:</B> </P> -<P>Define a computation that calculates the Voronoi tesselation of the -atoms in the simulation box. The tesselation is calculated using -all atoms in the simulation, but non-zero values are only stored -for atoms in the group. +<P>Define a computation that calculates the Voronoi tessellation of the +atoms in the simulation box. The tessellation is calculated using all +atoms in the simulation, but non-zero values are only stored for atoms +in the group. </P> -<P>Two quantites per atom are calculated by this compute. The first is -the volume of the Voronoi cell around each atom. Any point in an -atom's Voronoi cell is closer to that atom than any other. The second -is the number of faces of the Voronoi cell, which is also the number -of nearest neighbors of the atom in the middle of the cell. +<P>By default two quantities per atom are calculated by this compute. +The first is the volume of the Voronoi cell around each atom. Any +point in an atom's Voronoi cell is closer to that atom than any other. +The second is the number of faces of the Voronoi cell, which is also +the number of nearest neighbors of the atom in the middle of the cell. </P> +<HR> + +<P>If the <I>only_group</I> keyword is specified the tessellation is performed +only with respect to the atoms contained in the compute group. This is +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 +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 +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 +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 +performed. Examples for radius variables are +</P> +<PRE>variable r1 atom (type==1)*0.1+(type==2)*0.4 +compute radius all property/atom radius +variable r2 atom c_radius +</PRE> +<P>Here v_r1 specifies a per-type radius of 0.1 units for type 1 atoms +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 +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 +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 +smallest amount of edges is a triangle, entries 1 and 2 of the vector +will always be zero. +</P> +<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 +the neighbor count and edge histogram outputs. +</P> +<HR> + <P>The Voronoi calculation is performed by the freely available <A HREF = "http://math.lbl.gov/voro++">Voro++ package</A>, written by Chris Rycroft at UC Berkeley and LBL, which must be installed on your system when building LAMMPS for use -with this compute. See instructions on obtaining and installing -the Voro++ software in the src/VORONOI/README file. +with this compute. See instructions on obtaining and installing the +Voro++ software in the src/VORONOI/README file. </P> @@ -56,7 +126,7 @@ explicitly via the <A HREF = "communicate.html">communicate cutoff</A> command. </P> <P>IMPORTANT NOTE: The Voro++ package performs its calculation in 3d. This should still work for a 2d LAMMPS simulation, to effectively -compute Vornoi "areas", so long as the z-dimension of the box is +compute Voronoi "areas", so long as the z-dimension of the box is roughly the same (or smaller) compared to the separation of the atoms. Typical values for the z box dimensions in a 2d LAMMPS model are -0.5 to 0.5, which satisfies the criterion for most <A HREF = "units.html">units</A> diff --git a/doc/compute_voronoi_atom.txt b/doc/compute_voronoi_atom.txt index 7176bd4342..73a7980407 100644 --- a/doc/compute_voronoi_atom.txt +++ b/doc/compute_voronoi_atom.txt @@ -10,33 +10,99 @@ compute voronoi/atom command :h3 [Syntax:] -compute ID group-ID voronoi/atom :pre - -ID, group-ID are documented in "compute"_compute.html command -voronoi/atom = style name of this compute command :ul +compute ID group-ID voronoi/atom keyword arg :pre + +ID, group-ID are documented in "compute"_compute.html command :ulb,l +voronoi/atom = style name of this compute command :l +keyword = {only_group} or {surface} or {radius} or {edge_histo} or {edge_threshold} or {face_threshold} :l + {only_group} = no args + {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 + {edge_histo} arg = maxedge + 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 + minarea = minimum area for a face to be counted :pre +:ule [Examples:] -compute 1 all voronoi/atom :pre +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 [Description:] -Define a computation that calculates the Voronoi tesselation of the -atoms in the simulation box. The tesselation is calculated using -all atoms in the simulation, but non-zero values are only stored -for atoms in the group. +Define a computation that calculates the Voronoi tessellation of the +atoms in the simulation box. The tessellation is calculated using all +atoms in the simulation, but non-zero values are only stored for atoms +in the group. + +By default two quantities per atom are calculated by this compute. +The first is the volume of the Voronoi cell around each atom. Any +point in an atom's Voronoi cell is closer to that atom than any other. +The second is the number of faces of the Voronoi cell, which is also +the number of nearest neighbors of the atom in the middle of the cell. + +:line + +If the {only_group} keyword is specified the tessellation is performed +only with respect to the atoms contained in the compute group. This is +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 +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 +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 +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 +performed. Examples for radius variables are + +variable r1 atom (type==1)*0.1+(type==2)*0.4 +compute radius all property/atom radius +variable r2 atom c_radius :pre + +Here v_r1 specifies a per-type radius of 0.1 units for type 1 atoms +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 +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 +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 +smallest amount of edges is a triangle, entries 1 and 2 of the vector +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 +the neighbor count and edge histogram outputs. -Two quantites per atom are calculated by this compute. The first is -the volume of the Voronoi cell around each atom. Any point in an -atom's Voronoi cell is closer to that atom than any other. The second -is the number of faces of the Voronoi cell, which is also the number -of nearest neighbors of the atom in the middle of the cell. +:line The Voronoi calculation is performed by the freely available "Voro++ package"_voronoi, written by Chris Rycroft at UC Berkeley and LBL, which must be installed on your system when building LAMMPS for use -with this compute. See instructions on obtaining and installing -the Voro++ software in the src/VORONOI/README file. +with this compute. See instructions on obtaining and installing the +Voro++ software in the src/VORONOI/README file. :link(voronoi,http://math.lbl.gov/voro++) @@ -53,7 +119,7 @@ explicitly via the "communicate cutoff"_communicate.html command. IMPORTANT NOTE: The Voro++ package performs its calculation in 3d. This should still work for a 2d LAMMPS simulation, to effectively -compute Vornoi "areas", so long as the z-dimension of the box is +compute Voronoi "areas", so long as the z-dimension of the box is roughly the same (or smaller) compared to the separation of the atoms. Typical values for the z box dimensions in a 2d LAMMPS model are -0.5 to 0.5, which satisfies the criterion for most "units"_units.html -- GitLab