Creates a default boundary handling for LBM simulations.
This functor is usually used like
Use this boundary handling if the DefaultBoundaryHandling is not flexible enough for you. This boundary handling stores boundary velocities/pressure for each cell separately resulting in a memory consumption of 4 real values per cell. The Handling itself is also more costly since these values have to be loaded from memory.
The following boundary conditions are available:
LatticeModel | The lattice model used for the simulation |
FlagFieldT | Type of the used flag field |
#include <ExtendedBoundaryHandlingFactory.h>
Public Types | |
using | flag_t = typename FlagFieldT::flag_t |
using | Stencil = typename LatticeModel::Stencil |
using | Velocity = Vector3< real_t > |
using | PdfFieldLM = PdfField< LatticeModel > |
using | BcNoSlip = NoSlip< LatticeModel, flag_t > |
using | BcFreeSlip = FreeSlip< LatticeModel, FlagFieldT > |
using | BcPressure = Pressure< LatticeModel, flag_t > |
using | BcUBB = ParserUBB< LatticeModel, flag_t > |
using | BcOutlet = Outlet< LatticeModel, FlagFieldT > |
using | BcCurved = Curved< LatticeModel, FlagFieldT > |
using | BoundaryHandling = walberla::boundary::BoundaryHandling< FlagFieldT, Stencil, BcNoSlip, BcFreeSlip, BcPressure, BcUBB, BcOutlet, BcCurved > |
Public Member Functions | |
ExtendedBoundaryHandlingFactory (const BlockDataID &flagField, const BlockDataID &pdfField, const Set< FlagUID > &flagUIDSet, const typename BoundaryHandling::Mode boundaryHandlingTraversalMode) | |
BoundaryHandling * | operator() (walberla::IBlock *const block, const walberla::StructuredBlockStorage *const storage) const |
Static Public Member Functions | |
static BlockDataID | addBoundaryHandlingToStorage (const shared_ptr< StructuredBlockStorage > &bs, const std::string &identifier, BlockDataID flagFieldID, BlockDataID pdfFieldID, const Set< FlagUID > &flagUIDSet) |
static BlockDataID | addBoundaryHandlingToStorage (const shared_ptr< StructuredBlockStorage > &bs, const std::string &identifier, BlockDataID flagFieldID, BlockDataID pdfFieldID, const Set< FlagUID > &flagUIDSet, const typename BoundaryHandling::Mode boundaryHandlingTraversalMode) |
static const walberla::FlagUID & | getNoSlip () |
static const walberla::FlagUID & | getFreeSlip () |
static const walberla::FlagUID & | getPressure () |
static const walberla::FlagUID & | getUBB () |
static const walberla::FlagUID & | getOutlet () |
static const walberla::FlagUID & | getCurved () |
static const walberla::BoundaryUID & | getNoSlipBoundaryUID () |
static const walberla::BoundaryUID & | getFreeSlipBoundaryUID () |
static const walberla::BoundaryUID & | getPressureBoundaryUID () |
static const walberla::BoundaryUID & | getUBBBoundaryUID () |
static const walberla::BoundaryUID & | getOutletBoundaryUID () |
static const walberla::BoundaryUID & | getCurvedBoundaryUID () |
Private Attributes | |
BlockDataID | flagField_ |
BlockDataID | pdfField_ |
const Set< FlagUID > | flagUIDSet_ |
const BoundaryHandling::Mode | boundaryHandlingTraversalMode_ |
using walberla::lbm::ExtendedBoundaryHandlingFactory< LatticeModel, FlagFieldT >::BcCurved = Curved<LatticeModel, FlagFieldT> |
using walberla::lbm::ExtendedBoundaryHandlingFactory< LatticeModel, FlagFieldT >::BcFreeSlip = FreeSlip<LatticeModel, FlagFieldT> |
using walberla::lbm::ExtendedBoundaryHandlingFactory< LatticeModel, FlagFieldT >::BcNoSlip = NoSlip<LatticeModel, flag_t> |
using walberla::lbm::ExtendedBoundaryHandlingFactory< LatticeModel, FlagFieldT >::BcOutlet = Outlet<LatticeModel, FlagFieldT> |
using walberla::lbm::ExtendedBoundaryHandlingFactory< LatticeModel, FlagFieldT >::BcPressure = Pressure<LatticeModel, flag_t> |
using walberla::lbm::ExtendedBoundaryHandlingFactory< LatticeModel, FlagFieldT >::BcUBB = ParserUBB<LatticeModel, flag_t> |
using walberla::lbm::ExtendedBoundaryHandlingFactory< LatticeModel, FlagFieldT >::BoundaryHandling = walberla::boundary::BoundaryHandling<FlagFieldT, Stencil, BcNoSlip, BcFreeSlip, BcPressure, BcUBB, BcOutlet, BcCurved> |
using walberla::lbm::ExtendedBoundaryHandlingFactory< LatticeModel, FlagFieldT >::flag_t = typename FlagFieldT::flag_t |
using walberla::lbm::ExtendedBoundaryHandlingFactory< LatticeModel, FlagFieldT >::PdfFieldLM = PdfField<LatticeModel> |
using walberla::lbm::ExtendedBoundaryHandlingFactory< LatticeModel, FlagFieldT >::Stencil = typename LatticeModel::Stencil |
using walberla::lbm::ExtendedBoundaryHandlingFactory< LatticeModel, FlagFieldT >::Velocity = Vector3<real_t> |
walberla::lbm::ExtendedBoundaryHandlingFactory< LatticeModel, FlagFieldT >::ExtendedBoundaryHandlingFactory | ( | const BlockDataID & | flagField, |
const BlockDataID & | pdfField, | ||
const Set< FlagUID > & | flagUIDSet, | ||
const typename BoundaryHandling::Mode | boundaryHandlingTraversalMode | ||
) |
flagField | BlockDataID of the flag field used in the simulation |
pdfField | BlockDataID of the PDF field used in the simulation |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
ExtendedBoundaryHandlingFactory< LatticeModel, FlagFieldT >::BoundaryHandling * walberla::lbm::ExtendedBoundaryHandlingFactory< LatticeModel, FlagFieldT >::operator() | ( | walberla::IBlock *const | block, |
const walberla::StructuredBlockStorage *const | storage | ||
) | const |
|
private |
|
private |
|
private |
|
private |