From b90a1e37a61bf3fffffe07cab85c6393e8555343 Mon Sep 17 00:00:00 2001 From: Anna Wellmann <a.wellmann@tu-bs.de> Date: Tue, 31 May 2022 09:02:08 +0000 Subject: [PATCH] temp --- .../IndexRearrangementForStreamsTest.cpp | 248 +++++++++--------- 1 file changed, 119 insertions(+), 129 deletions(-) diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp index 80c1917bb..b3ed57794 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp @@ -11,22 +11,11 @@ #include <gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h> #include <gpu/GridGenerator/grid/GridImp.h> - -auto RealEq = [](auto value) { -#ifdef VF_DOUBLE_ACCURACY - return testing::DoubleEq(value); -#else - return testing::FloatEq(value); -#endif -}; - - class GridBuilderDouble : public LevelGridBuilder { private: SPtr<Grid> grid; GridBuilderDouble()=default; - public: GridBuilderDouble(SPtr<Grid> grid) : LevelGridBuilder(Device(), ""), grid(grid){}; SPtr<Grid> getGrid(uint level) override{ return grid; }; @@ -93,47 +82,18 @@ struct CFBorderBulk { }; -static void initParameterClass(std::shared_ptr<Parameter> ¶); - -class IndexRearrangementForStreamsTest -{ -public: - static void setUpAndRun_splitCoarseToFineIntoBorderAndBulk(CFBorderBulk &cf, std::shared_ptr<Parameter> para) - { - SPtr<GridImpDouble> grid = - GridImpDouble::makeShared(nullptr, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, nullptr, Distribution(), 1); - grid->setFluidNodeIndicesBorder(cf.fluidNodeIndicesBorder); - std::shared_ptr<GridBuilderDouble> builder = std::make_shared<GridBuilderDouble>(grid); - - para->setMaxLevel(cf.level + 1); - para->parH[cf.level] = std::make_shared<LBMSimulationParameter>(); - para->parD[cf.level] = std::make_shared<LBMSimulationParameter>(); - para->getParH(cf.level)->intCF.ICellCFC = &(cf.iCellCFC.front()); - para->getParH(cf.level)->intCF.ICellCFF = &(cf.iCellCFF.front()); - para->getParH(cf.level)->neighborX_SP = cf.neighborX_SP; - para->getParH(cf.level)->neighborY_SP = cf.neighborY_SP; - para->getParH(cf.level)->neighborZ_SP = cf.neighborZ_SP; - para->getParH(cf.level)->intCF.kCF = cf.sizeOfICellCf; - para->getParH(cf.level)->offCF.xOffCF = &(cf.offsetCFx.front()); - para->getParH(cf.level)->offCF.yOffCF = &(cf.offsetCFy.front()); - para->getParH(cf.level)->offCF.zOffCF = &(cf.offsetCFz.front()); - - IndexRearrangementForStreams testSubject = IndexRearrangementForStreams(para, builder); - - testSubject.splitCoarseToFineIntoBorderAndBulk(cf.level); - }; -}; - -void initParameterClass(std::shared_ptr<Parameter> ¶) +static SPtr<Parameter> initParameterClass() { std::filesystem::path filePath = __FILE__; // assuming that the config file is stored parallel to this file. filePath.replace_filename("IndexRearrangementForStreamsTest.cfg"); vf::basics::ConfigurationFile config; config.load(filePath.string()); - para = std::make_shared<Parameter>(config, 1, 0); + return std::make_shared<Parameter>(config, 1, 0); } -bool vectorsAreEqual(std::vector<uint> vector1, std::vector<uint> vectorExpected) + +template <typename T> +bool vectorsAreEqual(std::vector<T> vector1, std::vector<T> vectorExpected) { return vector1 == vectorExpected; } @@ -157,101 +117,131 @@ bool vectorsAreEqual(real *vector1, std::vector<uint> vectorExpected) } - - - -TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, sizeIsConstant) +class IndexRearrangementForStreamsTest_IndicesCFBorderBulkTest : public testing::Test { + public: CFBorderBulk cf; SPtr<Parameter> para; - initParameterClass(para); - IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); - EXPECT_TRUE(para->getParH(cf.level)->intCFBorder.kCF + para->getParH(cf.level)->intCFBulk.kCF == cf.sizeOfICellCf); -} -TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderSizeCFC) -{ - CFBorderBulk cf; - SPtr<Parameter> para; - initParameterClass(para); - IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); - EXPECT_EQ(para->getParH(cf.level)->intCFBorder.kCF, (uint)cf.iCellCfcBorder_expected.size()); -} + private: + static std::unique_ptr<IndexRearrangementForStreams> createTestSubjectCFBorderBulk(CFBorderBulk &cf, std::shared_ptr<Parameter> para) + { + SPtr<GridImpDouble> grid = + GridImpDouble::makeShared(nullptr, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, nullptr, Distribution(), 1); + grid->setFluidNodeIndicesBorder(cf.fluidNodeIndicesBorder); + std::shared_ptr<GridBuilderDouble> builder = std::make_shared<GridBuilderDouble>(grid); -TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderVectorCFC) -{ - CFBorderBulk cf; - SPtr<Parameter> para; - initParameterClass(para); - IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFC, cf.iCellCfcBorder_expected)); -} + para->setMaxLevel(cf.level + 1); // setMaxLevel resizes parH and parD + para->parH[cf.level] = std::make_shared<LBMSimulationParameter>(); + para->parD[cf.level] = std::make_shared<LBMSimulationParameter>(); + para->getParH(cf.level)->intCF.ICellCFC = &(cf.iCellCFC.front()); + para->getParH(cf.level)->intCF.ICellCFF = &(cf.iCellCFF.front()); + para->getParH(cf.level)->neighborX_SP = cf.neighborX_SP; + para->getParH(cf.level)->neighborY_SP = cf.neighborY_SP; + para->getParH(cf.level)->neighborZ_SP = cf.neighborZ_SP; + para->getParH(cf.level)->intCF.kCF = cf.sizeOfICellCf; + para->getParH(cf.level)->offCF.xOffCF = &(cf.offsetCFx.front()); + para->getParH(cf.level)->offCF.yOffCF = &(cf.offsetCFy.front()); + para->getParH(cf.level)->offCF.zOffCF = &(cf.offsetCFz.front()); -TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkSizeCFC) -{ - CFBorderBulk cf; - SPtr<Parameter> para; - initParameterClass(para); - IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); - EXPECT_EQ(para->getParH(cf.level)->intCFBulk.kCF, (uint)cf.iCellCfcBulk_expected.size()); -} + return std::make_unique<IndexRearrangementForStreams>(para, builder); + }; -TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkVectorCFC) -{ - CFBorderBulk cf; - SPtr<Parameter> para; - initParameterClass(para); - IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBulk.ICellCFC, cf.iCellCfcBulk_expected)); -} + public: -TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderSizeCFF) -{ - CFBorderBulk cf; - SPtr<Parameter> para; - initParameterClass(para); - IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); - EXPECT_EQ(para->getParH(cf.level)->intCFBorder.kCF, (uint)cf.iCellCffBorder_expected.size()); -} + void SetUp() override { + para = initParameterClass(); + auto testSubject = createTestSubjectCFBorderBulk(cf, para); + testSubject->splitCoarseToFineIntoBorderAndBulk(cf.level); + } -TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderVectorCFF) -{ - CFBorderBulk cf; - SPtr<Parameter> para; - initParameterClass(para); - IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFF, cf.iCellCffBorder_expected)); -} + void TearDown() override { + + } + +}; -TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkSizeCFF) -{ - CFBorderBulk cf; - SPtr<Parameter> para; - initParameterClass(para); - IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); - EXPECT_EQ(para->getParH(cf.level)->intCFBulk.kCF, (uint)cf.iCellCffBulk_expected.size()); -} -TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkVectorCFF) +TEST_F(IndexRearrangementForStreamsTest_IndicesCFBorderBulkTest, splitCoarseToFineIntoBorderAndBulk) { - CFBorderBulk cf; - SPtr<Parameter> para; - initParameterClass(para); - IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBulk.ICellCFF, cf.iCellCffBulk_expected)); + EXPECT_THAT(para->getParH(cf.level)->intCFBorder.kCF + para->getParH(cf.level)->intCFBulk.kCF, testing::Eq(cf.sizeOfICellCf)) << "The number of interpolation cells from coarse to fine changed during reordering."; + EXPECT_THAT(para->getParH(cf.level)->intCFBorder.kCF, testing::Eq((uint) cf.iCellCfcBorder_expected.size())); } -TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, offsetsVectorsCFC) -{ - CFBorderBulk cf; - SPtr<Parameter> para; - initParameterClass(para); - IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); - - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.xOffCF, cf.offsetCFx_Border_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.xOffCF, cf.offsetCFx_Bulk_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.yOffCF, cf.offsetCFy_Border_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.yOffCF, cf.offsetCFy_Bulk_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.zOffCF, cf.offsetCFz_Border_expected)); - EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.zOffCF, cf.offsetCFz_Bulk_expected)); -} \ No newline at end of file +// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderVectorCFC) +// { +// CFBorderBulk cf; +// SPtr<Parameter> para; +// initParameterClass(para); +// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); +// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFC, cf.iCellCfcBorder_expected)); +// } + +// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkSizeCFC) +// { +// CFBorderBulk cf; +// SPtr<Parameter> para; +// initParameterClass(para); +// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); +// EXPECT_EQ(para->getParH(cf.level)->intCFBulk.kCF, (uint)cf.iCellCfcBulk_expected.size()); +// } + +// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkVectorCFC) +// { +// CFBorderBulk cf; +// SPtr<Parameter> para; +// initParameterClass(para); +// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); +// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBulk.ICellCFC, cf.iCellCfcBulk_expected)); +// } + +// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderSizeCFF) +// { +// CFBorderBulk cf; +// SPtr<Parameter> para; +// initParameterClass(para); +// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); +// EXPECT_EQ(para->getParH(cf.level)->intCFBorder.kCF, (uint)cf.iCellCffBorder_expected.size()); +// } + +// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderVectorCFF) +// { +// CFBorderBulk cf; +// SPtr<Parameter> para; +// initParameterClass(para); +// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); +// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFF, cf.iCellCffBorder_expected)); +// } + +// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkSizeCFF) +// { +// CFBorderBulk cf; +// SPtr<Parameter> para; +// initParameterClass(para); +// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); +// EXPECT_EQ(para->getParH(cf.level)->intCFBulk.kCF, (uint)cf.iCellCffBulk_expected.size()); +// } + +// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkVectorCFF) +// { +// CFBorderBulk cf; +// SPtr<Parameter> para; +// initParameterClass(para); +// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); +// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBulk.ICellCFF, cf.iCellCffBulk_expected)); +// } + +// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, offsetsVectorsCFC) +// { +// CFBorderBulk cf; +// SPtr<Parameter> para; +// initParameterClass(para); +// IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para); + +// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.xOffCF, cf.offsetCFx_Border_expected)); +// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.xOffCF, cf.offsetCFx_Bulk_expected)); +// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.yOffCF, cf.offsetCFy_Border_expected)); +// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.yOffCF, cf.offsetCFy_Bulk_expected)); +// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.zOffCF, cf.offsetCFz_Border_expected)); +// EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.zOffCF, cf.offsetCFz_Bulk_expected)); +// } \ No newline at end of file -- GitLab