walberla::lbm::initializer::Poiseuille< BoundaryHandling_T, LM, SimplePressure, UBB > Class Template Reference

Detailed Description

template<typename BoundaryHandling_T, typename LM, typename SimplePressure = lbm::SimplePressure <LM, typename BoundaryHandling_T::flag_t>, typename UBB = lbm::UBB <LM, typename BoundaryHandling_T::flag_t>>
class walberla::lbm::initializer::Poiseuille< BoundaryHandling_T, LM, SimplePressure, UBB >

Initializes the complete domain with a Poiseuille (Channel) Flow.

Configuration file syntax:

<blockName>
{
scenario rect2D|pipe;
boundary pressureDriven|velocityDriven|forceDriven
pressureDiff 0.1; // either pressureDiff or velocity is required
velocity 1.0 // either one can be calculated from the other
flowAxis 0; // specifying the direction of the channel, i.e. the axis along which the fluid is flowing
parabolaAxis 1; // only required for rect2D setup. Axis where no-slip boundaries are set -
// the remaining third axis has to be periodic. By default chosen as a non-periodic axis
// that is not the flowAxis
}

scenario:

  • rect2D: rectangular channel where boundary in direction of periodicAxis are set periodic and the remaining boundary is set to no-slip
  • pipe: channel with circular cross section boundary:
  • pressureDriven: at the end of flowAxis pressure boundaries are used
  • velocityDriven: at the inflow a UBB prescribing a parabolic velocity profile is set at the outflow a Outlet boundary is set
  • forceDriven: flowAxis has to be periodic. No boundaries are set, but an external force term is set in the Lattice model

flowAxis: specifying the direction of the channel, i.e. the axis along which the fluid is flowing 0 for x, 1 for y, 2 = z

#include <PoiseuilleInitializer.h>

+ Inheritance diagram for walberla::lbm::initializer::Poiseuille< BoundaryHandling_T, LM, SimplePressure, UBB >:

Public Types

enum  Scenario { RECT_2D, PIPE }
 
enum  BoundaryType { PRESSURE_DRIVEN, VELOCITY_DRIVEN, FORCE_DRIVEN }
 
using Axis = uint_t
 

Public Member Functions

 Poiseuille (StructuredBlockStorage &blocks, BlockDataID &handlerID, BlockDataID &pdfFieldID, field::FlagUID noSlipFlag, field::FlagUID ubbFlag, field::FlagUID pressureFlag1, field::FlagUID pressureFlag2)
 
void init (BlockStorage &, const Config::BlockHandle &blockHandle) override
 
void init (const Config::BlockHandle &blockHandle)
 
void init (Scenario scenario, BoundaryType boundaryType, real_t pressureDiff, Axis flowAxis, Axis parabolaAxis=INVALID_AXIS)
 
- Public Member Functions inherited from walberla::geometry::initializer::Initializer
virtual ~Initializer ()=default
 

Static Public Attributes

static const uint_t X_AXIS = 0
 
static const uint_t Y_AXIS = 1
 
static const uint_t Z_AXIS = 2
 
static const uint_t INVALID_AXIS = 3
 

Protected Member Functions

void initVelocityBoundary (Scenario scenario, Axis flowAxis, real_t maxVelocity, Axis parabolaAxis)
 
void initPressureBoundary (Axis flowAxis, real_t pressureDiff)
 
void initNoSlipBoundaries (Scenario scenario, Axis flowAxis, Axis parabolaAxis)
 
void setInitVelocity (Scenario scenario, Axis flowAxis, real_t maxVelocity, Axis parabolaAxis)
 
real_t getVelocity (const Cell &globalCell, Scenario scenario, Axis flowAxis, real_t maxVelocity, Axis parabolaAxis)
 
real_t getPipeRadius (Scenario scenario, Axis flowAxis, Axis parabolaAxis) const
 
real_t velocityFromPressureDiff (Scenario scenario, real_t pressureDiff, Axis flowAxis, Axis parabolaAxis)
 
real_t pressureDiffFromVelocity (Scenario scenario, real_t velocity, Axis flowAxis, Axis parabolaAxis)
 
Axis checkParabolaAxis (Axis parabolaAxis, Axis flowAxis)
 

Protected Attributes

StructuredBlockStoragestorage_
 
BlockDataID handlerID_
 
BlockDataID pdfFieldID_
 
field::FlagUID noSlipFlag_
 
field::FlagUID ubbFlag_
 
field::FlagUID pressureFlag1_
 
field::FlagUID pressureFlag2_
 
real_t latticeViscosity_
 
Vector3< real_tmidPoint_
 
Vector3< real_tmaxPoint_
 

Member Typedef Documentation

◆ Axis

template<typename BoundaryHandling_T , typename LM , typename SimplePressure = lbm::SimplePressure <LM, typename BoundaryHandling_T::flag_t>, typename UBB = lbm::UBB <LM, typename BoundaryHandling_T::flag_t>>
using walberla::lbm::initializer::Poiseuille< BoundaryHandling_T, LM, SimplePressure, UBB >::Axis = uint_t

