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 i 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]

where \bar{v} is the (cell-based) average velocity. The first term is a kinetic energy contribution for atom i. The second term is a pairwise energy contribution where j loops over the Np neighbors of atom i, r_i and r_j are the positions of the two atoms in the pairwise interaction, and F_i and F_j 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.