diff --git a/src/gpu/core/BoundaryConditions/BoundaryConditionFactory.cpp b/src/gpu/core/BoundaryConditions/BoundaryConditionFactory.cpp index 89fa7a775451b5ae3ad8313d1badbd63aa4f4894..6c4eb0944eef5d59cf6c0d8be421f30d2b37ff74 100644 --- a/src/gpu/core/BoundaryConditions/BoundaryConditionFactory.cpp +++ b/src/gpu/core/BoundaryConditions/BoundaryConditionFactory.cpp @@ -37,13 +37,13 @@ #include <GridGenerator/grid/BoundaryConditions/BoundaryCondition.h> +#include "BoundaryConditions/NoSlip/NoSlip.h" #include "BoundaryConditions/Outflow/Outflow.h" +#include "BoundaryConditions/Precursor/Precursor.h" #include "BoundaryConditions/Pressure/Pressure.h" -#include "BoundaryConditions/NoSlip/NoSlip.h" -#include "BoundaryConditions/Velocity/Velocity.h" #include "BoundaryConditions/Slip/Slip.h" #include "BoundaryConditions/Stress/Stress.h" -#include "BoundaryConditions/Precursor/Precursor.h" +#include "BoundaryConditions/Velocity/Velocity.h" #include "Parameter/Parameter.h" void BoundaryConditionFactory::setVelocityBoundaryCondition(VelocityBC boundaryConditionType) @@ -51,40 +51,39 @@ void BoundaryConditionFactory::setVelocityBoundaryCondition(VelocityBC boundaryC this->velocityBoundaryCondition = boundaryConditionType; } -void BoundaryConditionFactory::setNoSlipBoundaryCondition(const NoSlipBC boundaryConditionType) +void BoundaryConditionFactory::setNoSlipBoundaryCondition(NoSlipBC boundaryConditionType) { this->noSlipBoundaryCondition = boundaryConditionType; } -void BoundaryConditionFactory::setSlipBoundaryCondition(const SlipBC boundaryConditionType) +void BoundaryConditionFactory::setSlipBoundaryCondition(SlipBC boundaryConditionType) { this->slipBoundaryCondition = boundaryConditionType; } -void BoundaryConditionFactory::setPressureBoundaryCondition(const PressureBC boundaryConditionType) +void BoundaryConditionFactory::setPressureBoundaryCondition(PressureBC boundaryConditionType) { this->pressureBoundaryCondition = boundaryConditionType; } -void BoundaryConditionFactory::setGeometryBoundaryCondition( - const std::variant<VelocityBC, NoSlipBC, SlipBC> boundaryConditionType) +void BoundaryConditionFactory::setGeometryBoundaryCondition(std::variant<VelocityBC, NoSlipBC, SlipBC> boundaryConditionType) { this->geometryBoundaryCondition = boundaryConditionType; } -void BoundaryConditionFactory::setStressBoundaryCondition(const StressBC boundaryConditionType) +void BoundaryConditionFactory::setStressBoundaryCondition(StressBC boundaryConditionType) { this->stressBoundaryCondition = boundaryConditionType; } -void BoundaryConditionFactory::setPrecursorBoundaryCondition(const PrecursorBC boundaryConditionType) +void BoundaryConditionFactory::setPrecursorBoundaryCondition(PrecursorBC boundaryConditionType) { this->precursorBoundaryCondition = boundaryConditionType; } -boundaryCondition BoundaryConditionFactory::getVelocityBoundaryConditionPost(bool isGeometryBC) const +BoundaryConditionKernel BoundaryConditionFactory::getVelocityBoundaryConditionPost(bool isGeometryBC) const { - const VelocityBC &boundaryCondition = + const VelocityBC& boundaryCondition = isGeometryBC ? std::get<VelocityBC>(this->geometryBoundaryCondition) : this->velocityBoundaryCondition; // for descriptions of the boundary conditions refer to the header @@ -106,15 +105,15 @@ boundaryCondition BoundaryConditionFactory::getVelocityBoundaryConditionPost(boo } } -boundaryCondition BoundaryConditionFactory::getNoSlipBoundaryConditionPost(bool isGeometryBC) const +BoundaryConditionKernel BoundaryConditionFactory::getNoSlipBoundaryConditionPost(bool isGeometryBC) const { - const NoSlipBC &boundaryCondition = + const NoSlipBC& boundaryCondition = isGeometryBC ? std::get<NoSlipBC>(this->geometryBoundaryCondition) : this->noSlipBoundaryCondition; // for descriptions of the boundary conditions refer to the header switch (boundaryCondition) { case NoSlipBC::NoSlipDelayBounceBack: - return [](LBMSimulationParameter *, QforBoundaryConditions *) {}; + return [](LBMSimulationParameter*, QforBoundaryConditions*) {}; break; case NoSlipBC::NoSlipBounceBack: return NoSlipBounceBack; @@ -130,9 +129,9 @@ boundaryCondition BoundaryConditionFactory::getNoSlipBoundaryConditionPost(bool } } -boundaryCondition BoundaryConditionFactory::getSlipBoundaryConditionPost(bool isGeometryBC) const +BoundaryConditionKernel BoundaryConditionFactory::getSlipBoundaryConditionPost(bool isGeometryBC) const { - const SlipBC &boundaryCondition = + const SlipBC& boundaryCondition = isGeometryBC ? std::get<SlipBC>(this->geometryBoundaryCondition) : this->slipBoundaryCondition; // for descriptions of the boundary conditions refer to the header @@ -148,33 +147,33 @@ boundaryCondition BoundaryConditionFactory::getSlipBoundaryConditionPost(bool is } } -std::variant<boundaryCondition, boundaryConditionDirectional> +std::variant<BoundaryConditionKernel, DirectionalBoundaryConditionKernel> BoundaryConditionFactory::getPressureBoundaryConditionPre() const { // for descriptions of the boundary conditions refer to the header switch (this->pressureBoundaryCondition) { case PressureBC::PressureNonEquilibriumIncompressible: - return (boundaryConditionDirectional)PressureNonEquilibriumIncompressible; + return (DirectionalBoundaryConditionKernel)PressureNonEquilibriumIncompressible; break; case PressureBC::PressureNonEquilibriumCompressible: - return (boundaryConditionDirectional)PressureNonEquilibriumCompressible; + return (DirectionalBoundaryConditionKernel)PressureNonEquilibriumCompressible; break; case PressureBC::OutflowNonReflective: - return (boundaryConditionDirectional)OutflowNonReflecting; + return (DirectionalBoundaryConditionKernel)OutflowNonReflecting; break; case PressureBC::OutflowNonReflectivePressureCorrection: - return (boundaryConditionDirectional)OutflowNonReflectingPressureCorrection; + return (DirectionalBoundaryConditionKernel)OutflowNonReflectingPressureCorrection; default: - return (boundaryCondition) nullptr; + return (BoundaryConditionKernel) nullptr; } } bool BoundaryConditionFactory::hasDirectionalPressureBoundaryCondition() const { - return std::holds_alternative<boundaryConditionDirectional>(getPressureBoundaryConditionPre()); + return std::holds_alternative<DirectionalBoundaryConditionKernel>(getPressureBoundaryConditionPre()); } -precursorBoundaryConditionFunc BoundaryConditionFactory::getPrecursorBoundaryConditionPost() const +PrecursorBoundaryConditionKernel BoundaryConditionFactory::getPrecursorBoundaryConditionPost() const { switch (this->precursorBoundaryCondition) { case PrecursorBC::PrecursorNonReflectiveCompressible: @@ -188,7 +187,7 @@ precursorBoundaryConditionFunc BoundaryConditionFactory::getPrecursorBoundaryCon } } -boundaryConditionWithParameter BoundaryConditionFactory::getStressBoundaryConditionPost() const +BoundaryConditionWithParameterKernel BoundaryConditionFactory::getStressBoundaryConditionPost() const { switch (this->stressBoundaryCondition) { case StressBC::StressBounceBackCompressible: @@ -205,13 +204,13 @@ boundaryConditionWithParameter BoundaryConditionFactory::getStressBoundaryCondit } } -boundaryCondition BoundaryConditionFactory::getGeometryBoundaryConditionPost() const +BoundaryConditionKernel BoundaryConditionFactory::getGeometryBoundaryConditionPost() const { if (std::holds_alternative<VelocityBC>(this->geometryBoundaryCondition)) return this->getVelocityBoundaryConditionPost(true); - else if (std::holds_alternative<NoSlipBC>(this->geometryBoundaryCondition)) + if (std::holds_alternative<NoSlipBC>(this->geometryBoundaryCondition)) return this->getNoSlipBoundaryConditionPost(true); - else if (std::holds_alternative<SlipBC>(this->geometryBoundaryCondition)) + if (std::holds_alternative<SlipBC>(this->geometryBoundaryCondition)) return this->getSlipBoundaryConditionPost(true); return nullptr; } diff --git a/src/gpu/core/BoundaryConditions/BoundaryConditionFactory.h b/src/gpu/core/BoundaryConditions/BoundaryConditionFactory.h index 4fd75240b1e92cae777bd07e4d1085639adef1c6..fac6c84df753277a51fe6f7589a9effea1c9f2e1 100644 --- a/src/gpu/core/BoundaryConditions/BoundaryConditionFactory.h +++ b/src/gpu/core/BoundaryConditions/BoundaryConditionFactory.h @@ -47,10 +47,11 @@ struct LBMSimulationParameter; class Parameter; -using boundaryCondition = std::function<void(LBMSimulationParameter *, QforBoundaryConditions *)>; -using boundaryConditionDirectional = std::function<void(LBMSimulationParameter *, QforDirectionalBoundaryCondition *)>; -using boundaryConditionWithParameter = std::function<void(Parameter *, QforBoundaryConditions *, const int level)>; -using precursorBoundaryConditionFunc = std::function<void(LBMSimulationParameter *, QforPrecursorBoundaryConditions *, real timeRatio, real velocityRatio)>; +using BoundaryConditionKernel = std::function<void(LBMSimulationParameter*, QforBoundaryConditions*)>; +using DirectionalBoundaryConditionKernel = std::function<void(LBMSimulationParameter*, QforDirectionalBoundaryCondition*)>; +using BoundaryConditionWithParameterKernel = std::function<void(Parameter*, QforBoundaryConditions*, const int level)>; +using PrecursorBoundaryConditionKernel = + std::function<void(LBMSimulationParameter*, QforPrecursorBoundaryConditions*, real timeRatio, real velocityRatio)>; class BoundaryConditionFactory { @@ -131,12 +132,12 @@ public: NotSpecified }; - void setVelocityBoundaryCondition(const BoundaryConditionFactory::VelocityBC boundaryConditionType); - void setNoSlipBoundaryCondition(const BoundaryConditionFactory::NoSlipBC boundaryConditionType); - void setSlipBoundaryCondition(const BoundaryConditionFactory::SlipBC boundaryConditionType); - void setPressureBoundaryCondition(const BoundaryConditionFactory::PressureBC boundaryConditionType); - void setStressBoundaryCondition(const BoundaryConditionFactory::StressBC boundaryConditionType); - void setPrecursorBoundaryCondition(const BoundaryConditionFactory::PrecursorBC boundaryConditionType); + void setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC boundaryConditionType); + void setNoSlipBoundaryCondition(BoundaryConditionFactory::NoSlipBC boundaryConditionType); + void setSlipBoundaryCondition(BoundaryConditionFactory::SlipBC boundaryConditionType); + void setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC boundaryConditionType); + void setStressBoundaryCondition(BoundaryConditionFactory::StressBC boundaryConditionType); + void setPrecursorBoundaryCondition(BoundaryConditionFactory::PrecursorBC boundaryConditionType); //! \brief set a boundary condition for the geometry //! param boundaryConditionType: a velocity, no-slip or slip boundary condition //! \details suggestions for boundaryConditionType: @@ -146,18 +147,18 @@ public: //! - no-slip: NoSlipBounceBack, NoSlipIncompressible, NoSlipCompressible, NoSlip3rdMomentsCompressible //! //! - slip: only use a slip boundary condition which sets the normals - void setGeometryBoundaryCondition(const std::variant<VelocityBC, NoSlipBC, SlipBC> boundaryConditionType); + void setGeometryBoundaryCondition(std::variant<VelocityBC, NoSlipBC, SlipBC> boundaryConditionType); // void setOutflowBoundaryCondition(...); // TODO: // https://git.rz.tu-bs.de/m.schoenherr/VirtualFluids_dev/-/issues/16 - [[nodiscard]] virtual boundaryCondition getVelocityBoundaryConditionPost(bool isGeometryBC = false) const; - [[nodiscard]] boundaryCondition getNoSlipBoundaryConditionPost(bool isGeometryBC = false) const; - [[nodiscard]] boundaryCondition getSlipBoundaryConditionPost(bool isGeometryBC = false) const; - [[nodiscard]] boundaryCondition getGeometryBoundaryConditionPost() const; - [[nodiscard]] virtual std::variant<boundaryCondition, boundaryConditionDirectional> getPressureBoundaryConditionPre() const; - [[nodiscard]] boundaryConditionWithParameter getStressBoundaryConditionPost() const; - [[nodiscard]] precursorBoundaryConditionFunc getPrecursorBoundaryConditionPost() const; + [[nodiscard]] virtual BoundaryConditionKernel getVelocityBoundaryConditionPost(bool isGeometryBC = false) const; + [[nodiscard]] BoundaryConditionKernel getNoSlipBoundaryConditionPost(bool isGeometryBC = false) const; + [[nodiscard]] BoundaryConditionKernel getSlipBoundaryConditionPost(bool isGeometryBC = false) const; + [[nodiscard]] BoundaryConditionKernel getGeometryBoundaryConditionPost() const; + [[nodiscard]] virtual std::variant<BoundaryConditionKernel, DirectionalBoundaryConditionKernel> getPressureBoundaryConditionPre() const; + [[nodiscard]] BoundaryConditionWithParameterKernel getStressBoundaryConditionPost() const; + [[nodiscard]] PrecursorBoundaryConditionKernel getPrecursorBoundaryConditionPost() const; [[nodiscard]] virtual bool hasDirectionalPressureBoundaryCondition() const; diff --git a/src/gpu/core/BoundaryConditions/BoundaryConditionKernelManager.cpp b/src/gpu/core/BoundaryConditions/BoundaryConditionKernelManager.cpp index 56b653429a67ab8ac9fdb637066ac5f27a245f1c..50b296d4c6b9397ad8207fe723bf5cd4ee22c05a 100644 --- a/src/gpu/core/BoundaryConditions/BoundaryConditionKernelManager.cpp +++ b/src/gpu/core/BoundaryConditions/BoundaryConditionKernelManager.cpp @@ -60,9 +60,10 @@ BoundaryConditionKernelManager::BoundaryConditionKernelManager(SPtr<Parameter> p this->precursorBoundaryConditionPost = bcFactory->getPrecursorBoundaryConditionPost(); if (bcFactory->hasDirectionalPressureBoundaryCondition()) - this->directionalPressureBoundaryConditionPre = std::get<directionalBoundaryCondition>(bcFactory->getPressureBoundaryConditionPre()); + this->directionalPressureBoundaryConditionPre = + std::get<DirectionalBoundaryConditionKernel>(bcFactory->getPressureBoundaryConditionPre()); else - this->pressureBoundaryConditionPre = std::get<boundaryCondition>(bcFactory->getPressureBoundaryConditionPre()); + this->pressureBoundaryConditionPre = std::get<BoundaryConditionKernel>(bcFactory->getPressureBoundaryConditionPre()); checkBoundaryCondition(this->velocityBoundaryConditionPost, this->para->getParD(0)->velocityBC, "velocityBoundaryConditionPost"); diff --git a/src/gpu/core/BoundaryConditions/BoundaryConditionKernelManager.h b/src/gpu/core/BoundaryConditions/BoundaryConditionKernelManager.h index 4572939a8f92317c21c0f6515851b5f4c79dd89e..756715b084b561d265ad1a4a589a52afcaf300f5 100644 --- a/src/gpu/core/BoundaryConditions/BoundaryConditionKernelManager.h +++ b/src/gpu/core/BoundaryConditions/BoundaryConditionKernelManager.h @@ -48,10 +48,10 @@ class BoundaryConditionFactory; class Parameter; struct LBMSimulationParameter; -using boundaryCondition = std::function<void(LBMSimulationParameter*, QforBoundaryConditions*)>; -using directionalBoundaryCondition = std::function<void(LBMSimulationParameter*, QforDirectionalBoundaryCondition*)>; -using boundaryConditionWithParameter = std::function<void(Parameter*, QforBoundaryConditions*, const int level)>; -using precursorBoundaryCondition = +using BoundaryConditionKernel = std::function<void(LBMSimulationParameter*, QforBoundaryConditions*)>; +using DirectionalBoundaryConditionKernel = std::function<void(LBMSimulationParameter*, QforDirectionalBoundaryCondition*)>; +using BoundaryConditionWithParameterKernel = std::function<void(Parameter*, QforBoundaryConditions*, const int level)>; +using PrecursorBoundaryConditionKernel = std::function<void(LBMSimulationParameter*, QforPrecursorBoundaryConditions*, real tRatio, real velocityRatio)>; //! \class BCKernelManager @@ -61,7 +61,7 @@ class BoundaryConditionKernelManager { public: //! Class constructor - //! \param parameter shared pointer to instance of class Parameter + //! \param bcFactory access to boundary condition factory without transfer of ownership //! \throws std::runtime_error when the user forgets to specify a boundary condition BoundaryConditionKernelManager(SPtr<Parameter> parameter, const BoundaryConditionFactory* bcFactory); @@ -75,7 +75,7 @@ public: void runGeoBCKernelPost(int level) const; //! \brief calls the device function of the geometry boundary condition (pre-collision) - void runGeoBCKernelPre(int level, unsigned int t, CudaMemoryManager *cudaMemoryManager) const; + void runGeoBCKernelPre(int level, unsigned int t, CudaMemoryManager* cudaMemoryManager) const; //! \brief calls the device function of the slip boundary condition (post-collision) void runSlipBCKernelPost(int level) const; @@ -102,7 +102,7 @@ private: void checkBoundaryCondition(const bcFunction& boundaryCondition, const std::vector<QforDirectionalBoundaryCondition>& bcVector, const std::string& bcName) { - if (!boundaryCondition && bcVector.size() > 0) + if (!boundaryCondition && !bcVector.empty()) throw std::runtime_error("The boundary condition " + bcName + " was not set!"); } @@ -123,14 +123,14 @@ private: SPtr<Parameter> para; - boundaryCondition velocityBoundaryConditionPost = nullptr; - boundaryCondition noSlipBoundaryConditionPost = nullptr; - boundaryCondition slipBoundaryConditionPost = nullptr; - boundaryCondition geometryBoundaryConditionPost = nullptr; - boundaryConditionWithParameter stressBoundaryConditionPost = nullptr; - precursorBoundaryCondition precursorBoundaryConditionPost = nullptr; - boundaryCondition pressureBoundaryConditionPre = nullptr; - directionalBoundaryCondition directionalPressureBoundaryConditionPre = nullptr; + BoundaryConditionKernel velocityBoundaryConditionPost = nullptr; + BoundaryConditionKernel noSlipBoundaryConditionPost = nullptr; + BoundaryConditionKernel slipBoundaryConditionPost = nullptr; + BoundaryConditionKernel geometryBoundaryConditionPost = nullptr; + BoundaryConditionWithParameterKernel stressBoundaryConditionPost = nullptr; + PrecursorBoundaryConditionKernel precursorBoundaryConditionPost = nullptr; + BoundaryConditionKernel pressureBoundaryConditionPre = nullptr; + DirectionalBoundaryConditionKernel directionalPressureBoundaryConditionPre = nullptr; }; #endif diff --git a/tests/unit-tests/gpu/core/BoundaryConditions/BCKernelManagerTest.cpp b/tests/unit-tests/gpu/core/BoundaryConditions/BCKernelManagerTest.cpp index 1377027eb0be8dc719f44e7cb096c7031e43bd98..d4b7447a56a92a2d440c042c6451cd896bf3dd8f 100644 --- a/tests/unit-tests/gpu/core/BoundaryConditions/BCKernelManagerTest.cpp +++ b/tests/unit-tests/gpu/core/BoundaryConditions/BCKernelManagerTest.cpp @@ -156,27 +156,26 @@ public: mutable uint numberOfCalls = 0; mutable uint numberOfCallsToDirectionalBC = 0; - std::variant<boundaryCondition, boundaryConditionDirectional> pressureBoundaryConditionFunction; - boundaryCondition pressBCWithoutDirection = [this](LBMSimulationParameter*, QforBoundaryConditions*) { + std::variant<BoundaryConditionKernel, DirectionalBoundaryConditionKernel> pressureBoundaryConditionFunction; + BoundaryConditionKernel pressBCWithoutDirection = [this](LBMSimulationParameter*, QforBoundaryConditions*) { numberOfCalls++; }; - boundaryConditionDirectional pressBCDirectional = [this](LBMSimulationParameter*, QforDirectionalBoundaryCondition*) { - this->numberOfCallsToDirectionalBC++; - }; + DirectionalBoundaryConditionKernel pressBCDirectional = + [this](LBMSimulationParameter*, QforDirectionalBoundaryCondition*) { this->numberOfCallsToDirectionalBC++; }; - [[nodiscard]] boundaryCondition getVelocityBoundaryConditionPost(bool /*isGeometryBC*/) const override + [[nodiscard]] BoundaryConditionKernel getVelocityBoundaryConditionPost(bool /*isGeometryBC*/) const override { return [this](LBMSimulationParameter*, QforBoundaryConditions*) { numberOfCalls++; }; } - std::variant<boundaryCondition, boundaryConditionDirectional> getPressureBoundaryConditionPre() const override + std::variant<BoundaryConditionKernel, DirectionalBoundaryConditionKernel> getPressureBoundaryConditionPre() const override { return pressureBoundaryConditionFunction; } [[nodiscard]] bool hasDirectionalPressureBoundaryCondition() const override { - return std::holds_alternative<boundaryConditionDirectional>(pressureBoundaryConditionFunction); + return std::holds_alternative<DirectionalBoundaryConditionKernel>(pressureBoundaryConditionFunction); } }; @@ -209,11 +208,11 @@ TEST_F(BoundaryConditionKernelManagerTest_runBCs, runVelocityBCKernelPost_noBoun TEST_F(BoundaryConditionKernelManagerTest_runBCs, runPressureBCKernelPre_hasDirectionalBC_callsKernel) { - bcFactory.pressureBoundaryConditionFunction=bcFactory.pressBCDirectional; + bcFactory.pressureBoundaryConditionFunction = bcFactory.pressBCDirectional; sut = std::make_unique<BoundaryConditionKernelManager>( para, &bcFactory); // reinitialize sut, as the directional BC needs to be set before calling the constructor of // BoundaryConditionKernelManager - para->getParD(0)->pressureBCDirectional = {QforDirectionalBoundaryCondition()}; + para->getParD(0)->pressureBCDirectional = { QforDirectionalBoundaryCondition() }; sut->runPressureBCKernelPre(0); EXPECT_THAT(bcFactory.numberOfCallsToDirectionalBC, testing::Eq(1)); } diff --git a/tests/unit-tests/gpu/core/BoundaryConditions/BoundaryConditionFactoryTest.cpp b/tests/unit-tests/gpu/core/BoundaryConditions/BoundaryConditionFactoryTest.cpp index 559d2cd3b16b6e91ab4c2276e489d1120974fd62..1e21fcb653b0c5fdd95d7a6c7c823ea9f8cfd5fa 100644 --- a/tests/unit-tests/gpu/core/BoundaryConditions/BoundaryConditionFactoryTest.cpp +++ b/tests/unit-tests/gpu/core/BoundaryConditions/BoundaryConditionFactoryTest.cpp @@ -76,7 +76,7 @@ TEST(BoundaryConditionFactoryTest, defaultSlipBC) TEST(BoundaryConditionFactoryTest, defaultPressureBC) { auto bcFactory = BoundaryConditionFactory(); - auto bc = std::get<boundaryCondition>(bcFactory.getPressureBoundaryConditionPre()); + auto bc = std::get<BoundaryConditionKernel>(bcFactory.getPressureBoundaryConditionPre()); EXPECT_THAT(bc, testing::Eq(nullptr)); EXPECT_THROW(bc(nullptr, nullptr), std::bad_function_call); } @@ -179,9 +179,9 @@ TEST(BoundaryConditionFactoryTest, slipBC) bcFunctionDirectional getDirectionalPressureBcTarget(BoundaryConditionFactory &bcFactory) { - auto bc = std::get<boundaryConditionDirectional>(bcFactory.getPressureBoundaryConditionPre()); - void (*bcTarget)(LBMSimulationParameter *, QforDirectionalBoundaryCondition *) = - (*bc.target<void (*)(LBMSimulationParameter *, QforDirectionalBoundaryCondition *)>()); + auto bc = std::get<DirectionalBoundaryConditionKernel>(bcFactory.getPressureBoundaryConditionPre()); + void (*bcTarget)(LBMSimulationParameter*, QforDirectionalBoundaryCondition*) = + (*bc.target<void (*)(LBMSimulationParameter*, QforDirectionalBoundaryCondition*)>()); return bcTarget; } @@ -206,7 +206,7 @@ TEST(BoundaryConditionFactoryTest, pressureBC) << "The returned boundary condition is not the expected function OutflowNonReflectingPressureCorrection."; } -bcFunction getGeometryBcTarget(BoundaryConditionFactory &bcFactory) +bcFunction getGeometryBcTarget(BoundaryConditionFactory& bcFactory) { auto bc = bcFactory.getGeometryBoundaryConditionPost(); void (*bcTarget)(LBMSimulationParameter *, QforBoundaryConditions *) =