walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T > Class Template Reference

Detailed Description

template<typename LatticeModel_T, typename Filter_T, typename DensityVelocityIn_T, typename DensityVelocityOut_T>
class walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >

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>

+ Inheritance diagram for walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >:

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 >
 
- Public Types inherited from walberla::lbm::SweepBase< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >
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_TgetSolidVolumeFractionField (IBlock *const block) const
 
void getFields (IBlock *const block, PdfField_T *&src, PdfField_T *&dst, ScalarField_T *&solidVolumeFractionField)
 
- Public Member Functions inherited from walberla::lbm::SweepBase< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >
 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

- Protected Member Functions inherited from walberla::lbm::SweepBase< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >
PdfField_TgetSrcField (IBlock *const block) const
 
PdfField_TgetDstField (IBlock *const block, PdfField_T *const src)
 
void getFields (IBlock *const block, PdfField_T *&src, PdfField_T *&dst)
 
- Protected Attributes inherited from walberla::lbm::SweepBase< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >
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_
 

Member Typedef Documentation

◆ PdfField_T

template<typename LatticeModel_T , typename Filter_T , typename DensityVelocityIn_T , typename DensityVelocityOut_T >
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

◆ ScalarField_T

template<typename LatticeModel_T , typename Filter_T , typename DensityVelocityIn_T , typename DensityVelocityOut_T >
using walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >::ScalarField_T = GhostLayerField<real_t, 1>

◆ Stencil_T

template<typename LatticeModel_T , typename Filter_T , typename DensityVelocityIn_T , typename DensityVelocityOut_T >
using walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >::Stencil_T = typename LatticeModel_T::Stencil

Constructor & Destructor Documentation

◆ GNSSweep() [1/2]

template<typename LatticeModel_T , typename Filter_T , typename DensityVelocityIn_T , typename DensityVelocityOut_T >
walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >::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() 
)
inline

◆ GNSSweep() [2/2]

template<typename LatticeModel_T , typename Filter_T , typename DensityVelocityIn_T , typename DensityVelocityOut_T >
walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >::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() 
)
inline

Member Function Documentation

◆ collide()

template<typename LatticeModel_T , typename Filter_T , typename DensityVelocityIn_T , typename DensityVelocityOut_T >
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) 
)

◆ getFields()

template<typename LatticeModel_T , typename Filter_T , typename DensityVelocityIn_T , typename DensityVelocityOut_T >
void walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >::getFields ( IBlock *const  block,
PdfField_T *&  src,
PdfField_T *&  dst,
ScalarField_T *&  solidVolumeFractionField 
)
inline

◆ getSolidVolumeFractionField()

template<typename LatticeModel_T , typename Filter_T , typename DensityVelocityIn_T , typename DensityVelocityOut_T >
ScalarField_T* walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >::getSolidVolumeFractionField ( IBlock *const  block) const
inline

◆ operator()()

template<typename LatticeModel_T , typename Filter_T , typename DensityVelocityIn_T , typename DensityVelocityOut_T >
void walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >::operator() ( IBlock *const  block,
const uint_t  numberOfGhostLayersToInclude = uint_t(0) 
)
inline

◆ stream()

template<typename LatticeModel_T , typename Filter_T , typename DensityVelocityIn_T , typename DensityVelocityOut_T >
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) 
)

◆ streamCollide()

template<typename LatticeModel_T , typename Filter_T , typename DensityVelocityIn_T , typename DensityVelocityOut_T >
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) 
)

Member Data Documentation

◆ solidVolumeFractionFieldID_

template<typename LatticeModel_T , typename Filter_T , typename DensityVelocityIn_T , typename DensityVelocityOut_T >
const BlockDataID walberla::pe_coupling::discrete_particle_methods::GNSSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >::solidVolumeFractionFieldID_
private

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