Commit 8b7e9fea authored by sjplimp's avatar sjplimp
Browse files

git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@14481 f3b2605a-c512-4ea7-a41b-209d697bcdaa
parent 36211714
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -289,6 +289,12 @@ stores a flag which indicates whether it is a finite-size ellipsoid or
a point particle.  If it is an ellipsoid, it also stores a shape
vector with the 3 diamters of the ellipsoid and a quaternion 4-vector
with its orientation.</p>
<p>For the <em>dipole</em> style, a point dipole is defined for each point
particle.  Note that if you wish the particles to be finite-size
spheres as in a Stockmayer potential for a dipolar fluid, so that the
particles can rotate due to dipole-dipole interactions, then you need
to use atom_style hybrid sphere dipole, which will assign both a
diameter and dipole moment to each particle.</p>
<p>For the <em>electron</em> style, the particles representing electrons are 3d
Gaussians with a specified position and bandwidth or uncertainty in
position, which is represented by the eradius = electron size.</p>
@@ -360,10 +366,10 @@ simulation are charged, but others are not, use the <em>charge</em> style.
If some atoms have bonds, but others do not, use the <em>bond</em> style.</p>
<p>The only scenario where the <em>hybrid</em> style is needed is if there is no
single style which defines all needed properties of all atoms.  For
example, if you want dipolar particles which will rotate due to
torque, you would need to use &#8220;atom_style hybrid sphere dipole&#8221;.  When
a hybrid style is used, atoms store and communicate the union of all
quantities implied by the individual styles.</p>
example, as mentioned above, if you want dipolar particles which will
rotate due to torque, you need to use &#8220;atom_style hybrid sphere
dipole&#8221;.  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 <em>hybrid</em> style, you cannot combine the <em>template</em> style
with another molecular style that stores bond,angle,etc info on a
per-atom basis.</p>
+11 −4
Original line number Diff line number Diff line
@@ -114,6 +114,13 @@ a point particle. If it is an ellipsoid, it also stores a shape
vector with the 3 diamters of the ellipsoid and a quaternion 4-vector
with its orientation.

For the {dipole} style, a point dipole is defined for each point
particle.  Note that if you wish the particles to be finite-size
spheres as in a Stockmayer potential for a dipolar fluid, so that the
particles can rotate due to dipole-dipole interactions, then you need
to use atom_style hybrid sphere dipole, which will assign both a
diameter and dipole moment to each particle.

For the {electron} style, the particles representing electrons are 3d
Gaussians with a specified position and bandwidth or uncertainty in
position, which is represented by the eradius = electron size.
@@ -197,10 +204,10 @@ If some atoms have bonds, but others do not, use the {bond} style.

The only scenario where the {hybrid} style is needed is if there is no
single style which defines all needed properties of all atoms.  For
example, if you want dipolar particles which will rotate due to
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.
example, as mentioned above, if you want dipolar particles which will
rotate due to torque, you 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
+1 −1
Original line number Diff line number Diff line
@@ -305,7 +305,7 @@ The <em>bflag2</em> argument is ignored.</p>
<p>The <em>rounded/polygon</em> body style represents body particles as a convex
polygon with a variable number N &gt; 2 of vertices, which can only be
used for 2d models.  One example use of this body style is for 2d
discrete element models, as described in <a class="reference internal" href="#fraige"><span>Fraige</span></a>.  Similar to
discrete element models, as described in <a class="reference internal" href="pair_body_rounded_polygon.html#fraige"><span>Fraige</span></a>.  Similar to
body style <em>nparticle</em>, the atom_style body command for this body
style takes two additional arguments:</p>
<div class="highlight-python"><div class="highlight"><pre>atom_style body rounded/polygon Nmin Nmax
+66 −19
Original line number Diff line number Diff line
@@ -135,7 +135,8 @@
<li>ID, group-ID are documented in <a class="reference internal" href="compute.html"><em>compute</em></a> command</li>
<li>voronoi/atom = style name of this compute command</li>
<li>zero or more keyword/value pairs may be appended</li>
<li>keyword = <em>only_group</em> or <em>surface</em> or <em>radius</em> or <em>edge_histo</em> or <em>edge_threshold</em> or <em>face_threshold</em></li>
<li>keyword = <em>only_group</em> or <em>surface</em> or <em>radius</em> or <em>edge_histo</em> or <em>edge_threshold</em>
or <em>face_threshold</em> or <em>neighbors</em> or <em>peratom</em></li>
</ul>
<pre class="literal-block">
<em>only_group</em> = no arg
@@ -151,6 +152,8 @@
  minlength = minimum length for an edge to be counted
