template<typename LatticeModel_T, typename Filter_T, typename DensityVelocityIn_T, typename DensityVelocityOut_T, int SolidCollision_T, int Weighting_T>
class walberla::pe_coupling::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T >
LBM sweep for the partially saturated cells method.
Literature: Original idea: Noble et al. - A lattice-Boltzmann method for partially saturated computational cells, 1998 Overview paper: Owen et al. - An efficient framework for fluid-structure interaction using the lattice Boltzmann method and immersed moving boundaries, 2010
Based on the overview paper, at least three different versions for the calculation of the solid collision term (omega_S) and two different versions for the cell coverage weighting function (B) are available. They can be selected via the template parameters SolidCollision_T ( = {1,2,3} ) and Weighting_T ( = {1,2} ). SolidCollision_T = 1: Eq. 28 Weighting_T = 1: B = solid volume fraction SolidCollision_T = 2: Eq. 29 Weighting_T = 2: Eq. 30 SolidCollision_T = 3: Eq. 33
For the calculation of the force acting on the body, an additional minus sign has to be added compared to Eqs. 31 and 32 in the paper.
|
| PSMSweep (const BlockDataID &pdfFieldID, const BlockDataID &bodyAndVolumeFractionFieldID, const shared_ptr< StructuredBlockStorage > &blockStorage, const Filter_T &_filter=walberla::field::DefaultEvaluationFilter(), const DensityVelocityIn_T &_densityVelocityIn=lbm::DefaultDensityEquilibriumVelocityCalculation(), const DensityVelocityOut_T &_densityVelocityOut=lbm::DefaultDensityVelocityCallback()) |
|
| PSMSweep (const BlockDataID &src, const BlockDataID &dst, const BlockDataID &bodyAndVolumeFractionFieldID, const shared_ptr< StructuredBlockStorage > &blockStorage, const Filter_T &_filter=walberla::field::DefaultEvaluationFilter(), const DensityVelocityIn_T &_densityVelocityIn=lbm::DefaultDensityEquilibriumVelocityCalculation(), const DensityVelocityOut_T &_densityVelocityOut=lbm::DefaultDensityVelocityCallback()) |
|
void | operator() (IBlock *const block, const uint_t numberOfGhostLayersToInclude=uint_t(0)) |
|
void | streamCollide (IBlock *const block, const uint_t numberOfGhostLayersToInclude=uint_t(0)) |
|
void | stream (IBlock *const block, const uint_t numberOfGhostLayersToInclude=uint_t(0)) |
|
void | collide (IBlock *const block, const uint_t numberOfGhostLayersToInclude=uint_t(0)) |
|
BodyAndVolumeFractionField_T * | getBodyAndVolumeFractionField (IBlock *const block) const |
|
void | getFields (IBlock *const block, PdfField_T *&src, PdfField_T *&dst, BodyAndVolumeFractionField_T *&bodyAndVolumeFractionField) |
|
| SweepBase (const BlockDataID &pdfField, const Filter_T &_filter=walberla::field::DefaultEvaluationFilter(), const DensityVelocityIn_T &_densityVelocityIn=DefaultDensityEquilibriumVelocityCalculation(), const DensityVelocityOut_T &_densityVelocityOut=DefaultDensityVelocityCallback()) |
|
| SweepBase (const BlockDataID &src, const BlockDataID &dst, const Filter_T &_filter=walberla::field::DefaultEvaluationFilter(), const DensityVelocityIn_T &_densityVelocityIn=DefaultDensityEquilibriumVelocityCalculation(), const DensityVelocityOut_T &_densityVelocityOut=DefaultDensityVelocityCallback()) |
|
virtual | ~SweepBase () |
|
void | filter (IBlock &block) |
|
bool | filter (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
void | densityVelocityIn (IBlock &block) |
|
real_t | densityVelocityIn (Vector3< real_t > &velocity, const PdfField_T *const field, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) |
|
void | densityVelocityOut (IBlock &block) |
|
void | densityVelocityOut (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const LatticeModel_T &lm, const Vector3< real_t > &velocity, const real_t rho) |
|