waLBerla 7.3
Loading...
Searching...
No Matches
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_ {false}

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>
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:
  • /builds/administration/walberla-website/walberla/src/lbm_mesapd_coupling/momentum_exchange_method/boundary/CurvedLinear.h