Sweep for the LBM formulation of the generalized Navier Stokes equations.
Method is taken from: Z. Guo, T. S. Zhao - "Lattice Boltzmann model for incompressible flows through porous media", Phys. Rev. E 66 (2002)036304. doi:10.1103/PhysRevE.66.036304. Note: when an external forcing is present, use the GNSExternalForceToForceFieldAdder class to apply the correct external force (i.e. fluid-volume-fraction * external-force ) Note: the calculated velocity is the volume averaged one!
A LBM-forcing model that supports spatially (and temporally) varying forces has to be used, e.g. GuoField.
#include <GNSSweep.h>
Public Types | |
using | PdfField_T = typename lbm::SweepBase< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >::PdfField_T |
using | Stencil_T = typename LatticeModel_T::Stencil |
using | ScalarField_T = GhostLayerField< real_t, 1 > |
![]() | |
using | PdfField_T = PdfField< LatticeModel_T > |
Public Member Functions | |
GNSSweep (const BlockDataID &pdfFieldID, const BlockDataID &solidVolumeFractionFieldID, const Filter_T &_filter=walberla::field::DefaultEvaluationFilter(), const DensityVelocityIn_T &_densityVelocityIn=lbm::DefaultDensityEquilibriumVelocityCalculation(), const DensityVelocityOut_T &_densityVelocityOut=lbm::DefaultDensityVelocityCallback()) | |
GNSSweep (const BlockDataID &src, const BlockDataID &dst, const BlockDataID &solidVolumeFractionFieldID, 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)) |
ScalarField_T * | getSolidVolumeFractionField (IBlock *const block) const |
void | getFields (IBlock *const block, PdfField_T *&src, PdfField_T *&dst, ScalarField_T *&solidVolumeFractionField) |
![]() | |
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) |
Private Attributes | |
const BlockDataID | solidVolumeFractionFieldID_ |
Additional Inherited Members | |
![]() | |
PdfField_T * | getSrcField (IBlock *const block) const |
PdfField_T * | getDstField (IBlock *const block, PdfField_T *const src) |
void | getFields (IBlock *const block, PdfField_T *&src, PdfField_T *&dst) |
![]() | |
const BlockDataID | src_ {} |
const bool | dstFromBlockData_ |
const BlockDataID | dst_ {} |
std::set< PdfField_T *, field::SwapableCompare< PdfField_T * > > | dstFields_ |
Filter_T | filter_ |
DensityVelocityIn_T | densityVelocityIn_ |
DensityVelocityOut_T | densityVelocityOut_ |
using walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >::PdfField_T = typename lbm::SweepBase<LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T>::PdfField_T |
using walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >::ScalarField_T = GhostLayerField<real_t, 1> |
using walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >::Stencil_T = typename LatticeModel_T::Stencil |
|
inline |
|
inline |
void walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >::collide | ( | IBlock *const | block, |
const uint_t | numberOfGhostLayersToInclude = uint_t(0) |
||
) |
|
inline |
|
inline |
|
inline |
void walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >::stream | ( | IBlock *const | block, |
const uint_t | numberOfGhostLayersToInclude = uint_t(0) |
||
) |
void walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >::streamCollide | ( | IBlock *const | block, |
const uint_t | numberOfGhostLayersToInclude = uint_t(0) |
||
) |
|
private |