Member Enumeration Documentation

◆ BoundaryType

template<typename BoundaryHandling_T , typename LM , typename SimplePressure = lbm::SimplePressure <LM, typename BoundaryHandling_T::flag_t>, typename UBB = lbm::UBB <LM, typename BoundaryHandling_T::flag_t>>
enum walberla::lbm::initializer::Poiseuille::BoundaryType
Enumerator
PRESSURE_DRIVEN 
VELOCITY_DRIVEN 
FORCE_DRIVEN 

◆ Scenario

template<typename BoundaryHandling_T , typename LM , typename SimplePressure = lbm::SimplePressure <LM, typename BoundaryHandling_T::flag_t>, typename UBB = lbm::UBB <LM, typename BoundaryHandling_T::flag_t>>
enum walberla::lbm::initializer::Poiseuille::Scenario
Enumerator
RECT_2D 
PIPE 

Constructor & Destructor Documentation

◆ Poiseuille()

template<typename BH_T , typename LM , typename SP , typename UBB >
walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::Poiseuille ( StructuredBlockStorage blocks,
BlockDataID handlerID,
BlockDataID pdfFieldID,
field::FlagUID  noSlipFlag,
field::FlagUID  ubbFlag,
field::FlagUID  pressureFlag1,
field::FlagUID  pressureFlag2 
)

Member Function Documentation

◆ checkParabolaAxis()

template<typename BH_T , typename LM , typename SP , typename UBB >
Poiseuille< BH_T, LM, SP, UBB >::Axis walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::checkParabolaAxis ( Axis  parabolaAxis,
Axis  flowAxis 
)
protected

◆ getPipeRadius()

template<typename BH_T , typename LM , typename SP , typename UBB >
real_t walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::getPipeRadius ( Scenario  scenario,
Axis  flowAxis,
Axis  parabolaAxis 
) const
protected

◆ getVelocity()

template<typename BH_T , typename LM , typename SP , typename UBB >
real_t walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::getVelocity ( const Cell globalCell,
Scenario  scenario,
Axis  flowAxis,
real_t  maxVelocity,
Axis  parabolaAxis 
)
protected

◆ init() [1/3]

template<typename BoundaryHandling_T , typename LM , typename SimplePressure = lbm::SimplePressure <LM, typename BoundaryHandling_T::flag_t>, typename UBB = lbm::UBB <LM, typename BoundaryHandling_T::flag_t>>
void walberla::lbm::initializer::Poiseuille< BoundaryHandling_T, LM, SimplePressure, UBB >::init ( BlockStorage ,
const Config::BlockHandle blockHandle 
)
inlineoverridevirtual

◆ init() [2/3]

template<typename BH_T , typename LM , typename SP , typename UBB >
void walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::init ( const Config::BlockHandle blockHandle)

◆ init() [3/3]

template<typename BH_T , typename LM , typename SP , typename UBB >
void walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::init ( Scenario  scenario,
BoundaryType  boundaryType,
real_t  pressureDiff,
Axis  flowAxis,
Axis  parabolaAxis = INVALID_AXIS 
)

◆ initNoSlipBoundaries()

template<typename BH_T , typename LM , typename SP , typename UBB >
void walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::initNoSlipBoundaries ( Scenario  scenario,
Axis  flowAxis,
Axis  parabolaAxis 
)
protected

◆ initPressureBoundary()

template<typename BH_T , typename LM , typename SP , typename UBB >
void walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::initPressureBoundary ( Axis  flowAxis,
real_t  pressureDiff 
)
protected

◆ initVelocityBoundary()

template<typename BH_T , typename LM , typename SP , typename UBB >
void walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::initVelocityBoundary ( Scenario  scenario,
Axis  flowAxis,
real_t  maxVelocity,
Axis  parabolaAxis 
)
protected

◆ pressureDiffFromVelocity()

template<typename BH_T , typename LM , typename SP , typename UBB >
real_t walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::pressureDiffFromVelocity ( Scenario  scenario,
real_t  velocity,
Axis  flowAxis,
Axis  parabolaAxis 
)
protected

◆ setInitVelocity()

template<typename BH_T , typename LM , typename SP , typename UBB >
void walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::setInitVelocity ( Scenario  scenario,
Axis  flowAxis,
real_t  maxVelocity,
Axis  parabolaAxis 
)
protected

◆ velocityFromPressureDiff()

template<typename BH_T , typename LM , typename SP , typename UBB >
real_t walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::velocityFromPressureDiff ( Scenario  scenario,
real_t  pressureDiff,
Axis  flowAxis,
Axis  parabolaAxis 
)
protected

Member Data Documentation

◆ handlerID_

