34#ifndef BoundaryConditionKernelManager_H
35#define BoundaryConditionKernelManager_H
48class CudaMemoryManager;
49class BoundaryConditionFactory;
51struct LBMSimulationParameter;
115 template <
typename bcFunction>
116 void checkBoundaryCondition(
const bcFunction& boundaryCondition,
117 const std::vector<QforDirectionalBoundaryCondition>&
bcVector,
const std::string&
bcName)
119 if (!boundaryCondition && !
bcVector.empty())
120 throw std::runtime_error(
"The boundary condition " +
bcName +
" was not set!");
128 template <
typename bcFunction>
129 void checkBoundaryCondition(
const bcFunction& boundaryCondition,
130 const std::vector<QforDirectionalADBoundaryCondition>&
bcVector,
const std::string&
bcName)
132 if (!boundaryCondition && !
bcVector.empty())
133 throw std::runtime_error(
"The boundary condition " +
bcName +
" was not set!");
141 template <
typename bcFunction,
typename QforBC>
144 if (!boundaryCondition &&
bcStruct.numberOfBCnodes > 0)
145 throw std::runtime_error(
"The boundary condition " +
bcName +
" was not set!");
void runADNeumannBCKernel(int level) const
void runADDirectionalBCKernel(int level) const
calls the device function of the directional advection-diffusion (temperature) outflow BC (post-colli...
void runSurfaceLayerBCKernelPost(int level) const
calls the device function of the surface layer boundary condition (post-collision)
void runADDirichletBCKernel(int level) const
void runVelocityBCKernelPost(int level) const
calls the device function of the velocity boundary condition (post-collision)
void runVelocityBCKernelPre(int level) const
calls the device function of the velocity boundary condition (pre-collision)
void runADFluxBCKernel(int level) const
void runNoSlipBCKernelPost(int level) const
calls the device function of the no-slip boundary condition (post-collision)
void runADNoFluxBCKernel(int level) const
void runGeoBCKernelPost(int level) const
calls the device function of the geometry boundary condition (post-collision)
void runStressWallModelKernelPost(int level) const
calls the device function of the stress wall model (post-collision)
void runPressureBCKernelPre(int level) const
calls the device function of the pressure boundary condition (pre-collision)
void runPrecursorBCKernelPost(int level, uint t, CudaMemoryManager *cudaMemoryManager)
calls the device function of the precursor boundary condition
void runGeoBCKernelPre(int level, unsigned int t, CudaMemoryManager *cudaMemoryManager) const
calls the device function of the geometry boundary condition (pre-collision)
void runSlipBCKernelPost(int level) const
calls the device function of the slip boundary condition (post-collision)
std::shared_ptr< T > SPtr
void(*)(LBMSimulationParameter *, QforBoundaryConditions *) bcFunction
std::function< void(LBMSimulationParameter *, AdvectionDiffusionFluxBoundaryConditions bcParams)> ADFluxBoundaryConditionKernel
std::function< void(LBMSimulationParameter *, AdvectionDiffusionDirichletBoundaryConditions bcParams)> ADDirichletBoundaryConditionKernel
std::function< void(LBMSimulationParameter *, AdvectionDiffusionNeumannBoundaryConditions bcParams)> ADNeumannBoundaryConditionKernel
std::function< void(LBMSimulationParameter *, QforPrecursorBoundaryConditions *, real timeRatio, real velocityRatio)> PrecursorBoundaryConditionKernel
std::function< void(LBMSimulationParameter *, QforDirectionalBoundaryCondition *)> DirectionalBoundaryConditionKernel
std::function< void(LBMSimulationParameter *, QforDirectionalADBoundaryCondition *)> DirectionalADBoundaryConditionKernel
std::function< void(LBMSimulationParameter *, QforBoundaryConditions *)> BoundaryConditionKernel
std::function< void(Parameter *, QforBoundaryConditions *, const int level)> BoundaryConditionWithParameterKernel
std::function< void(LBMSimulationParameter *, AdvectionDiffusionNoFluxBoundaryConditions bcParams)> ADNoFluxBoundaryConditionKernel
struct holds and manages the LB-parameter of the simulation