<em>face_threshold</em> arg = minarea
  minarea = minimum area for a face to be counted
<em>neighbors</em> value = <em>yes</em> or <em>no</em> = store list of all neighbors or no
<em>peratom</em> value = <em>yes</em> or <em>no</em> = per-atom quantities accessible or no
</pre>
</div>
<div class="section" id="examples">
@@ -164,6 +167,7 @@ compute 4 solute voronoi/atom only_group
<div class="highlight-python"><div class="highlight"><pre>compute 5 defects voronoi/atom occupation
</pre></div>
</div>
<p>compute 6 all voronoi/atom neighbors yes</p>
</div>
<div class="section" id="description">
<h2>Description<a class="headerlink" href="#description" title="Permalink to this headline"></a></h2>
@@ -171,11 +175,14 @@ compute 4 solute voronoi/atom only_group
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>By default two quantities per atom are calculated by this compute.
<p>By default two per-atom quantities are calculated by this compute.
The first is the volume of the Voronoi cell around each atom.  Any
point in an atom&#8217;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>
The second is the number of faces of the Voronoi cell. This is
equal to the number of nearest neighbors of the central atom,
plus any exterior faces (see note below). If the <em>peratom</em> keyword
is set to &#8220;no&#8221;, the per-atom quantities are still calculated,
but they are not accessible.</p>
<hr class="docutils" />
<p>If the <em>only_group</em> keyword is specified the tessellation is performed
only with respect to the atoms contained in the compute group. This is
@@ -204,11 +211,11 @@ 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 <em>edge_histo</em> 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
group. The argument <em>maxedge</em> 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
<em>maxedge*+1 entries. The last entry in the vector contains the number of
faces with with more than *maxedge</em> 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 <em>edge_threshold</em> and <em>face_threshold</em> keywords allow the
@@ -231,6 +238,23 @@ 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>
<p>If the <em>neighbors</em> value is set to yes, then
this compute creates a local array with 3 columns. There
is one row for each face of each Voronoi cell. The
3 columns are the atom ID of the atom that owns the cell,
the atom ID of the atom in the neighboring cell
(or zero if the face is external), and the area of the face.
The array can be accessed by any command that
uses local values from a compute as input.  See <a class="reference internal" href="Section_howto.html#howto-15"><span>this section</span></a> for an overview of LAMMPS output
options. More specifically, the array can be accessed by a
<a class="reference internal" href="dump.html"><em>dump local</em></a> command to write a file containing
all the Voronoi neighbors in a system:</p>
<div class="highlight-python"><div class="highlight"><pre>compute 6 all voronoi/atom neighbors yes
dump d2 all local 1 dump.neighbors index c_6[1] c_6[2] c_6[3]
</pre></div>
</div>
<p>If the <em>face_threshold</em> keyword is used, then only faces
with areas greater than the threshold are stored.</p>
<hr class="docutils" />
<p>The Voronoi calculation is performed by the freely available <a class="reference external" 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
@@ -247,29 +271,52 @@ systems, but may lead to underestimation of Voronoi volumes in low
density systems.  By default, the set of ghost atoms stored by each
processor is determined by the cutoff used for
<a class="reference internal" href="pair_style.html"><em>pair_style</em></a> interactions.  The cutoff can be set
explicitly via the <a class="reference internal" href="comm_modify.html"><em>comm_modify cutoff</em></a> command.</p>
explicitly via the <a class="reference internal" href="comm_modify.html"><em>comm_modify cutoff</em></a> command.
The Voronoi cells for atoms adjacent to empty regions will extend
into those regions up to the communication cutoff in x, y, or z.
In that situation, an exterior
face is created at the cutoff distance normal to the x, y, or z
direction.  For triclinic systems, the exterior face is
parallel to the corresponding reciprocal lattice vector.</p>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The Voro++ package performs its calculation in 3d.  This should
still work for a 2d LAMMPS simulation, to effectively compute Voronoi
&#8220;areas&#8221;, 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 class="reference internal" href="units.html"><em>units</em></a> systems.  Note
<p class="last">The Voro++ package performs its calculation in 3d.  This will
still work for a 2d LAMMPS simulation, provided all the atoms have
the same z coordinate. The Voronoi cell of each atom will be
a columnar polyhedron with constant cross-sectional area
along the z direction and two exterior faces at the top and bottom of the
simulation box. If the atoms do not all
have the same z coordinate, then the columnar cells will be
accordingly distorted. The cross-sectional area of each Voronoi
cell can be obtained by dividing its volume by the z extent
of the simulation box.  Note
that you define the z extent of the simulation box for 2d simulations
when using the <a class="reference internal" href="create_box.html"><em>create_box</em></a> or
<a class="reference internal" href="read_data.html"><em>read_data</em></a> commands.</p>
</div>
<p><strong>Output info:</strong></p>
<p>This compute calculates a per-atom array with 2 columns. In regular
<p>By default, 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 <em>occupation</em> keyword is specified).
These values can be accessed by any command that
uses per-atom values from a compute as input.  See <a class="reference internal" href="Section_howto.html#howto-15"><span>Section_howto 15</span></a> for an overview of LAMMPS output
options.</p>
<p>The Voronoi cell volume will be in distance <a class="reference internal" href="units.html"><em>units</em></a> cubed.</p>
options. If the <em>peratom</em> keyword is set to &#8220;no&#8221;, the
per-atom array is still created, but it is not accessible.</p>
<p>If the <em>edge_histo</em> keyword is used, then this compute
generates a global vector of length <a href="#id1"><span class="problematic" id="id2">*</span></a>maxedge*+1, containing
a histogram of the number of edges per face.</p>
<p>If the <em>neighbors</em> value is set to yes, then
this compute calculates a local array with 3 columns. There
is one row for each face of each Voronoi cell.</p>
<p>In LAMMPS contexts such as <a class="reference internal" href="compute_reduce.html"><em>compute reduce</em></a> that can
accept either a per-atom vector quantity or a local vector
quantity, the behavior depends on the value gives for the <em>peratom</em>
keyword: for the default value &#8220;yes&#8221; the per-atom array is accessed,
for the value <em>no</em> the local array is accessed.</p>
<p>The Voronoi cell volume will be in distance <a class="reference internal" href="units.html"><em>units</em></a> cubed.
The Voronoi face area  will be in distance <a class="reference internal" href="units.html"><em>units</em></a> squared.</p>
</div>
<div class="section" id="restrictions">
<h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline"></a></h2>
@@ -278,8 +325,8 @@ LAMMPS was built with that package. See the <a class="reference internal" href=
</div>
<div class="section" id="related-commands">
<h2>Related commands<a class="headerlink" href="#related-commands" title="Permalink to this headline"></a></h2>
<p><a class="reference internal" href="dump.html"><em>dump custom</em></a></p>
<p><strong>Default:</strong> none</p>
<p><a class="reference internal" href="dump.html"><em>dump custom</em></a>, <a class="reference internal" href="dump.html"><em>dump local</em></a></p>
<p><strong>Default:</strong> <em>neighbors</em> no, <em>peratom</em> yes</p>
</div>
</div>

+9 −4
Original line number Diff line number Diff line
@@ -245,10 +245,15 @@ have been modified by the delete_bonds command.</p>
</div>
<div class="section" id="restrictions">
<h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline"></a></h2>
<p>This command requires inter-processor communication to coordinate the
deleting of bonds.  This means that your system must be ready to
perform a simulation before using this command (force fields setup,
atom masses set, etc).</p>
<p>This command requires inter-processor communication to acquire ghost
atoms, to coordinate the deleting of bonds, angles, etc between atoms
shared by multiple processors.  This means that your system must be
ready to perform a simulation before using this command (force fields
setup, atom masses set, etc).  Just as would be needed to run
dynamics, the force field you define should define a cutoff
(e.g. through a <a class="reference internal" href="pair_style.html"><em>pair_style</em></a> command) which is long
enough for a processor to acquire the ghost atoms its needs to compute
bond, angle, etc interactions.</p>
<p>If deleted bonds (angles, etc) are removed but the 1-2, 1-3, 1-4
weighting list is not recomputed, this can cause a later <a class="reference internal" href="fix_shake.html"><em>fix shake</em></a> command to fail due to an atom&#8217;s bonds being
inconsistent with the weighting list.  This should only happen if the
Loading