From f1929d8bc6409e051094fb0588245b1ffad6e178 Mon Sep 17 00:00:00 2001 From: Anna Wellmann <a.wellmann@tu-bs.de> Date: Fri, 12 Aug 2022 08:48:00 +0000 Subject: [PATCH] Add tests for running the bc's in BCKernelManager --- .../Factories/BoundaryConditionFactory.h | 10 ++--- .../KernelManager/BCKernelManager.h | 2 +- .../KernelManager/BCKernelManagerTest.cpp | 38 +++++++++++++++++++ 3 files changed, 44 insertions(+), 6 deletions(-) diff --git a/src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactory.h b/src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactory.h index e69ad42bd..7f232f451 100644 --- a/src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactory.h +++ b/src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactory.h @@ -142,11 +142,11 @@ public: // void setOutflowBoundaryCondition(...); // TODO: // https://git.rz.tu-bs.de/m.schoenherr/VirtualFluids_dev/-/issues/16 - [[nodiscard]] boundaryCondition getVelocityBoundaryConditionPost(bool isGeometryBC = false) const; - [[nodiscard]] boundaryCondition getNoSlipBoundaryConditionPost(bool isGeometryBC = false) const; - [[nodiscard]] boundaryCondition getSlipBoundaryConditionPost(bool isGeometryBC = false) const; - [[nodiscard]] boundaryCondition getPressureBoundaryConditionPre() const; - [[nodiscard]] boundaryCondition getGeometryBoundaryConditionPost() const; + [[nodiscard]] virtual boundaryCondition getVelocityBoundaryConditionPost(bool isGeometryBC = false) const; + [[nodiscard]] virtual boundaryCondition getNoSlipBoundaryConditionPost(bool isGeometryBC = false) const; + [[nodiscard]] virtual boundaryCondition getSlipBoundaryConditionPost(bool isGeometryBC = false) const; + [[nodiscard]] virtual boundaryCondition getPressureBoundaryConditionPre() const; + [[nodiscard]] virtual boundaryCondition getGeometryBoundaryConditionPost() const; [[nodiscard]] boundaryConditionWithParameter getStressBoundaryConditionPost() const; diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManager.h b/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManager.h index 423a9cc90..ed31dd79a 100644 --- a/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManager.h +++ b/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManager.h @@ -105,10 +105,10 @@ private: SPtr<Parameter> para; + boundaryCondition pressureBoundaryConditionPre = nullptr; boundaryCondition velocityBoundaryConditionPost = nullptr; boundaryCondition noSlipBoundaryConditionPost = nullptr; boundaryCondition slipBoundaryConditionPost = nullptr; - boundaryCondition pressureBoundaryConditionPre = nullptr; boundaryCondition geometryBoundaryConditionPost = nullptr; boundaryConditionWithParameter stressBoundaryConditionPost = nullptr; }; diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManagerTest.cpp b/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManagerTest.cpp index 44e42b584..790eeb634 100644 --- a/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManagerTest.cpp +++ b/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManagerTest.cpp @@ -1,4 +1,5 @@ #include <gmock/gmock-function-mocker.h> +#include <gmock/gmock-matchers.h> #include <gmock/gmock.h> #include <stdexcept> @@ -66,3 +67,40 @@ TEST_F(BCKernelManagerTest_BCsNotSpecified, stressBoundaryConditionPost_NotSpeci para->getParD(0)->stressBC.numberOfBCnodes = 0; EXPECT_NO_THROW(BCKernelManager(para, &bcFactory)); } + +class BoundaryConditionFactoryMock : public BoundaryConditionFactory +{ +public: + mutable uint numberOfCalls = 0; + + [[nodiscard]] boundaryCondition getVelocityBoundaryConditionPost(bool) const override + { + return [this](LBMSimulationParameter *, QforBoundaryConditions *) { numberOfCalls++; }; + } +}; + +class BCKernelManagerTest_runBCs : public testing::Test +{ +protected: + BoundaryConditionFactoryMock bcFactory; + SPtr<Parameter> para = std::make_shared<Parameter>(); + UPtr<BCKernelManager> sut; + + void SetUp() override + { + para->initLBMSimulationParameter(); + sut = std::make_unique<BCKernelManager>(para, &bcFactory); + } +}; + +TEST_F(BCKernelManagerTest_runBCs, runVelocityBCKernelPost) +{ + para->getParD(0)->velocityBC.numberOfBCnodes = 1; + sut->runVelocityBCKernelPost(0); + EXPECT_THAT(bcFactory.numberOfCalls, testing::Eq(1)); + + bcFactory.numberOfCalls = 0; + para->getParD(0)->velocityBC.numberOfBCnodes = 0; + sut->runVelocityBCKernelPost(0); + EXPECT_THAT(bcFactory.numberOfCalls, testing::Eq(0)); +} \ No newline at end of file -- GitLab