From 2eacfc04656f1e9a406ff58f8554544aa389428d Mon Sep 17 00:00:00 2001
From: sjplimp Syntax:
Description:
Use one or more per-atom vectors as inputs every few timesteps, bin
-them spatially by layer in a dimension, and average the layer values
-over longer timescales. The resulting layer averages can be used by
-other output commands such as thermo_style
+their values spatially into 1d, 2d, or 3d bins based on current atom
+coordinates, and average the bin values over longer timescales. The
+resulting bin averages can be used by other output
+commands such as thermo_style
custom, and can also be written to a file.
The group specified with the command means only atoms within the group
-contribute to layer averages. If the region keyword is used, the
+contribute to bin averages. If the region keyword is used, the
atom must be in both the group and the specified geometric
-region in order to contribute to layer averages.
+region in order to contribute to bin averages.
Each listed value can be an atom attribute (position, velocity, force
component), a mass or number density, or the result of a
@@ -105,17 +106,31 @@ produce global quantities.
The per-atom values of each input vector are binned and averaged
independently of the per-atom values in other input vectors.
The size and dimensionality of the bins (1d = layers or slabs, 2d =
+pencils, 3d = boxes) are determined by the dim, origin, and
+delta settings and how many times they are specified (1, 2, or 3).
+See details below.
+ IMPORTANT NOTE: 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 (easy to do for 2d or 3d bins) will incur an
+overhead in memory and computational cost (summing across processors),
+so be careful to use reasonable numbers of bins.
+ The Nevery, Nrepeat, and Nfreq arguments specify on what
-timesteps the input values will be used to bin them into layers and
-contribute to the average. The final averaged quantities are
-generated every Nfreq timesteps. The average is over Nrepeat
-quantities, computed in the preceding 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. Also, the timesteps
-contributing to the average value cannot overlap, i.e. Nfreq >
-(Nrepeat-1)*Nevery is required.
+timesteps the input values will be used to bin them and contribute to
+the average. The final averaged quantities are generated every
+Nfreq timesteps. The average is over Nrepeat quantities, computed
+in the preceding 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. Also, the timesteps contributing to the
+average value cannot overlap, i.e. Nfreq > (Nrepeat-1)*Nevery is
+required.
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
@@ -126,33 +141,38 @@ averaging is done; values are simply generated on timesteps
Each 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
-simulation 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.
+ Each per-atom property is also averaged over atoms in each bin. Bins
+can be 1d layers or slabs, 2d pencils, or 3d boxes. This depends on
+how many times (1, 2, or 3) the dim, origin, and delta settings
+are specified in the fix ave/spatial command. For 2d or 3d bins,
+there is no restriction on specifying dim = x before dim = y, or dim =
+y before dim = z. Bins in a particular dim have a bin size in that
+dimension given by delta. Every Nfreq steps, when averaging is
+being performed and the per-atom property is calculated for the first
+time, the number of bins and the bin sizes and boundaries are
+computed. Thus if the simulation box changes size during a
+simulation, the number of bins and their boundaries may also change.
+In each dimension, bins are defined relative to a specified origin,
+which may be the lower/upper edge of the simulation box (in dim) or
+its center point, or a specified coordinate value. Starting at the
+origin, sufficient bins are created in both directions to completely
+cover the box. On subsequent timesteps every atom is mapped to one of
+the bins. Atoms beyond the lowermost/uppermost bin in a dimension are
+counted in the first/last bin in that dimension.
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 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 orthogonal simulation boxes, the bins are also layers, pencils, or
+boxes aligned with the xyz coordinate axes. For triclinic
+(non-orthogonal) simulation boxes, the bins are so that they are
+parallel to the tilted faces of the simulation box. See this
+section of the manual for a discussion of the
+geometry of triclinic boxes in LAMMPS. As described there, a tilted
+simulation box has edge vectors a,b,c. In that nomenclature, bins in
+the x dimension have faces with normals in the "b" cross "c"
+direction. Bins in y have faces normal to the "a" cross "c"
+direction. And bins in z have faces normal to the "a" cross "b"
+direction. Note that in order to define the size and position of
+these bins in an unambiguous fashion, the units option must be set
+to reduced when using a triclinic simulation box, as noted below.
fix ID group-ID ave/spatial Nevery Nrepeat Nfreq dim origin delta value1 value2 ... keyword args ...
+
fix ID group-ID ave/spatial Nevery Nrepeat Nfreq dim origin delta ... value1 value2 ... keyword args ...
dim = x or y or z
+ origin = lower or center or upper or coordinate value (distance units)
+ delta = thickness of spatial bins in dim (distance units)
+
fix 1 all ave/spatial 10000 1 10000 z lower 0.02 c_myCentro units reduced &
title1 "My output values"
fix 1 flow ave/spatial 100 10 1000 y 0.0 1.0 vx vz norm sample file vel.profile
-fix 1 flow ave/spatial 100 5 1000 y 0.0 2.5 density/mass ave running
+fix 1 flow ave/spatial 100 5 1000 z lower 1.0 y 0.0 2.5 density/mass ave running
-
@@ -163,10 +183,10 @@ property/atom command and then specifying
an input value from that compute.
The density/number value means the number density is computed in -each layer, i.e. a weighting of 1 for each atom. The density/mass -value means the mass density is computed in each layer, i.e. each atom +each bin, i.e. a weighting of 1 for each atom. The density/mass +value means the mass density is computed in each bind, i.e. each atom is weighted by its mass. The resulting density is normalized by the -volume of the layer so that units of number/volume or density are +volume of the bin so that units of number/volume or density are output. See the units command doc page for the definition of density for each choice of units, e.g. gram/cm^3.
@@ -198,7 +218,7 @@ quantities to spatially average.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 +for the bin size 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. @@ -211,63 +231,64 @@ 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. +0.1 means 10 bins span the box in that 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. +
Consider a non-orthogonal box, with bins that are 1d layers or slabs +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 averaging is done for the output -produced every Nfreq timesteps. For an all setting, a layer +produced every Nfreq timesteps. For an all setting, a bin 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 +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 Nfreq timescale.
-For a sample setting, the layer quantity is summed over atoms for -only a single sample, as is the count, and a "average sample value" is +
For a sample 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 layer is the average of the Nrepeat "average sample values", In +the bin is the average of the Nrepeat "average sample values", In other words it is an average of an average.
-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. +
The ave keyword determines how the bin values produced every Nfreq +steps are averaged with bin 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 layer values produced on +
If the ave setting is one, then the bin 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 +
If the ave setting is running, then the bin values produced on timesteps that are multiples of Nfreq are summed and averaged in a -cumulative sense before being output. Each output layer value is -thus the average of the layer value produced on that timestep with all -preceding 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 command, or re-defining the fix by +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 unfix command, or re-defining the fix by re-specifying it.
-If the ave setting is window, then the layer values produced on +
If the ave setting is window, then the bin 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. +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.
The file keyword allows a filename to be specified. Every Nfreq -timesteps, a section of 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 -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 units keyword is box or +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 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). @@ -280,13 +301,16 @@ values for each of these, so they do not need to be specified.
By default, these header lines are as follows:
# Spatial-averaged data for fix ID and group name -# Timestep Number-of-layers -# Layer Coord Count value1 value2 ... +# Timestep Number-of-bins +# Bin Coord1 Coord2 Coord3 Count value1 value2 ...
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 +just Coord.
No parameter of this fix can be used with the start/stop keywords of the run command. This fix is not invoked during energy @@ -317,7 +343,7 @@ minimization.
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 +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 units keyword is set to reduced. diff --git a/doc/fix_ave_spatial.txt b/doc/fix_ave_spatial.txt index 11880661b0..0764cb4f24 100644 --- a/doc/fix_ave_spatial.txt +++ b/doc/fix_ave_spatial.txt @@ -10,16 +10,17 @@ fix ave/spatial command :h3 [Syntax:] -fix ID group-ID ave/spatial Nevery Nrepeat Nfreq dim origin delta value1 value2 ... keyword args ... :pre +fix ID group-ID ave/spatial Nevery Nrepeat Nfreq dim origin delta ... value1 value2 ... 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 = use input values every this many timesteps :l Nrepeat = # of times to use input values for calculating averages :l Nfreq = calculate averages every this many timesteps :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 +dim, origin, delta can be repeated 1, 2, or 3 times for 1d, 2d, or 3d bins :l + dim = {x} or {y} or {z} + origin = {lower} or {center} or {upper} or coordinate value (distance units) + delta = thickness of spatial bins in dim (distance units) :pre one or more input values can be listed :l value = x, y, z, vx, vy, vz, fx, fy, fz, density/mass, density/number, c_ID, c_ID\[I\], f_ID, f_ID\[I\], v_name :l x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (velocity, force component) @@ -55,20 +56,21 @@ keyword = {norm} or {units} or {file} or {ave} or {title1} or {title2} or {title fix 1 all ave/spatial 10000 1 10000 z lower 0.02 c_myCentro units reduced & title1 "My output values" fix 1 flow ave/spatial 100 10 1000 y 0.0 1.0 vx vz norm sample file vel.profile -fix 1 flow ave/spatial 100 5 1000 y 0.0 2.5 density/mass ave running :pre +fix 1 flow ave/spatial 100 5 1000 z lower 1.0 y 0.0 2.5 density/mass ave running :pre [Description:] Use one or more per-atom vectors as inputs every few timesteps, bin -them spatially by layer in a dimension, and average the layer values -over longer timescales. The resulting layer averages can be used by -other "output commands"_Section_howto.html#4_15 such as "thermo_style +their values spatially into 1d, 2d, or 3d bins based on current atom +coordinates, and average the bin values over longer timescales. The +resulting bin averages can be used by other "output +commands"_Section_howto.html#4_15 such as "thermo_style custom"_thermo_style.html, and can also be written to a file. The group specified with the command means only atoms within the group -contribute to layer averages. If the {region} keyword is used, the +contribute to bin averages. If the {region} keyword is used, the atom must be in both the group and the specified geometric -"region"_region.html in order to contribute to layer averages. +"region"_region.html in order to contribute to bin averages. Each listed value can be an atom attribute (position, velocity, force component), a mass or number density, or the result of a @@ -89,17 +91,31 @@ produce global quantities. The per-atom values of each input vector are binned and averaged independently of the per-atom values in other input vectors. +The size and dimensionality of the bins (1d = layers or slabs, 2d = +pencils, 3d = boxes) are determined by the {dim}, {origin}, and +{delta} settings and how many times they are specified (1, 2, or 3). +See details below. + +IMPORTANT NOTE: 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 (easy to do for 2d or 3d bins) will incur an +overhead in memory and computational cost (summing across processors), +so be careful to use reasonable numbers of bins. + :line The {Nevery}, {Nrepeat}, and {Nfreq} arguments specify on what -timesteps the input values will be used to bin them into layers and -contribute to the average. The final averaged quantities are -generated every {Nfreq} timesteps. The average is over {Nrepeat} -quantities, computed in the preceding 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. Also, the timesteps -contributing to the average value cannot overlap, i.e. Nfreq > -(Nrepeat-1)*Nevery is required. +timesteps the input values will be used to bin them and contribute to +the average. The final averaged quantities are generated every +{Nfreq} timesteps. The average is over {Nrepeat} quantities, computed +in the preceding 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. Also, the timesteps contributing to the +average value cannot overlap, i.e. Nfreq > (Nrepeat-1)*Nevery is +required. 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 @@ -110,33 +126,38 @@ averaging is done; values are simply generated on timesteps :line -Each 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 -simulation 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. +Each per-atom property is also averaged over atoms in each bin. Bins +can be 1d layers or slabs, 2d pencils, or 3d boxes. This depends on +how many times (1, 2, or 3) the {dim}, {origin}, and {delta} settings +are specified in the fix ave/spatial command. For 2d or 3d bins, +there is no restriction on specifying dim = x before dim = y, or dim = +y before dim = z. Bins in a particular {dim} have a bin size in that +dimension given by {delta}. Every Nfreq steps, when averaging is +being performed and the per-atom property is calculated for the first +time, the number of bins and the bin sizes and boundaries are +computed. Thus if the simulation box changes size during a +simulation, the number of bins and their boundaries may also change. +In each dimension, bins are defined relative to a specified {origin}, +which may be the lower/upper edge of the simulation box (in {dim}) or +its center point, or a specified coordinate value. Starting at the +origin, sufficient bins are created in both directions to completely +cover the box. On subsequent timesteps every atom is mapped to one of +the bins. Atoms beyond the lowermost/uppermost bin in a dimension are +counted in the first/last bin in that dimension. -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 orthogonal simulation boxes, the bins are also layers, pencils, or +boxes aligned with the xyz coordinate axes. For triclinic +(non-orthogonal) simulation boxes, the bins are so that they are +parallel to the tilted faces of the simulation box. See "this +section"_Section_howto.html#4_12 of the manual for a discussion of the +geometry of triclinic boxes in LAMMPS. As described there, a tilted +simulation box has edge vectors a,b,c. In that nomenclature, bins in +the x dimension have faces with normals in the "b" cross "c" +direction. Bins in y have faces normal to the "a" cross "c" +direction. And bins in z have faces normal to the "a" cross "b" +direction. Note that in order to define the size and position of +these bins in an unambiguous fashion, the {units} option must be set +to {reduced} when using a triclinic simulation box, as noted below. :line @@ -147,10 +168,10 @@ property/atom"_compute_property_atom.html command and then specifying an input value from that compute. The {density/number} value means the number density is computed in -each layer, i.e. a weighting of 1 for each atom. The {density/mass} -value means the mass density is computed in each layer, i.e. each atom +each bin, i.e. a weighting of 1 for each atom. The {density/mass} +value means the mass density is computed in each bind, i.e. each atom is weighted by its mass. The resulting density is normalized by the -volume of the layer so that units of number/volume or density are +volume of the bin so that units of number/volume or density are output. See the "units"_units.html command doc page for the definition of density for each choice of units, e.g. gram/cm^3. @@ -182,7 +203,7 @@ quantities to spatially average. 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 +for the bin size {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. @@ -195,63 +216,64 @@ 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. +0.1 means 10 bins span the box in that 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. +Consider a non-orthogonal box, with bins that are 1d layers or slabs +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 averaging is done for the output -produced every {Nfreq} timesteps. For an {all} setting, a layer +produced every {Nfreq} timesteps. For an {all} setting, a bin 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 +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 {Nfreq} timescale. -For a {sample} setting, the layer quantity is summed over atoms for -only a single sample, as is the count, and a "average sample value" is +For a {sample} 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 layer is the average of the {Nrepeat} "average sample values", In +the bin is the average of the {Nrepeat} "average sample values", In other words it is an average of an average. -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. +The {ave} keyword determines how the bin values produced every {Nfreq} +steps are averaged with bin 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 layer values produced on +If the {ave} setting is {one}, then the bin 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 +If the {ave} setting is {running}, then the bin values produced on timesteps that are multiples of {Nfreq} are summed and averaged in a -cumulative sense before being output. Each output layer value is -thus the average of the layer value produced on that timestep with all -preceding 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 +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 "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 +If the {ave} setting is {window}, then the bin 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. +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. The {file} keyword allows a filename to be specified. Every {Nfreq} -timesteps, a section of 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 -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 {units} keyword is {box} or +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 {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). @@ -264,13 +286,16 @@ values for each of these, so they do not need to be specified. By default, these header lines are as follows: # Spatial-averaged data for fix ID and group name -# Timestep Number-of-layers -# Layer Coord Count value1 value2 ... :pre +# Timestep Number-of-bins +# Bin Coord1 Coord2 Coord3 Count value1 value2 ... :pre 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 +just Coord. :line @@ -284,15 +309,17 @@ This fix computes a global array of values which can be accessed by various "output commands"_Section_howto.html#4_15. The values can only be accessed on timesteps that are multiples of {Nfreq} since that is when averaging is performed. The global array has # of rows = -Nlayers and # of columns = Nvalues+2. The first column has the layer -coordinate (center of the layer), the 2nd column has the count of -atoms in that layer, and the remaining columns are the Nvalue -quantities. When the array is accessed with an I that exceeds the -current number of layers, than a 0.0 is returned by the fix instead of -an error, since the number of layers can vary as a simulation runs, -depending on the simulation box size. The array values calculated by -this fix are "intensive", since they are already normalized by the -count of atoms in each layer. +Nbins and # of columns = Ndim+1+Nvalues, where Ndim = 1,2,3 for +1d,2d,3d bins. The first 1 or 2 or 3 columns have the bin coordinates +(center of the bin) in the appropriate dimensions, 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, since the number of bins can vary as a simulation runs, +depending on the simulation box size. 2d or 3d bins are ordered so +that the last dimension(s) vary fastest. The array values calculated +by this fix are "intensive", since they are already normalized by the +count of atoms in each bin. 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 @@ -301,7 +328,7 @@ 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 +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 {units} keyword is set to {reduced}.