walberla::lbm::CellwiseSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, Enable > Class Template Reference

Detailed Description

template<typename LatticeModel_T, typename Filter_T, typename DensityVelocityIn_T, typename DensityVelocityOut_T, class Enable = void>
class walberla::lbm::CellwiseSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, Enable >

Class for performing the streaming and collision step of the LBM.

Cellwise Sweep for 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:

  • pdfFieldId: the block data ID of the PDF field (the temporary field needed during the streaming step is managed automatically)
  • src + dst: block data IDs to a source and a destination PDF field (for manually controlling the temporary field that is used during the streaming step)
  • filter: the evaluation filter that indicates which cells are processed
  • densityVelocityIn: the density/velocity calculation functor that specifies how the density and equilibrium velocity are calculated after the streaming step/prior to the collision step
  • densityVelocityOut: the density/velocity callback functor that can be used to store the density and/or velocity (both of which are calculated prior to the collision step) to a separate field.

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>


The documentation for this class was generated from the following file: