walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T > Class Template Reference

Detailed Description

template<typename LatticeModel_T, typename FlagField_T, typename ParticleAccessor_T>
class walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >

Linear boundary handling for moving particles.

This boundary condition implements the CLI scheme from Ginzburg et al. - "Two-Relaxation-Time Lattice Boltzmann Scheme: About Parametrization, Velocity, Pressure and Mixed Boundary Conditions" (2008) References to equations and tables in the code documentation are contained in this paper.

It uses one additional cell in inverse direction of the boundary handling for a linear interpolation.

In case not enough cells are available, one fall back solution is available: If no additional cell is available, the scheme is replaced by the bounce back scheme (see SimpleBB.h).

#include <CurvedLinear.h>

+ Inheritance diagram for walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >:

Public Member Functions

 CurvedLinear (const BoundaryUID &boundaryUID, const FlagUID &uid, PDFField_T *const pdfField, const FlagField_T *const flagField, ParticleField_T *const particleField, const shared_ptr< ParticleAccessor_T > &ac, const flag_t domain, const StructuredBlockStorage &blockStorage, const IBlock &block, std::function< real_t(const Vector3< real_t > &)> hydrostaticDensityFct=nullptr)
 
void pushFlags (std::vector< FlagUID > &uids) const
 
void beforeBoundaryTreatment () const
 
void afterBoundaryTreatment () const
 
template<typename Buffer_T >
void packCell (Buffer_T &, const cell_idx_t, const cell_idx_t, const cell_idx_t) const
 
template<typename Buffer_T >
void registerCell (Buffer_T &, const flag_t, const cell_idx_t, const cell_idx_t, const cell_idx_t)
 
void registerCell (const flag_t, const cell_idx_t, const cell_idx_t, const cell_idx_t, const BoundaryConfiguration &)
 
void registerCells (const flag_t, const CellInterval &, const BoundaryConfiguration &)
 
template<typename CellIterator >
void registerCells (const flag_t, const CellIterator &, const CellIterator &, const BoundaryConfiguration &)
 
void unregisterCell (const flag_t, const cell_idx_t, const cell_idx_t, const cell_idx_t) const
 
void treatDirection (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const stencil::Direction dir, const cell_idx_t nx, const cell_idx_t ny, const cell_idx_t nz, const flag_t mask)
 
- Public Member Functions inherited from walberla::boundary::Boundary< flag_t >
 Boundary (const BoundaryUID &boundaryUID)
 
void setMask (const flag_t mask)
 
flag_t getMask () const
 
const BoundaryUIDgetUID () const
 

Static Public Member Functions

static shared_ptr< BoundaryConfigurationcreateConfiguration (const Config::BlockHandle &)
 

Private Types

using PDFField_T = lbm::PdfField< LatticeModel_T >
 
using Stencil_T = typename LatticeModel_T::Stencil
 
using flag_t = typename FlagField_T::flag_t
 

Private Attributes

const FlagUID uid_
 
PDFField_T *const pdfField_
 
const FlagField_T *const flagField_
 
ParticleField_T *const particleField_
 
shared_ptr< ParticleAccessor_T > ac_
 
flag_t domainMask_
 
const StructuredBlockStorageblockStorage_
 
const IBlockblock_
 
std::function< real_t(const Vector3< real_t > &)> hydrostaticDensityFct_
 
real_t lengthScalingFactor_
 
real_t forceScalingFactor_
 

Additional Inherited Members

- Protected Attributes inherited from walberla::boundary::Boundary< flag_t >
const BoundaryUID boundaryUID_
 
flag_t mask_
 
bool maskSet_
 

Member Typedef Documentation

◆ flag_t

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
using walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::flag_t = typename FlagField_T::flag_t
private

◆ PDFField_T

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
using walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::PDFField_T = lbm::PdfField< LatticeModel_T >
private

◆ Stencil_T

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
using walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::Stencil_T = typename LatticeModel_T::Stencil
private

Constructor & Destructor Documentation

◆ CurvedLinear()

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::CurvedLinear ( const BoundaryUID &  boundaryUID,
const FlagUID &  uid,
PDFField_T *const  pdfField,
const FlagField_T *const  flagField,
ParticleField_T *const  particleField,
const shared_ptr< ParticleAccessor_T > &  ac,
const flag_t  domain,
const StructuredBlockStorage blockStorage,
const IBlock block,
std::function< real_t(const Vector3< real_t > &)>  hydrostaticDensityFct = nullptr 
)
inline

Member Function Documentation

◆ afterBoundaryTreatment()

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
void walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::afterBoundaryTreatment ( ) const
inline

◆ beforeBoundaryTreatment()

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
void walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::beforeBoundaryTreatment ( ) const
inline

◆ createConfiguration()

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
static shared_ptr<BoundaryConfiguration> walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::createConfiguration ( const Config::BlockHandle )
inlinestatic

◆ packCell()

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
template<typename Buffer_T >
void walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::packCell ( Buffer_T &  ,
const  cell_idx_t,
const  cell_idx_t,
const  cell_idx_t 
) const
inline

◆ pushFlags()

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
void walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::pushFlags ( std::vector< FlagUID > &  uids) const
inline

◆ registerCell() [1/2]

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
template<typename Buffer_T >
void walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::registerCell ( Buffer_T &  ,
const  flag_t,
const  cell_idx_t,
const  cell_idx_t,
const  cell_idx_t 
)
inline

◆ registerCell() [2/2]

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
void walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::registerCell ( const  flag_t,
const  cell_idx_t,
const  cell_idx_t,
const  cell_idx_t,
const BoundaryConfiguration  
)
inline

◆ registerCells() [1/2]

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
void walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::registerCells ( const  flag_t,
const CellInterval ,
const BoundaryConfiguration  
)
inline

◆ registerCells() [2/2]

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
template<typename CellIterator >
void walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::registerCells ( const  flag_t,
const CellIterator &  ,
const CellIterator &  ,
const BoundaryConfiguration  
)
inline

◆ treatDirection()

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
void walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::treatDirection ( const cell_idx_t  x,
const cell_idx_t  y,
const cell_idx_t  z,
const stencil::Direction  dir,
const cell_idx_t  nx,
const cell_idx_t  ny,
const cell_idx_t  nz,
const flag_t  mask 
)
inline

◆ unregisterCell()

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
void walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::unregisterCell ( const  flag_t,
const  cell_idx_t,
const  cell_idx_t,
const  cell_idx_t 
) const
inline

Member Data Documentation

◆ ac_

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
shared_ptr<ParticleAccessor_T> walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::ac_
private

◆ block_

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
const IBlock& walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::block_
private

◆ blockStorage_

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
const StructuredBlockStorage& walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::blockStorage_
private

◆ domainMask_

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
flag_t walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::domainMask_
private

◆ flagField_

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
const FlagField_T* const walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::flagField_
private

◆ forceScalingFactor_

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
real_t walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::forceScalingFactor_
private

◆ hydrostaticDensityFct_

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
std::function<real_t(const Vector3<real_t>&)> walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::hydrostaticDensityFct_
private

◆ lengthScalingFactor_

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
real_t walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::lengthScalingFactor_
private

◆ particleField_

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
ParticleField_T* const walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::particleField_
private

◆ pdfField_

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
PDFField_T* const walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::pdfField_
private

◆ uid_

template<typename LatticeModel_T , typename FlagField_T , typename ParticleAccessor_T >
const FlagUID walberla::lbm_mesapd_coupling::CurvedLinear< LatticeModel_T, FlagField_T, ParticleAccessor_T >::uid_
private

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