Class for performing the streaming and collision step of the LBM.
Do not create objects of class CellwiseSweep directly, better use one of the various 'makeCellwiseSweep' functions below! Advantage of using these make functions: typically, only the type of the lattice model must be specified, all other templates can be deduced automatically. If you need a sweep for the LBM that performs advection diffusion, look at the 'makeCellwiseAdvectionDiffusionSweep' functions.
Template parameters:
Parameters passed to the 'makeCellwiseSweep' functions:
The 'makeCellwiseAdvectionDiffusionSweep' functions need a block data ID for and the type of a velocity field that is used to fetch the velocity that is required for the equilibrium distribution in the collision step.
You do not have to specify an evaluation filter or a density/velocity callback function! If you do not specify any filter and if you do not provide a callback function, all cells are processed (no cell is excluded) and the density and velocity are not stored in a separate field.
If you want to use a flag field as evaluation filter, fitting 'makeCellwiseSweep' functions already exist. These functions need an additional template parameter FlagField_T and you have to provide the block data ID of the flag field together with a set of flag UIDs that specify which cells need to be processed. Similarly, if you want to store the density and/or velocity in a separate field, fitting 'makeCellwiseSweep' functions exist. They need the type of the velocity field and/or the type of the density field as additional template parameters, and you must provide block data IDs that correspond to these fields.
Note that the shared pointer returned by all 'makeCellwiseSweep' functions can be captured by a SharedSweep for immediate registration at a time loop (see domain_decomposition::makeSharedSweep).
#include <CellwiseSweep.h>