template<typename BoundaryHandling_T , typename LM , typename SimplePressure = lbm::SimplePressure <LM, typename BoundaryHandling_T::flag_t>, typename UBB = lbm::UBB <LM, typename BoundaryHandling_T::flag_t>>
BlockDataID walberla::lbm::initializer::Poiseuille< BoundaryHandling_T, LM, SimplePressure, UBB >::handlerID_
protected

◆ INVALID_AXIS

template<typename BH_T , typename LM , typename SP , typename UBB >
const uint_t walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::INVALID_AXIS = 3
static

◆ latticeViscosity_

template<typename BoundaryHandling_T , typename LM , typename SimplePressure = lbm::SimplePressure <LM, typename BoundaryHandling_T::flag_t>, typename UBB = lbm::UBB <LM, typename BoundaryHandling_T::flag_t>>
real_t walberla::lbm::initializer::Poiseuille< BoundaryHandling_T, LM, SimplePressure, UBB >::latticeViscosity_
protected

◆ maxPoint_

template<typename BoundaryHandling_T , typename LM , typename SimplePressure = lbm::SimplePressure <LM, typename BoundaryHandling_T::flag_t>, typename UBB = lbm::UBB <LM, typename BoundaryHandling_T::flag_t>>
Vector3<real_t> walberla::lbm::initializer::Poiseuille< BoundaryHandling_T, LM, SimplePressure, UBB >::maxPoint_
protected

◆ midPoint_

template<typename BoundaryHandling_T , typename LM , typename SimplePressure = lbm::SimplePressure <LM, typename BoundaryHandling_T::flag_t>, typename UBB = lbm::UBB <LM, typename BoundaryHandling_T::flag_t>>
Vector3<real_t> walberla::lbm::initializer::Poiseuille< BoundaryHandling_T, LM, SimplePressure, UBB >::midPoint_
protected

◆ noSlipFlag_

template<typename BoundaryHandling_T , typename LM , typename SimplePressure = lbm::SimplePressure <LM, typename BoundaryHandling_T::flag_t>, typename UBB = lbm::UBB <LM, typename BoundaryHandling_T::flag_t>>
field::FlagUID walberla::lbm::initializer::Poiseuille< BoundaryHandling_T, LM, SimplePressure, UBB >::noSlipFlag_
protected

◆ pdfFieldID_

template<typename BoundaryHandling_T , typename LM , typename SimplePressure = lbm::SimplePressure <LM, typename BoundaryHandling_T::flag_t>, typename UBB = lbm::UBB <LM, typename BoundaryHandling_T::flag_t>>
BlockDataID walberla::lbm::initializer::Poiseuille< BoundaryHandling_T, LM, SimplePressure, UBB >::pdfFieldID_
protected

◆ pressureFlag1_

template<typename BoundaryHandling_T , typename LM , typename SimplePressure = lbm::SimplePressure <LM, typename BoundaryHandling_T::flag_t>, typename UBB = lbm::UBB <LM, typename BoundaryHandling_T::flag_t>>
field::FlagUID walberla::lbm::initializer::Poiseuille< BoundaryHandling_T, LM, SimplePressure, UBB >::pressureFlag1_
protected

◆ pressureFlag2_

template<typename BoundaryHandling_T , typename LM , typename SimplePressure = lbm::SimplePressure <LM, typename BoundaryHandling_T::flag_t>, typename UBB = lbm::UBB <LM, typename BoundaryHandling_T::flag_t>>
field::FlagUID walberla::lbm::initializer::Poiseuille< BoundaryHandling_T, LM, SimplePressure, UBB >::pressureFlag2_
protected

◆ storage_

template<typename BoundaryHandling_T , typename LM , typename SimplePressure = lbm::SimplePressure <LM, typename BoundaryHandling_T::flag_t>, typename UBB = lbm::UBB <LM, typename BoundaryHandling_T::flag_t>>
StructuredBlockStorage& walberla::lbm::initializer::Poiseuille< BoundaryHandling_T, LM, SimplePressure, UBB >::storage_
protected

◆ ubbFlag_

template<typename BoundaryHandling_T , typename LM , typename SimplePressure = lbm::SimplePressure <LM, typename BoundaryHandling_T::flag_t>, typename UBB = lbm::UBB <LM, typename BoundaryHandling_T::flag_t>>
field::FlagUID walberla::lbm::initializer::Poiseuille< BoundaryHandling_T, LM, SimplePressure, UBB >::ubbFlag_
protected

◆ X_AXIS

template<typename BH_T , typename LM , typename SP , typename UBB >
const uint_t walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::X_AXIS = 0
static

◆ Y_AXIS

template<typename BH_T , typename LM , typename SP , typename UBB >
const uint_t walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::Y_AXIS = 1
static

◆ Z_AXIS

template<typename BH_T , typename LM , typename SP , typename UBB >
const uint_t walberla::lbm::initializer::Poiseuille< BH_T, LM, SP, UBB >::Z_AXIS = 2
static

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