2007-02-21 08:18:41 +08:00
|
|
|
"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:]
|
|
|
|
|
2007-02-21 08:49:36 +08:00
|
|
|
fix ID group-ID ave/spatial Nevery Nfreq dim origin delta file style args keyword value ... :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
|
|
|
|
Nfreq = write average property to file every this many steps :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
|
|
|
|
file = filename to write results to :l
|
|
|
|
style = {density} or {atom} or {compute} :l
|
|
|
|
{density} arg = {mass} or {number}
|
|
|
|
{mass} = compute mass density
|
|
|
|
{number} = compute number density
|
|
|
|
{atom} arg = {vx} or {vy} or {vz} or {fx} or {fy} or {fz}
|
|
|
|
{compute} arg = compute-ID that calculates per-atom quantities :pre
|
|
|
|
|
|
|
|
zero or more keyword/value pairs may be appended to the args :l
|
|
|
|
keyword = {norm} or {units}
|
|
|
|
{norm} value = {all} or {sample}
|
|
|
|
{units} value = {box} or {lattice} :pre
|
|
|
|
|
|
|
|
:ule
|
2007-02-21 08:18:41 +08:00
|
|
|
|
|
|
|
[Examples:]
|
|
|
|
|
2007-02-28 06:00:03 +08:00
|
|
|
fix 1 all ave/spatial 10000 10000 z lower 2.0 centro.profile compute myCentro
|
|
|
|
fix 1 flow ave/spatial 100 1000 y 0.0 1.0 vel.profile atom vx norm sample
|
|
|
|
fix 1 flow ave/spatial 100 1000 y 0.0 1.0 dens.profile density mass :pre
|
2007-02-21 08:18:41 +08:00
|
|
|
|
|
|
|
[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, and print the results to a file. This can be used
|
|
|
|
to spatially average per-atom properties such as velocity or energy or
|
|
|
|
a quantity calculated by an equation you define; see the "variable
|
|
|
|
atom"_variable.html command.
|
|
|
|
|
2007-02-21 08:49:36 +08:00
|
|
|
The {density} styles means to simply count the number of atoms in each
|
|
|
|
layer, either by mass or number. The {atom} style allows an atom
|
|
|
|
property such as x-velocity to be specified. 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. Note that the "compute variable/atom"
|
|
|
|
style allows you to calculate any quantity for an atom that can be
|
|
|
|
specified by a "variable atom"_variable.html equation. Users can also
|
|
|
|
write code for their own compute styles and "add them to
|
2007-02-21 08:18:41 +08:00
|
|
|
LAMMPS"_Section_modify.html. Note that the "dump custom"_dump.html
|
|
|
|
command can also be used to output per-atom quantities calculated by a
|
|
|
|
compute.
|
|
|
|
|
2007-02-21 08:49:36 +08:00
|
|
|
For the {compute} style, the fix ave/spatial style uses the per-atom
|
2007-02-21 08:18:41 +08:00
|
|
|
scalar or vector calculated by the compute. See the "fix
|
|
|
|
ave/time"_fix_ave_time.html command if you wish to time-average a
|
|
|
|
global quantity, e.g. via a compute that temperature or pressure.
|
|
|
|
|
|
|
|
In all cases, the calculated property is 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 a property is calculated
|
|
|
|
for the first time (after a previous write), 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.
|
|
|
|
|
2007-02-21 08:49:36 +08:00
|
|
|
The {units} keyword determines the meaning of the distance units used
|
|
|
|
for the layer thickness {delta} and {origin} if it is a coordinate
|
|
|
|
value. 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.
|
|
|
|
|
2007-02-21 08:18:41 +08:00
|
|
|
The {Nevery} and {Nfreq} arguments specify how the property calculated
|
|
|
|
for each layer is time-averaged. The property is calculated once each
|
|
|
|
Nevery timesteps. It is averaged and output every Nfreq timesteps.
|
|
|
|
Nfreq must be a multiple of Nevery. In the 2nd example above, the
|
|
|
|
property is calculated every 100 steps. After 10 calculations, the
|
|
|
|
average result is written to the file, once every 1000 steps.
|
|
|
|
|
2007-02-21 08:49:36 +08:00
|
|
|
The {norm} keyword also affects how time-averaging is done. For an
|
|
|
|
{all} setting, a layer quantity is summed over all atoms in all
|
|
|
|
Nfreq/Nevery 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 M "average sample values", where M =
|
|
|
|
Nfreq/Nevery. In other words it is an average of an average.
|
|
|
|
|
2007-02-21 08:18:41 +08:00
|
|
|
Each time info is written to the file, it is 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 {density} or {atom} keyword is used, or the {compute} keyword
|
|
|
|
with a compute that calculates a single quantity per atom, then a
|
|
|
|
single value will be printed for each layer. If the {compute} keyword
|
|
|
|
is used with a compute that calculates N quantities per atom, then N
|
|
|
|
values per line will be written, each of them averaged independently.
|
|
|
|
|
|
|
|
For the {compute} keyword, the calculation performed by the compute in
|
|
|
|
on the group defined by the compute. However, only atoms in the fix
|
|
|
|
group are included in the layer averaging. LAMMPS prints a warning if
|
|
|
|
the fix group and compute group do not match.
|
|
|
|
|
|
|
|
Note that some computes perform costly calculations, involving use of
|
|
|
|
or creation of neighbor lists. If the compute is invoked too often by
|
|
|
|
fix ave/spatial, it can slow down a simulation.
|
|
|
|
|
|
|
|
[Restrictions:] none
|
|
|
|
|
|
|
|
[Related commands:]
|
|
|
|
|
|
|
|
"compute"_compute.html, "fix ave/time"_fix_ave_time.html
|
|
|
|
|
2007-02-21 08:49:36 +08:00
|
|
|
[Default:]
|
|
|
|
|
|
|
|
The option defaults are norm = all and units = lattice.
|
|
|
|
|