spatial_average command
Syntax
spatial_average keyword value
keyword = write_every_time
write_every_time values = dt dt = write every that much time
Examples
spatial_average write_every_time 0.008
Description
The spatial_average command is a wrapper for the fix ave/euler command.
Calculate cell-based averages of velocity, radius, volume fraction, and pressure (-1/3 * trace of the stress tensor) every few timesteps, as specified by the nevery keyword. The size of the cells is calculated as multiple of the maximum cutoff, via the cell_size_relative. Note that at least a relative cell size of 3 is required.
Note that velocity is favre (mass) averaged, whereas radius is arithmetically averaged. To calculate the stress, this command internally uses a compute stress/atom . It includes the convective term correctly for granular particles with non-zero average velocity (which is not included in compute stress/atom). However, it does not include bond, angle, dihedral or kspace contributions.
Note
Forces computed via the cohesion bond model are technically part of the pair style, and hence contribute to the stress tensor.
The per-particle stress tensor of particle
then reads
![S_{ab}^i =
- \left[
m \left( v_a^i - \bar{v}_a \right) \left( v_b^i - \bar{v}_b \right)
+ \frac{1}{2} \sum_{j=1}^{N_p} \left( r_a^i F_b^i + r_a^j F_b^j \right)
\right]](_images/math/8710755c3b864c0a7cc2acfde04c2572f5bdb0d4.png)
where
is the (cell-based) average velocity. The first
term is a kinetic energy contribution for atom
. The second
term is a pairwise energy contribution where
loops over the
Np neighbors of atom
,
and
are the
positions of the two atoms in the pairwise interaction, and
and
are the forces on the two atoms resulting
from their pairwise interaction. The resulting, cell-based stress
tensor is the sum of the above values divided by the cell volume.
The parallel option determines if every process allocates its own local grid for postprocessing (for parallel = yes), or each proc contributes to one single global grid (for parallel = no). This will be slower since it requires parallel communication, but will ensure that the grid cells do not move over time (e.g. in case of a moving boundary)
The basevolume_region option allows to specify a region that represents the volume which can theoretically be filled with particles. This will then be used to correct the basis of the averaging volume for each cell in the grid. For example, if you use a cylindrical wall, it makes sense to use an identical cylindrical region for the basevolume_region option, and the command will correctly calculate the volume fraction in the near-wall cells. the calculation of overlap between grid cells and the region is done using a Monte-Carlo approach.
Restart, fix_modify, output, run start/stop
No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix.
This fix computes the above-mentioned quantities for output via a dump euler/vtk command. The values can only be accessed on timesteps that are multiples of nevery since that is when calculations are performed.
No parameter of this fix can be used with the start/stop keywords of the run command.
Restrictions
Volume fractions and stresses are calculated based on the assumption of a structured (equidistant regular) grid, so volume fractions and stresses near walls that are not aligned with the grid will be incorrect.
Coarse-graining information:
Using coarsegraining in combination with this command might lead to different dynamics or system state and thus to inconsistencies. However, the influence of this model on the global dynamics or system state might be small so in some cases the results may be valid. This has to be reviewed by a specialist on a case-by-case basis.