115 isGeometryBC ? std::get<VelocityBC>(this->geometryBoundaryCondition) : this->velocityBoundaryCondition;
118 switch (boundaryCondition) {
139 isGeometryBC ? std::get<NoSlipBC>(this->geometryBoundaryCondition) : this->noSlipBoundaryCondition;
142 switch (boundaryCondition) {
162 const SlipBC& boundaryCondition =
163 isGeometryBC ? std::get<SlipBC>(this->geometryBoundaryCondition) : this->slipBoundaryCondition;
166 switch (boundaryCondition) {
181std::variant<BoundaryConditionKernel, DirectionalBoundaryConditionKernel>
185 switch (this->pressureBoundaryCondition) {
209 switch (this->precursorBoundaryCondition) {
226 switch (this->stressBoundaryCondition) {
243 if (std::holds_alternative<VelocityBC>(this->geometryBoundaryCondition))
245 if (std::holds_alternative<NoSlipBC>(this->geometryBoundaryCondition))
247 if (std::holds_alternative<SlipBC>(this->geometryBoundaryCondition))
274 switch(this->advectionDiffusionDirichletBoundaryCondition)
291 switch(this->advectionDiffusionNeumannBoundaryCondition)
308 switch (this->advectionDiffusionDirectionalBoundaryCondition) {
A class provides an interface for no-slip boundary condition in grid generator.
A class provides an interface for velocity boundary condition in grid generator.
virtual std::variant< BoundaryConditionKernel, DirectionalBoundaryConditionKernel > getPressureBoundaryConditionPre() const
@ NoSlipInterpolatedIncompressible
@ NoSlipInterpolatedCompressible
void setPrecursorBoundaryCondition(BoundaryConditionFactory::PrecursorBC boundaryConditionType)
virtual BoundaryConditionKernel getVelocityBoundaryConditionPost(bool isGeometryBC=false) const
AdvectionDiffusionNeumannBC
Sets gradient at boundary via anti bounce back rule. Only works well at low velocities.
@ NeumannInterpolatedSlip
@ NeumannInterpolatedNoSlip
@ NeumannAntiBounceBackSlip
@ NeumannAntiBounceBackNoSlip
AdvectionDiffusionFluxBC
Can set flux, best used in combination with Slip or velocity.
@ FluxTurbulentViscosityCompressible
BoundaryConditionKernel getStressBoundaryConditionPost() const
SurfaceLayerBC
Enum to differentiate between setting heatlfux or surfaceTemperature in SurfaceLayer BC.
void setAdvectionDiffusionDirichletBoundaryCondition(AdvectionDiffusionDirichletBC boundaryConditionType)
@ PressureNonEquilibriumIncompressible
@ PressureNonEquilibriumCompressible
@ OutflowNonReflectivePressureCorrection
void setAdvectionDiffusionFluxBoundaryCondition(AdvectionDiffusionFluxBC boundaryConditionType)
BoundaryConditionKernel getNoSlipBoundaryConditionPost(bool isGeometryBC=false) const
BoundaryConditionKernel getSlipBoundaryConditionPost(bool isGeometryBC=false) const
void setStressBoundaryCondition(BoundaryConditionFactory::StressBC boundaryConditionType)
BoundaryConditionKernel getSurfaceLayerBoundaryConditionPost() const
void setAdvectionDiffusionNoFluxBoundaryCondition(AdvectionDiffusionNoFluxBC boundaryConditionType)
@ SlipBounceBack
SlipBounceBack = slip boundary condition based on bounce back.
@ SlipTurbulentViscosityCompressible
With turbulent viscosity -> para->setUseTurbulentViscosity(true) has to be set to true.
BoundaryConditionKernel getGeometryBoundaryConditionPost() const
void setAdvectionDiffusionNeumannBoundaryCondition(AdvectionDiffusionNeumannBC boundaryConditionType)
virtual bool hasDirectionalPressureBoundaryCondition() const
AdvectionDiffusionNoFluxBC
Equivalent to an adiabatic boundary condition, best used in combination with NoSlip.
@ NoFluxBounceBack
NoFluxBounceBack = simple bounce back.
@ NoFluxDelayedBounceBack
NoFluxBounceBackDelayed = implicit bounce back.
AdvectionDiffusionDirichletBoundaryConditionKernel getAdvectionDiffusionDirichletBoundaryConditionPost() const
void setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC boundaryConditionType)
void setNoSlipBoundaryCondition(BoundaryConditionFactory::NoSlipBC boundaryConditionType)
@ VelocityInterpolatedCompressible
@ VelocityInterpolatedIncompressible
@ VelocityWithPressureInterpolatedCompressible
void setSurfaceLayerBoundaryCondition(StressBC momentumBoundaryConditionType, SurfaceLayerBC surfaceLayerBoundaryConditionType)
AdvectionDiffusionNeumannBoundaryConditionKernel getAdvectionDiffusionNeumannBoundaryConditionPost() const
DirectionalADBoundaryConditionKernel getAdvectionDiffusionDirectionalBoundaryConditionPost() const
void setSlipBoundaryCondition(BoundaryConditionFactory::SlipBC boundaryConditionType)
AdvectionDiffusionFluxBoundaryConditionKernel getAdvectionDiffusionFluxBoundaryConditionPost() const
StressBC
An enumeration for selecting a stress boundary condition.
@ StressBounceBackWithPressureCompressible
@ StressInterpolatedCompressible
@ StressBounceBackCompressible
void setGeometryBoundaryCondition(std::variant< VelocityBC, NoSlipBC, SlipBC > boundaryConditionType)
set a boundary condition for the geometry param boundaryConditionType: a velocity,...
AdvectionDiffusionDirichletBC
Sets constant value at boundary via Anti bounce back rule.
@ DirichletInterpolatedSlip
@ DirichletAntiBounceBackNoSlip
@ DirichletAntiBounceBackSlip
@ DirichletInterpolatedNoSlip
void setAdvectionDiffusionDirectionalBoundaryCondition(AdvectionDiffusionDirectionalBC boundaryConditionType)
AdvectionDiffusionNoFluxBoundaryConditionKernel getAdvectionDiffusionNoFluxBoundaryConditionPost() const
void setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC boundaryConditionType)
@ PrecursorVelTemperatureDistributions
@ PrecursorNonReflectiveCompressible
AdvectionDiffusionDirectionalBC
Directional non-reflecting outflow for the advection-diffusion (temperature) field.
@ DirectionalOutflowNonReflecting
PrecursorBoundaryConditionKernel getPrecursorBoundaryConditionPost() const
std::shared_ptr< T > SPtr
void SurfaceLayerBounceBackWithPressureCompressibleSurfaceTemperature(LBMSimulationParameter *parameterDevice, QforBoundaryConditions *surfaceLayerBoundaryCondition)
void AdvectionDiffusionDirichletInterpolatedSlip(LBMSimulationParameter *parameterDevice, AdvectionDiffusionDirichletBoundaryConditions bcParameters)
void SurfaceLayerBounceBackWithPressureCompressibleHeatFlux(LBMSimulationParameter *parameterDevice, QforBoundaryConditions *surfaceLayerBoundaryCondition)
void AdvectionDiffusionNeumannAntiBounceBackSlip(LBMSimulationParameter *parameterDevice, AdvectionDiffusionNeumannBoundaryConditions bcParameters)
void AdvectionDiffusionFluxTurbulentViscosityCompressible(LBMSimulationParameter *parameterDevice, AdvectionDiffusionFluxBoundaryConditions bcParameters)
std::function< void(LBMSimulationParameter *, AdvectionDiffusionNoFluxBoundaryConditions)> AdvectionDiffusionNoFluxBoundaryConditionKernel
void OutflowNonReflectingPressureCorrection(LBMSimulationParameter *parameterDevice, QforDirectionalBoundaryCondition *boundaryCondition)
void AdvectionDiffusionNeumannAntiBounceBackNoSlip(LBMSimulationParameter *parameterDevice, AdvectionDiffusionNeumannBoundaryConditions bcParameters)
void SurfaceLayerInterpolatedCompressibleSurfaceTemperature(LBMSimulationParameter *parameterDevice, QforBoundaryConditions *surfaceLayerBoundaryCondition)
std::function< void(LBMSimulationParameter *, AdvectionDiffusionDirichletBoundaryConditions)> AdvectionDiffusionDirichletBoundaryConditionKernel
void AdvectionDiffusionNeumannInterpolatedSlip(LBMSimulationParameter *parameterDevice, AdvectionDiffusionNeumannBoundaryConditions bcParameters)
std::function< void(LBMSimulationParameter *, AdvectionDiffusionFluxBoundaryConditions)> AdvectionDiffusionFluxBoundaryConditionKernel
void SurfaceLayerBounceBackCompressibleSurfaceTemperature(LBMSimulationParameter *parameterDevice, QforBoundaryConditions *surfaceLayerBoundaryCondition)
void AdvectionDiffusionNeumannInterpolatedNoSlip(LBMSimulationParameter *parameterDevice, AdvectionDiffusionNeumannBoundaryConditions bcParameters)
std::function< void(LBMSimulationParameter *, QforPrecursorBoundaryConditions *, real timeRatio, real velocityRatio)> PrecursorBoundaryConditionKernel
void AdvectionDiffusionFluxBounceBack(LBMSimulationParameter *parameterDevice, AdvectionDiffusionFluxBoundaryConditions bcParameters)
void SurfaceLayerInterpolatedCompressibleHeatFlux(LBMSimulationParameter *parameterDevice, QforBoundaryConditions *surfaceLayerBoundaryCondition)
void AdvectionDiffusionNoFluxBounceBack(LBMSimulationParameter *parameterDevice, AdvectionDiffusionNoFluxBoundaryConditions bcParameters)
void PrecursorTemperatureDistributions(LBMSimulationParameter *parameterDevice, QforPrecursorBoundaryConditions *boundaryCondition, real tRatio, real velocityRatio)
std::function< void(LBMSimulationParameter *, AdvectionDiffusionNeumannBoundaryConditions)> AdvectionDiffusionNeumannBoundaryConditionKernel
void AdvectionDiffusionDirectionalOutflowNonReflecting(LBMSimulationParameter *parameterDevice, QforDirectionalADBoundaryCondition *boundaryCondition)
void AdvectionDiffusionDirichletInterpolatedNoSlip(LBMSimulationParameter *parameterDevice, AdvectionDiffusionDirichletBoundaryConditions bcParameters)
std::function< void(LBMSimulationParameter *, QforDirectionalBoundaryCondition *)> DirectionalBoundaryConditionKernel
std::function< void(LBMSimulationParameter *, QforDirectionalADBoundaryCondition *)> DirectionalADBoundaryConditionKernel
void AdvectionDiffusionFluxCompressible(LBMSimulationParameter *parameterDevice, AdvectionDiffusionFluxBoundaryConditions bcParameters)
void AdvectionDiffusionDirichletAntiBounceBackSlip(LBMSimulationParameter *parameterDevice, AdvectionDiffusionDirichletBoundaryConditions bcParameters)
void SurfaceLayerBounceBackCompressibleHeatFlux(LBMSimulationParameter *parameterDevice, QforBoundaryConditions *surfaceLayerBoundaryCondition)
std::function< void(LBMSimulationParameter *, QforBoundaryConditions *)> BoundaryConditionKernel
void AdvectionDiffusionDirichletAntiBounceBackNoSlip(LBMSimulationParameter *parameterDevice, AdvectionDiffusionDirichletBoundaryConditions bcParameters)
struct holds and manages the LB-parameter of the simulation