waLBerla 7.3
Loading...
Searching...
No Matches
walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_T > Class Template Reference

Detailed Description

template<typename LatticeModel_T, typename Filter_T, typename DensityVelocityIn_T, typename DensityVelocityOut_T, int SolidCollision_T, int Weighting_T, typename ParticleAccessor_T>
class walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_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 particle, an additional minus sign has to be added compared to Eqs. 31 and 32 in the paper.

#include <PSMSweep.h>

Inheritance diagram for walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_T >:

Public Types

using PdfField_T
using Stencil_T = typename LatticeModel_T::Stencil
Public Types inherited from walberla::lbm::SweepBase< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T >
using PdfField_T

Public Member Functions

 PSMSweep (const BlockDataID &pdfFieldID, const BlockDataID &particleAndVolumeFractionFieldID, const shared_ptr< StructuredBlockStorage > &blockStorage, const shared_ptr< ParticleAccessor_T > &ac, 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 &particleAndVolumeFractionFieldID, const shared_ptr< StructuredBlockStorage > &blockStorage, const shared_ptr< ParticleAccessor_T > &ac, 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})
ParticleAndVolumeFractionField_TgetParticleAndVolumeFractionField (IBlock *const block) const
void getFields (IBlock *const block, PdfField_T *&src, PdfField_T *&dst, ParticleAndVolumeFractionField_T *&particleAndVolumeFractionField)
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())
virtual ~SweepBase ()
void filter (IBlock &block)
void densityVelocityIn (IBlock &block)
void densityVelocityOut (IBlock &block)

Private Attributes

const BlockDataID particleAndVolumeFractionFieldID_
shared_ptr< StructuredBlockStorageblockStorage_
const shared_ptr< ParticleAccessor_T > accessor_

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, int SolidCollision_T, int Weighting_T, typename ParticleAccessor_T>
using walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_T >::PdfField_T
Initial value:

◆ Stencil_T

template<typename LatticeModel_T, typename Filter_T, typename DensityVelocityIn_T, typename DensityVelocityOut_T, int SolidCollision_T, int Weighting_T, typename ParticleAccessor_T>
using walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_T >::Stencil_T = typename LatticeModel_T::Stencil

Constructor & Destructor Documentation

◆ PSMSweep() [1/2]

template<typename LatticeModel_T, typename Filter_T, typename DensityVelocityIn_T, typename DensityVelocityOut_T, int SolidCollision_T, int Weighting_T, typename ParticleAccessor_T>
walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_T >::PSMSweep ( const BlockDataID & pdfFieldID,
const BlockDataID & particleAndVolumeFractionFieldID,
const shared_ptr< StructuredBlockStorage > & blockStorage,
const shared_ptr< ParticleAccessor_T > & ac,
const Filter_T & _filter = walberla::field::DefaultEvaluationFilter(),
const DensityVelocityIn_T & _densityVelocityIn = lbm::DefaultDensityEquilibriumVelocityCalculation(),
const DensityVelocityOut_T & _densityVelocityOut = lbm::DefaultDensityVelocityCallback() )
inline

◆ PSMSweep() [2/2]

template<typename LatticeModel_T, typename Filter_T, typename DensityVelocityIn_T, typename DensityVelocityOut_T, int SolidCollision_T, int Weighting_T, typename ParticleAccessor_T>
walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_T >::PSMSweep ( const BlockDataID & src,
const BlockDataID & dst,
const BlockDataID & particleAndVolumeFractionFieldID,
const shared_ptr< StructuredBlockStorage > & blockStorage,
const shared_ptr< ParticleAccessor_T > & ac,
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, int SolidCollision_T, int Weighting_T, typename ParticleAccessor_T>
void walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_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, int SolidCollision_T, int Weighting_T, typename ParticleAccessor_T>
void walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_T >::getFields ( IBlock *const block,
PdfField_T *& src,
PdfField_T *& dst,
ParticleAndVolumeFractionField_T *& particleAndVolumeFractionField )
inline

◆ getParticleAndVolumeFractionField()

template<typename LatticeModel_T, typename Filter_T, typename DensityVelocityIn_T, typename DensityVelocityOut_T, int SolidCollision_T, int Weighting_T, typename ParticleAccessor_T>
ParticleAndVolumeFractionField_T * walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_T >::getParticleAndVolumeFractionField ( IBlock *const block) const
inline

◆ operator()()

template<typename LatticeModel_T, typename Filter_T, typename DensityVelocityIn_T, typename DensityVelocityOut_T, int SolidCollision_T, int Weighting_T, typename ParticleAccessor_T>
void walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_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, int SolidCollision_T, int Weighting_T, typename ParticleAccessor_T>
void walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_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, int SolidCollision_T, int Weighting_T, typename ParticleAccessor_T>
void walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_T >::streamCollide ( IBlock *const block,
const uint_t numberOfGhostLayersToInclude = uint_t{0} )

Member Data Documentation

◆ accessor_

template<typename LatticeModel_T, typename Filter_T, typename DensityVelocityIn_T, typename DensityVelocityOut_T, int SolidCollision_T, int Weighting_T, typename ParticleAccessor_T>
const shared_ptr< ParticleAccessor_T > walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_T >::accessor_
private

◆ blockStorage_

template<typename LatticeModel_T, typename Filter_T, typename DensityVelocityIn_T, typename DensityVelocityOut_T, int SolidCollision_T, int Weighting_T, typename ParticleAccessor_T>
shared_ptr< StructuredBlockStorage > walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_T >::blockStorage_
private

◆ particleAndVolumeFractionFieldID_

template<typename LatticeModel_T, typename Filter_T, typename DensityVelocityIn_T, typename DensityVelocityOut_T, int SolidCollision_T, int Weighting_T, typename ParticleAccessor_T>
const BlockDataID walberla::lbm_mesapd_coupling::psm::PSMSweep< LatticeModel_T, Filter_T, DensityVelocityIn_T, DensityVelocityOut_T, SolidCollision_T, Weighting_T, ParticleAccessor_T >::particleAndVolumeFractionFieldID_
private

The documentation for this class was generated from the following file:
  • /builds/administration/walberla-website/walberla/src/lbm_mesapd_coupling/partially_saturated_cells_method/PSMSweep.h