forked from lijiext/lammps
264 lines
13 KiB
Plaintext
264 lines
13 KiB
Plaintext
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
|
|
|
:link(lws,http://lammps.sandia.gov)
|
|
:link(ld,Manual.html)
|
|
:link(lc,Section_commands.html#comm)
|
|
|
|
:line
|
|
|
|
fix ave/spatial command :h3
|
|
|
|
[Syntax:]
|
|
|
|
fix ID group-ID ave/spatial Nevery Nrepeat Nfreq dim origin delta style arg keyword args ... :pre
|
|
|
|
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
|
ave/spatial = style name of this fix command :l
|
|
Nevery = calculate property every this many timesteps :l
|
|
Nrepeat = # of times to repeat the Nevery calculation before averaging :l
|
|
Nfreq = timestep frequency at which the average value is computed :l
|
|
dim = {x} or {y} or {z} :l
|
|
origin = {lower} or {center} or {upper} or coordinate value (distance units) :l
|
|
delta = thickness of spatial layers in dim (distance units) :l
|
|
style = {density} or {compute} or {fix} :l
|
|
{density} arg = {mass} or {number}
|
|
{mass} = calculate mass density
|
|
{number} = calculate number density
|
|
{compute} arg = compute-ID that stores or calculates per-atom quantities
|
|
{fix} arg = fix-ID that stores or calculates per-atom quantities :pre
|
|
zero or more keyword/arg pairs may be appended :l
|
|
keyword = {norm} or {units} or {file} or {ave} :l
|
|
{units} arg = {box} or {lattice} or {reduced}
|
|
{norm} arg = {all} or {sample}
|
|
{file} arg = filename
|
|
filename = file to write results to
|
|
{ave} args = {one} or {running} or {window M}
|
|
one = output new average value every Nfreq steps
|
|
running = output cummulative average of all previous Nfreq steps
|
|
window M = output average of M most recent Nfreq steps :pre
|
|
:ule
|
|
|
|
[Examples:]
|
|
|
|
fix 1 all ave/spatial 10000 1 10000 z lower 0.02 compute myCentro units reduced
|
|
fix 1 flow ave/spatial 100 10 1000 y 0.0 1.0 compute Vx norm sample file vel.profile
|
|
fix 1 flow ave/spatial 100 5 1000 y 0.0 2.5 density mass ave running :pre
|
|
|
|
[Description:]
|
|
|
|
Calculate one or more instantaneous per-atom quantities every few
|
|
timesteps, average them by layer in a chosen dimension and over a
|
|
longer timescale. The resulting averages can be used by other "output
|
|
commands"_Section_howto.html#4_15 such as "thermo_style
|
|
custom"_thermo_style.html, and also written to a file.
|
|
|
|
This fix can be used to spatially average per-atom properties
|
|
(velocity, force) or per-atom quantities calculated by a
|
|
"compute"_compute.html (energy, stress) or by another fix (see the
|
|
"fix ave/atom"_fix_ave_atom.html command) or by a variable via an
|
|
equation you define (see the "compute
|
|
variable/atom"_compute_variable_atom.html command).
|
|
|
|
For style {density}, the number of atoms in each layer is counted,
|
|
either by mass or by number. The {compute} style allows specification
|
|
of a "compute"_compute.html which will be invoked to calculate the
|
|
desired property. The compute can be previously defined in the input
|
|
script or it can be a compute defined by a "dump custom"_dump.html
|
|
command.
|
|
|
|
For style {compute}, the fix ave/spatial command accesses the
|
|
per-atom scalar or vector values stored by the compute. Thus it must
|
|
be a "per-atom" compute with the word "atom" in its style name, rather
|
|
than a "global" compute. See the "fix ave/time"_fix_ave_time.html
|
|
command if you wish to time-average a global quantity calculated by a
|
|
compute without the word atom in its style name, e.g. a compute that
|
|
calculates a temperature or pressure.
|
|
|
|
See the "compute"_compute.html command for a list of pre-defined
|
|
per-atom computes. Two special computes of note are as follows. The
|
|
"compute attribute/atom"_compute_attribute_atom.html command selects
|
|
one or more atom attributes like vx or fz. The "compute
|
|
variable/atom" style can calculate a value for an atom that can be
|
|
specified by a "variable atom"_variable.html equation. Users can also
|
|
write code for their own per-atom compute styles and "add them to
|
|
LAMMPS"_Section_modify.html. Note that the "dump custom"_dump.html
|
|
command can also be used to directly output quantities calculated by a
|
|
per-atom compute in a per-atom fashion.
|
|
|
|
For style {fix}, the fix ave/spatial command accesses the per-atom
|
|
scalar or vector values stored by another fix. The "fix
|
|
ave/atom"_fix_ave_atom.html command is an example of such a fix.
|
|
|
|
The {Nevery}, {Nrepeat}, and {Nfreq} arguments specify on what
|
|
timesteps the per-atom property will be evaluated in order to
|
|
contribute to the average. The final averaged values are computed
|
|
every {Nfreq} timesteps. The average is over {Nrepeat} values,
|
|
computed in the preceeding portion of the simulation every {Nevery}
|
|
timesteps. {Nfreq} must be a multiple of {Nevery} and {Nevery} must
|
|
be non-zero even if {Nrepeat} is 1.
|
|
|
|
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. Similary for timesteps 190,192,194,196,198,200 on
|
|
timestep 200, etc.
|
|
|
|
The per-atom property is also averaged over atoms in each layer, where
|
|
the layers are in a particular {dim} and have a thickness given by
|
|
{delta}. Every Nfreq steps, when an averaging is being performed and
|
|
the per-atom property is calculated for the first time, the number of
|
|
layers and the layer boundaries are computed. Thus if the simlation
|
|
box changes size during a simulation, the number of layers and their
|
|
boundaries may also change. Layers are defined relative to a
|
|
specified {origin}, which may be the lower/upper edge of the box (in
|
|
{dim}) or its center point, or a specified coordinate value. Starting
|
|
at the origin, sufficient layers are created in both directions to
|
|
completely cover the box. On subsequent timesteps every atom is
|
|
mapped to one of the layers. Atoms beyond the lowermost/uppermost
|
|
layer are counted in the first/last layer.
|
|
|
|
For orthogonal simulation boxes, the layers are "slices" aligned with
|
|
the xyz coordinate axes. For non-orthogonal (triclinic) simulation
|
|
boxes, the layers are "tilted slices" that are parallel to the tilted
|
|
faces of the box. See the "region prism"_region.html command for a
|
|
discussion of the geometry of tilted boxes in LAMMPS. As described
|
|
there, a tilted simulation box has edge vectors a,b,c. In that
|
|
nomenclature, layers in the x dimension have faces with normals in the
|
|
"b" cross "c" direction. Layers in y have faces normal to the "a"
|
|
cross "c" direction. And layers in z have faces normal to the "a"
|
|
cross "b" direction. Note that in order to define the thickness and
|
|
position of these tilted layers in an unambiguous fashion, the {units}
|
|
option must be set to {reduced} when using a non-orthogonal simulation
|
|
box, as discussed below.
|
|
|
|
For the {compute} and {fix} keywords, the per-atom calculation
|
|
performed by the compute or fix is on the group defined by that
|
|
command. However, only atoms in the fix group are included in the
|
|
layer averaging.
|
|
|
|
Note that some computes perform costly calculations, involving the
|
|
creation or use of neighbor lists. If the compute is invoked too
|
|
often by fix ave/spatial, it can slow down a simulation.
|
|
|
|
:line
|
|
|
|
Additional optional keywords also affect the operation of this fix.
|
|
|
|
The {units} keyword determines the meaning of the distance units used
|
|
for the layer thickness {delta} and for {origin} if it is a coordinate
|
|
value. For orthogonal simulation boxes, any of the 3 options may be
|
|
used. For non-orthogonal (triclinic) simulation boxes, only the
|
|
{reduced} option may be used.
|
|
|
|
A {box} value selects standard distance units as defined by the
|
|
"units"_units.html command, e.g. Angstroms for units = real or metal.
|
|
A {lattice} value means the distance units are in lattice spacings.
|
|
The "lattice"_lattice.html command must have been previously used to
|
|
define the lattice spacing. A {reduced} value means normalized
|
|
unitless values between 0 and 1, which represent the lower and upper
|
|
faces of the simulation box respectively. Thus an {origin} value of
|
|
0.5 means the center of the box in any dimension. A {delta} value of
|
|
0.1 means 10 layers span the box in any dimension.
|
|
|
|
Consider a non-orthogonal box, with layers in the x dimension. No
|
|
matter how the box is tilted, an {origin} of 0.0 means start layers at
|
|
the lower "b" cross "c" plane of the simulation box and an {origin} of
|
|
1.0 means to start layers at the upper "b" cross "c" face of the box.
|
|
A {delta} value of 0.1 means there will be 10 layers from 0.0 to 1.0,
|
|
regardless of the current size or shape of the simulation box.
|
|
|
|
The {norm} keyword affects how time-averaging is done within for the
|
|
output produced every {Nfreq} timesteps. For an {all} setting, a
|
|
layer quantity is summed over all atoms in all {Nrepeat} samples, as
|
|
is the count of atoms in the layer. The printed value for the layer
|
|
is Total-quantity / Total-count. In other words it is an average over
|
|
the entire {Nfreq} timescale.
|
|
|
|
For a {sample} setting, the 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 layer is the average of the {Nrepeat} "average sample values", In
|
|
other words it is an average of an average.
|
|
|
|
The {file} keyword allows a filename to be specified. Every {Nfreq}
|
|
timesteps, layer info will be written to a text file in the following
|
|
format. A line with the timestep and number of layers is written.
|
|
Then one line per layer is written, containing the layer ID (1-N), the
|
|
coordinate of the center of the layer, the number of atoms in the
|
|
layer, and one or more calculated values. The number of atoms and the
|
|
value(s) are average quantities. If the value of the {units} keyword
|
|
is {box} or {lattice}, the "coord" is printed in box units. If the
|
|
value of the {units} keyword is {reduced}, the "coord" is printed in
|
|
reduced units (0-1).
|
|
|
|
If the style is {density}, or the style is {compute} or {fix} with a
|
|
compute/fix that calculates a single quantity per atom, then a single
|
|
value will be printed for each layer. If the style is {compute} or
|
|
{fix} with a compute/fix that calculates N quantities per atom, then N
|
|
values per line will be written, each of them averaged independently.
|
|
|
|
The {ave} keyword determines how the layer values produced every
|
|
{Nfreq} steps are averaged with layer values produced on previous
|
|
steps that were multiples of {Nfreq}, before they are accessed by
|
|
another output command or written to a file.
|
|
|
|
If the {ave} setting is {one}, then the layuer values produced on
|
|
timesteps that are multiples of {Nfreq} are independent of each other;
|
|
they are output as-is without further averaging.
|
|
|
|
If the {ave} setting is {running}, then the layer values produced on
|
|
timesteps that are multiples of {Nfreq} are summed and averaged in a
|
|
cummulative sense before being output. Each output layer value is
|
|
thus the average of the layer value produced on that timestep with all
|
|
preceeding values for the same layer. This running average begins
|
|
when the fix is defined; it can only be restarted by deleting the fix
|
|
via the "unfix"_unfix.html command, or re-defining the fix by
|
|
re-specifying it.
|
|
|
|
If the {ave} setting is {window}, then the layer values produced on
|
|
timesteps that are multiples of {Nfreq} are summed and averaged within
|
|
a moving "window" of time, so that the last M values for the same
|
|
layer 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
|
|
layer values on steps 8000,9000,10000. Outputs on early steps will
|
|
average over less than M values if they are not available.
|
|
|
|
:line
|
|
|
|
[Restart, fix_modify, output, run start/stop, minimize info:]
|
|
|
|
No information about this fix is written to "binary restart
|
|
files"_restart.html. None of the "fix_modify"_fix_modify.html options
|
|
are relevant to this fix.
|
|
|
|
This fix computes a vector of quantities which can be accessed by
|
|
various "output commands"_Section_howto.html#4_15. The values should
|
|
only be accessed on timesteps that are multiples of {Nfreq} since that
|
|
is when averaging is complete. The vector is of length N =
|
|
nlayers*nvalues where nvalues is the number of per-atom quantities
|
|
produced by the compute or fix that fix ave/spatial accesses. Nvalues
|
|
= 1 if the style is {density}. If nvalues > 1 and vector value N is
|
|
accessed by another output command, then the average quantity for the
|
|
Ith layer and Jth value in that layer is accessed, where I = N /
|
|
nvalues + 1 and J = N % nvalues + 1.
|
|
|
|
No parameter of this fix can be used with the {start/stop} keywords of
|
|
the "run"_run.html command. This fix is not invoked during "energy
|
|
minimization"_minimize.html.
|
|
|
|
[Restrictions:]
|
|
|
|
When the {ave} keyword is set to {running} or {window} then the number
|
|
of layers 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 {units} keyword is set to
|
|
{reduced}.
|
|
|
|
[Related commands:]
|
|
|
|
"compute"_compute.html, "fix ave/time"_fix_ave_time.html
|
|
|
|
[Default:]
|
|
|
|
The option defaults are units = lattice, norm = all, no file output,
|
|
and ave = one.
|