<span id="index-0"></span><h1>fix ave/spatial/sphere command<a class="headerlink" href="#fix-ave-spatial-sphere-command" title="Permalink to this headline">¶</a></h1>
<div class="section" id="syntax">
<h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2>
<div class="highlight-python"><div class="highlight"><pre>vx,vy,vz,fx,fy,fz = atom attribute (velocity, force component)
density/number, density/mass = number or mass density
c_ID = per-atom vector calculated by a compute with ID
c_ID[I] = Ith column of per-atom array calculated by a compute with ID
f_ID = per-atom vector calculated by a fix with ID
f_ID[I] = Ith column of per-atom array calculated by a fix with ID
v_name = per-atom vector calculated by an atom-style variable with name
</pre></div>
</div>
<ul class="simple">
<li>zero or more keyword/arg pairs may be appended</li>
<li>keyword = <em>region</em> or <em>norm</em> or <em>units</em> or <em>ave</em> or <em>file</em> or <em>overwrite</em> or <em>title1</em> or <em>title2</em> or <em>title3</em></li>
</ul>
<pre class="literal-block">
<em>region</em> arg = region-ID
region-ID = ID of region atoms must be in to contribute to spatial averaging
<em>norm</em> arg = <em>all</em> or <em>sample</em>
<em>units</em> arg = <em>box</em> or <em>lattice</em> or <em>reduced</em>
<em>ave</em> args = <em>one</em> or <em>running</em> or <em>window M</em>
one = output new average value every Nfreq steps
running = output cumulative average of all previous Nfreq steps
window M = output average of M most recent Nfreq steps
<em>file</em> arg = filename
filename = file to write results to
<em>overwrite</em> arg = none = overwrite output file with only latest output
<em>title1</em> arg = string
string = text to print as 1st line of output file
<em>title2</em> arg = string
string = text to print as 2nd line of output file
<em>title3</em> arg = string
string = text to print as 3rd line of output file
</pre>
</div>
<div class="section" id="examples">
<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2>
<h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2>
<p>Use one or more per-atom vectors as inputs every few timesteps, bin
their values spatially into spherical shells based on current atom
coordinates, and average the bin values over longer timescales. The
resulting bin averages can be used by other <a class="reference internal" href="Section_howto.html#howto-15"><span>output commands</span></a> such as <a class="reference internal" href="thermo_style.html"><em>thermo_style custom</em></a>, and can also be written to a file.</p>
<p>The group specified with the command means only atoms within the group
contribute to bin averages. If the <em>region</em> keyword is used, the atom
must be in both the group and the specified geometric
<a class="reference internal" href="region.html"><em>region</em></a> in order to contribute to bin averages.</p>
<p>Each listed value can be an atom attribute (position, velocity, force
component), a mass or number density, or the result of a
<a class="reference internal" href="compute.html"><em>compute</em></a> or <a class="reference internal" href="fix.html"><em>fix</em></a> or the evaluation of an
atom-style <a class="reference internal" href="variable.html"><em>variable</em></a>. In the latter cases, the
compute, fix, or variable must produce a per-atom quantity, not a
global quantity. If you wish to time-average global quantities from a
compute, fix, or variable, then see the <a class="reference internal" href="fix_ave_time.html"><em>fix ave/time</em></a> command.</p>
<p><a class="reference internal" href="compute.html"><em>Computes</em></a> that produce per-atom quantities are those
which have the word <em>atom</em> in their style name. See the doc pages for
individual <a class="reference internal" href="fix.html"><em>fixes</em></a> to determine which ones produce per-atom
quantities. <a class="reference internal" href="variable.html"><em>Variables</em></a> of style <em>atom</em> are the only
ones that can be used with this fix since all other styles of variable
produce global quantities.</p>
<p>The per-atom values of each input vector are binned and averaged
independently of the per-atom values in other input vectors.</p>
<p><em>Nbins</em> specifies the number of spherical shells which will be created
between r_min and r_max centered at (origin_x, origin_y, origin_z).</p>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">This fix works by creating an array of size Nbins by
Nvalues on each processor. Nbins is the total number of bins; Nvalues
is the number of input values specified. Each processor loops over
its atoms, tallying its values to the appropriate bin. Then the
entire array is summed across all processors. This means that using a
large number of bins will incur an overhead in memory and computational
cost (summing across processors), so be careful to use reasonable numbers
of bins.</p>
</div>
<hr class="docutils" />
<p>The <em>Nevery</em>, <em>Nrepeat</em>, and <em>Nfreq</em> arguments specify on what
timesteps the input values will be used to bin them and contribute to
the average. The final averaged quantities are generated on timesteps
that are a multiples of <em>Nfreq</em>. The average is over <em>Nrepeat</em>
quantities, computed in the preceding portion of the simulation every
<em>Nevery</em> timesteps. <em>Nfreq</em> must be a multiple of <em>Nevery</em> and
<em>Nevery</em> must be non-zero even if <em>Nrepeat</em> is 1. Also, the timesteps
contributing to the average value cannot overlap, i.e. Nfreq >
(Nrepeat-1)*Nevery is required.</p>
<p>For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
timesteps 90,92,94,96,98,100 will be used to compute the final average
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time
averaging is done; values are simply generated on timesteps
100,200,etc.</p>
<hr class="docutils" />
<p>The <em>origin_x</em>, <em>origin_y</em>, and <em>origin_z</em> parameters may be specified
by either a compute or a variable. This allows, for example, the
center of the spherical bins to be attached to the center of mass of a
group of atoms. If a variable origin is used and periodic boundary
conditions are in effect, then the origin will be wrapped across
periodic boundaries whenever it changes so that it is always inside
the simulation box.</p>
<hr class="docutils" />
<p>The atom attribute values (vx,vy,vz,fx,fy,fz) are self-explanatory.
Note that other atom attributes (including atom postitions x,y,z) can
be used as inputs to this fix by using the <a class="reference internal" href="compute_property_atom.html"><em>compute property/atom</em></a> command and then specifying
an input value from that compute.</p>
<p>The <em>density/number</em> value means the number density is computed in
each bin, i.e. a weighting of 1 for each atom. The <em>density/mass</em>
value means the mass density is computed in each bin, i.e. each atom
is weighted by its mass. The resulting density is normalized by the
volume of the bin so that units of number/volume or density are
output. See the <a class="reference internal" href="units.html"><em>units</em></a> command doc page for the
definition of density for each choice of units, e.g. gram/cm^3.
The bin volume will always be calculated in box units, independent
of the use of the <em>units</em> keyword in this command.</p>
<p>If a value begins with “<a href="#id1"><span class="problematic" id="id2">c_</span></a>”, a compute ID must follow which has been
previously defined in the input script. If no bracketed integer is
appended, the per-atom vector calculated by the compute is used. If a
bracketed integer is appended, the Ith column of the per-atom array
calculated by the compute is used. Users can also write code for
their own compute styles and <a class="reference internal" href="Section_modify.html"><em>add them to LAMMPS</em></a>.</p>
<p>If a value begins with “<a href="#id3"><span class="problematic" id="id4">f_</span></a>”, a fix ID must follow which has been
previously defined in the input script. If no bracketed integer is
appended, the per-atom vector calculated by the fix is used. If a
bracketed integer is appended, the Ith column of the per-atom array
calculated by the fix is used. Note that some fixes only produce
their values on certain timesteps, which must be compatible with
<em>Nevery</em>, else an error results. Users can also write code for their
own fix styles and <a class="reference internal" href="Section_modify.html"><em>add them to LAMMPS</em></a>.</p>
<p>If a value begins with “<a href="#id5"><span class="problematic" id="id6">v_</span></a>”, a variable name must follow which has
been previously defined in the input script. Variables of style
<em>atom</em> can reference thermodynamic keywords and various per-atom
attributes, or invoke other computes, fixes, or variables when they
are evaluated, so this is a very general means of generating per-atom
quantities to spatially average.</p>
<hr class="docutils" />
<p>Additional optional keywords also affect the operation of this fix.
The <em>region</em> keyword was discussed above.</p>
<p>The <em>norm</em> keyword affects how averaging is done for the output
produced every <em>Nfreq</em> timesteps. For an <em>all</em> setting, a bin
quantity is summed over all atoms in all <em>Nrepeat</em> samples, as is the
count of atoms in the bin. The printed value for the bin is
Total-quantity / Total-count. In other words it is an average over
the entire <em>Nfreq</em> timescale.</p>
<p>For a <em>sample</em> setting, the bin quantity is summed over atoms for only
a single sample, as is the count, and a “average sample value” is
computed, i.e. Sample-quantity / Sample-count. The printed value for
the bin is the average of the <em>Nrepeat</em> “average sample values”, In
other words it is an average of an average.</p>
<p>The <em>ave</em> keyword determines how the bin values produced every <em>Nfreq</em>
steps are averaged with bin values produced on previous steps that
were multiples of <em>Nfreq</em>, before they are accessed by another output
command or written to a file.</p>
<p>If the <em>ave</em> setting is <em>one</em>, then the bin values produced on
timesteps that are multiples of <em>Nfreq</em> are independent of each other;
they are output as-is without further averaging.</p>
<p>If the <em>ave</em> setting is <em>running</em>, then the bin values produced on
timesteps that are multiples of <em>Nfreq</em> are summed and averaged in a
cumulative sense before being output. Each output bin value is thus
the average of the bin value produced on that timestep with all
preceding values for the same bin. This running average begins when
the fix is defined; it can only be restarted by deleting the fix via
the <a class="reference internal" href="unfix.html"><em>unfix</em></a> command, or re-defining the fix by
re-specifying it.</p>
<p>If the <em>ave</em> setting is <em>window</em>, then the bin values produced on
timesteps that are multiples of <em>Nfreq</em> are summed and averaged within
a moving “window” of time, so that the last M values for the same bin
are used to produce the output. E.g. if M = 3 and Nfreq = 1000, then
the output on step 10000 will be the average of the individual bin
values on steps 8000,9000,10000. Outputs on early steps will average
over less than M values if they are not available.</p>
<p>The <em>units</em> keyword determines the meaning of the distance units used
for the sphere origin and the two radial lengths. For orthogonal
simulation boxes, any of the 3 options may be used. For
non-orthogonal (triclinic) simulation boxes, only the <em>reduced</em> option
may be used.</p>
<p>A <em>box</em> value selects standard distance units as defined by the
<a class="reference internal" href="units.html"><em>units</em></a> command, e.g. Angstroms for units = real or metal.
A <em>lattice</em> value means the distance units are in lattice spacings.
The <a class="reference internal" href="lattice.html"><em>lattice</em></a> command must have been previously used to
define the lattice spacing.</p>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">The <em>lattice</em> style may only be used if the lattice
spacing is the same in each direction.</p>
</div>
<p>A <em>reduced</em> value means normalized unitless values between 0 and 1,
which represent the lower and upper faces of the simulation box
respectively. Thus an <em>origin</em> value of 0.5 means the center of the
box in any dimension.</p>
<p>The <em>file</em> keyword allows a filename to be specified. Every <em>Nfreq</em>
timesteps, a section of bin info will be written to a text file in the
following format. A line with the timestep and number of bin is
written. Then one line per bin is written, containing the bin ID
(1-N), the coordinate of the center of the bin, the number of atoms in
the bin, and one or more calculated values. The number of values in
each line corresponds to the number of values specified in the fix
ave/spatial command. The number of atoms and the value(s) are average
quantities. If the value of the <em>units</em> keyword is <em>box</em> or
<em>lattice</em>, the “coord” is printed in box units. If the value of the
<em>units</em> keyword is <em>reduced</em>, the “coord” is printed in reduced units
(0-1).</p>
<p>The <em>overwrite</em> keyword will continuously overwrite the output file
with the latest output, so that it only contains one timestep worth of
output. This option can only be used with the <em>ave running</em> setting.</p>
<p>The <em>title1</em> and <em>title2</em> and <em>title3</em> keywords allow specification of
the strings that will be printed as the first 3 lines of the output
file, assuming the <em>file</em> keyword was used. LAMMPS uses default
values for each of these, so they do not need to be specified.</p>
<p>By default, these header lines are as follows:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="c"># Spatial-averaged data for fix ID and group name</span>
<span class="c"># Timestep Number-of-bins</span>
<span class="c"># Bin r Count value1 value2 ...</span>
</pre></div>
</div>
<p>In the first line, ID and name are replaced with the fix-ID and group
name. The second line describes the two values that are printed at
the first of each section of output. In the third line the values are
replaced with the appropriate fields from the fix ave/spatial command.
The Coord2 and Coord3 entries in the third line only appear for 2d and
3d bins respectively. For 1d bins, the word Coord1 is replaced by
<h2>Restart, fix_modify, output, run start/stop, minimize info<a class="headerlink" href="#restart-fix-modify-output-run-start-stop-minimize-info" title="Permalink to this headline">¶</a></h2>
<p>No information about this fix is written to <a class="reference internal" href="restart.html"><em>binary restart files</em></a>. None of the <a class="reference internal" href="fix_modify.html"><em>fix_modify</em></a> options
are relevant to this fix.</p>
<p>This fix computes a global array of values which can be accessed by
various <a class="reference internal" href="Section_howto.html#howto-15"><span>output commands</span></a>. The values can
only be accessed on timesteps that are multiples of <em>Nfreq</em> since that
is when averaging is performed. The global array has # of rows =
Nbins and # of columns = 2+Nvalues. The first column contains the
radius at the center of the shell. For units <em>reduced</em>, this is in
reduced units, while for units <em>box</em> and <em>lattice</em> this is in box
units. The next column has the count of atoms in that bin, and the
remaining columns are the Nvalue quantities. When the array is
accessed with an I that exceeds the current number of bins, than a 0.0
is returned by the fix instead of an error. The array values
calculated by this fix are “intensive”, since they are already
normalized by the count of atoms in each bin.</p>
<p>No parameter of this fix can be used with the <em>start/stop</em> keywords of
the <a class="reference internal" href="run.html"><em>run</em></a> command. This fix is not invoked during <a class="reference internal" href="minimize.html"><em>energy minimization</em></a>.</p>
</div>
<div class="section" id="restrictions">
<h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2>
<p>When the <em>ave</em> keyword is set to <em>running</em> or <em>window</em> then the number
of bins must remain the same during the simulation, so that the
appropriate averaging can be done. This will be the case if the
simulation box size doesn’t change or if the <em>units</em> keyword is set to
<em>reduced</em>.</p>
<p>This style is part of the USER-MISC package. It is only enabled if
LAMMPS is build with that package. See the <span class="xref std std-ref">Making of LAMMPS</span> section for more info.</p>
</div>
<div class="section" id="related-commands">
<h2>Related commands<a class="headerlink" href="#related-commands" title="Permalink to this headline">¶</a></h2>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.