diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp index 43489caa3132f30c76ed64d0dce089f146147ed5..d8166c0374ec9b170b13120000ba757072e0bd16 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp @@ -10,6 +10,7 @@ #include "Parameter/CudaStreamManager.h" #include "IndexRearrangementForStreams.h" #include "InterpolationCellGrouper.h" +#include "GridGenerator/grid/Grid.h" #include <iostream> #include <algorithm> diff --git a/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp b/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp index 97f712aeb97bc901b271eeddaafda499457fca3e..5bf066a7350b59ebda8a822d42fb936169fb5a53 100644 --- a/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp +++ b/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp @@ -236,11 +236,9 @@ std::vector<std::string> FileWriter::writeUnstructuredGridLT(std::shared_ptr<Par nodeData[i].resize(sizeOfNodes); ////////////////////////////////////////////////////////////////////////// - for (unsigned int pos = startPosition; pos < endPosition; pos++) - { - const LBMSimulationParameter* parH = para->getParHConst(level).get(); - if (parH->typeOfGridNode[pos] == GEO_FLUID) - { + for (unsigned int pos = startPosition; pos < endPosition; pos++) { + const LBMSimulationParameter* parH = para->getParHConst(level).get(); + if (parH->typeOfGridNode[pos] == GEO_FLUID) { ////////////////////////////////////////////////////////////////////////// double x1 = parH->coordinateX[pos]; double x2 = parH->coordinateY[pos]; @@ -284,7 +282,7 @@ std::vector<std::string> FileWriter::writeUnstructuredGridLT(std::shared_ptr<Par WriterUtilities::getIndicesOfAllNodesInOct(indicesOfOct, pos, para->getParHConst(level).get()); - if (WriterUtilities::isPeriodicCell(para.get(), level, indicesOfOct[0], indicesOfOct[6])) { + if (WriterUtilities::isPeriodicCell(parH, indicesOfOct[0], indicesOfOct[6])) { continue; } @@ -392,7 +390,7 @@ std::vector<std::string> FileWriter::writeUnstructuredGridMedianLT(std::shared_p dn7 = number7 - startPosition; dn8 = number8 - startPosition; ////////////////////////////////////////////////////////////////////////// - if (WriterUtilities::isPeriodicCell(para.get(), level, number1, number7)) + if (WriterUtilities::isPeriodicCell(para->getParHConst(level).get(), number1, number7)) continue; ////////////////////////////////////////////////////////////////////////// if (neighborsFluid == true) cells.push_back(makeUbTuple(dn1, dn2, dn3, dn4, dn5, dn6, dn7, dn8)); diff --git a/src/gpu/VirtualFluids_GPU/Output/WriterUtilities.cpp b/src/gpu/VirtualFluids_GPU/Output/WriterUtilities.cpp index d6775589866843d45c306fbe00ccf20561b45967..033f37c17b68a17099804ca2cef104e376d695bf 100644 --- a/src/gpu/VirtualFluids_GPU/Output/WriterUtilities.cpp +++ b/src/gpu/VirtualFluids_GPU/Output/WriterUtilities.cpp @@ -13,14 +13,14 @@ uint WriterUtilities::calculateNumberOfParts(const Parameter* parameter, uint le return (uint)parameter->getParHConst(level)->numberOfNodes / parameter->getLimitOfNodesForVTK() + 1; } -bool WriterUtilities::isPeriodicCell(const Parameter* para, int level, unsigned int baseNodeOfCell, +bool WriterUtilities::isPeriodicCell(const LBMSimulationParameter* parH, unsigned int baseNodeOfCell, unsigned int otherNodeInCell) { real distance = sqrt( - pow(para->getParHConst(level)->coordinateX[otherNodeInCell] - para->getParHConst(level)->coordinateX[baseNodeOfCell], 2.) + - pow(para->getParHConst(level)->coordinateY[otherNodeInCell] - para->getParHConst(level)->coordinateY[baseNodeOfCell], 2.) + - pow(para->getParHConst(level)->coordinateZ[otherNodeInCell] - para->getParHConst(level)->coordinateZ[baseNodeOfCell], 2.)); - return distance > 1.01 * sqrt(3 * pow(para->getParHConst(level)->gridSpacing, 2.)); + pow(parH->coordinateX[otherNodeInCell] - parH->coordinateX[baseNodeOfCell], 2.) + + pow(parH->coordinateY[otherNodeInCell] - parH->coordinateY[baseNodeOfCell], 2.) + + pow(parH->coordinateZ[otherNodeInCell] - parH->coordinateZ[baseNodeOfCell], 2.)); + return distance > 1.01 * sqrt(3 * pow(parH->gridSpacing, 2.)); } uint WriterUtilities::calculateNumberOfNodesInPart(const Parameter* para, uint level, uint part) diff --git a/src/gpu/VirtualFluids_GPU/Output/WriterUtilities.h b/src/gpu/VirtualFluids_GPU/Output/WriterUtilities.h index 35705e4c9414c7c0f4fb43e383364de1329b8d0f..eaa26dd549ef9190cf7e58197b2425732610078b 100644 --- a/src/gpu/VirtualFluids_GPU/Output/WriterUtilities.h +++ b/src/gpu/VirtualFluids_GPU/Output/WriterUtilities.h @@ -6,14 +6,15 @@ #include <basics/DataTypes.h> class Parameter; -class LBMSimulationParameter; +struct LBMSimulationParameter; class WriterUtilities { public: static uint calculateNumberOfParts(const Parameter* para, uint level); static uint calculateNumberOfNodesInPart(const Parameter* para, uint level, uint part); - static bool isPeriodicCell(const Parameter* para, int level, unsigned int baseNodeOfCell, unsigned int otherNodeInCell); + static bool isPeriodicCell(const LBMSimulationParameter* parH, unsigned int baseNodeOfCell, + unsigned int otherNodeInCell); static void getIndicesOfAllNodesInOct(std::array<uint, 8>& nodeIndices, uint baseNodeOfOct, const LBMSimulationParameter* parH); static void calculateRelativeNodeIndexInPart(std::array<uint, 8>& relativePositionInPart, diff --git a/src/gpu/VirtualFluids_GPU/Output/WriterUtilitiesTest.cpp b/src/gpu/VirtualFluids_GPU/Output/WriterUtilitiesTest.cpp index 7702c5f33fdb315e2ee332629cb775b800297302..bf39c44decb34699d643feeab46f919522fd48f6 100644 --- a/src/gpu/VirtualFluids_GPU/Output/WriterUtilitiesTest.cpp +++ b/src/gpu/VirtualFluids_GPU/Output/WriterUtilitiesTest.cpp @@ -40,8 +40,7 @@ TEST(WriterUtilitiesTest, calculateNumberOfNodesInPart) class WriterUtilitiesPeriodicCellTest : public testing::Test { protected: - SPtr<Parameter> parameter; - SPtr<LBMSimulationParameter> parH; + std::unique_ptr<LBMSimulationParameter> parH = std::make_unique<LBMSimulationParameter>(); const uint level = 0; const uint baseNodeIndex = 0; const uint otherNodeIndex = 1; @@ -51,8 +50,6 @@ protected: { // create a domain with only three layers of nodes // nodes are at the coordinates 0.0, 1.0 and 2.0 - parameter = testingVF::createParameterForLevel(level); - parH = parameter->getParH(level); parH->gridSpacing = 1.0; parH->coordinateX = new real[2]; @@ -77,52 +74,52 @@ protected: TEST_F(WriterUtilitiesPeriodicCellTest, cellIsNotPeriodic) { - EXPECT_FALSE(WriterUtilities::isPeriodicCell(parameter.get(), level, baseNodeIndex, otherNodeIndex)); - EXPECT_FALSE(WriterUtilities::isPeriodicCell(parameter.get(), level, otherNodeIndex, baseNodeIndex)); + EXPECT_FALSE(WriterUtilities::isPeriodicCell(parH.get(), baseNodeIndex, otherNodeIndex)); + EXPECT_FALSE(WriterUtilities::isPeriodicCell(parH.get(), otherNodeIndex, baseNodeIndex)); } TEST_F(WriterUtilitiesPeriodicCellTest, cellIsPeriodicInX) { parH->coordinateX[1] = 2.0; - EXPECT_TRUE(WriterUtilities::isPeriodicCell(parameter.get(), level, baseNodeIndex, otherNodeIndex)); - EXPECT_TRUE(WriterUtilities::isPeriodicCell(parameter.get(), level, otherNodeIndex, baseNodeIndex)); + EXPECT_TRUE(WriterUtilities::isPeriodicCell(parH.get(), baseNodeIndex, otherNodeIndex)); + EXPECT_TRUE(WriterUtilities::isPeriodicCell(parH.get(), otherNodeIndex, baseNodeIndex)); } TEST_F(WriterUtilitiesPeriodicCellTest, cellIsPeriodicInY) { parH->coordinateY[1] = 2.0; - EXPECT_TRUE(WriterUtilities::isPeriodicCell(parameter.get(), level, baseNodeIndex, otherNodeIndex)); - EXPECT_TRUE(WriterUtilities::isPeriodicCell(parameter.get(), level, otherNodeIndex, baseNodeIndex)); + EXPECT_TRUE(WriterUtilities::isPeriodicCell(parH.get(), baseNodeIndex, otherNodeIndex)); + EXPECT_TRUE(WriterUtilities::isPeriodicCell(parH.get(), otherNodeIndex, baseNodeIndex)); } TEST_F(WriterUtilitiesPeriodicCellTest, cellIsPeriodicInZ) { parH->coordinateZ[1] = 2.0; - EXPECT_TRUE(WriterUtilities::isPeriodicCell(parameter.get(), level, baseNodeIndex, otherNodeIndex)); - EXPECT_TRUE(WriterUtilities::isPeriodicCell(parameter.get(), level, otherNodeIndex, baseNodeIndex)); + EXPECT_TRUE(WriterUtilities::isPeriodicCell(parH.get(), baseNodeIndex, otherNodeIndex)); + EXPECT_TRUE(WriterUtilities::isPeriodicCell(parH.get(), otherNodeIndex, baseNodeIndex)); } TEST_F(WriterUtilitiesPeriodicCellTest, cellIsPeriodicInXY) { parH->coordinateX[1] = 2.0; parH->coordinateY[1] = 2.0; - EXPECT_TRUE(WriterUtilities::isPeriodicCell(parameter.get(), level, baseNodeIndex, otherNodeIndex)); - EXPECT_TRUE(WriterUtilities::isPeriodicCell(parameter.get(), level, otherNodeIndex, baseNodeIndex)); + EXPECT_TRUE(WriterUtilities::isPeriodicCell(parH.get(), baseNodeIndex, otherNodeIndex)); + EXPECT_TRUE(WriterUtilities::isPeriodicCell(parH.get(), otherNodeIndex, baseNodeIndex)); } TEST_F(WriterUtilitiesPeriodicCellTest, cellIsPeriodicInXZ) { parH->coordinateX[1] = 2.0; parH->coordinateZ[1] = 2.0; - EXPECT_TRUE(WriterUtilities::isPeriodicCell(parameter.get(), level, baseNodeIndex, otherNodeIndex)); - EXPECT_TRUE(WriterUtilities::isPeriodicCell(parameter.get(), level, otherNodeIndex, baseNodeIndex)); + EXPECT_TRUE(WriterUtilities::isPeriodicCell(parH.get(), baseNodeIndex, otherNodeIndex)); + EXPECT_TRUE(WriterUtilities::isPeriodicCell(parH.get(), otherNodeIndex, baseNodeIndex)); } TEST_F(WriterUtilitiesPeriodicCellTest, cellIsPeriodicInYZ) { parH->coordinateY[1] = 2.0; parH->coordinateZ[1] = 2.0; - EXPECT_TRUE(WriterUtilities::isPeriodicCell(parameter.get(), level, baseNodeIndex, otherNodeIndex)); - EXPECT_TRUE(WriterUtilities::isPeriodicCell(parameter.get(), level, otherNodeIndex, baseNodeIndex)); + EXPECT_TRUE(WriterUtilities::isPeriodicCell(parH.get(), baseNodeIndex, otherNodeIndex)); + EXPECT_TRUE(WriterUtilities::isPeriodicCell(parH.get(), otherNodeIndex, baseNodeIndex)); } TEST_F(WriterUtilitiesPeriodicCellTest, cellIsPeriodicInXYZ) @@ -130,13 +127,12 @@ TEST_F(WriterUtilitiesPeriodicCellTest, cellIsPeriodicInXYZ) parH->coordinateX[1] = 2.0; parH->coordinateY[1] = 2.0; parH->coordinateZ[1] = 2.0; - EXPECT_TRUE(WriterUtilities::isPeriodicCell(parameter.get(), level, baseNodeIndex, otherNodeIndex)); - EXPECT_TRUE(WriterUtilities::isPeriodicCell(parameter.get(), level, otherNodeIndex, baseNodeIndex)); + EXPECT_TRUE(WriterUtilities::isPeriodicCell(parH.get(), baseNodeIndex, otherNodeIndex)); + EXPECT_TRUE(WriterUtilities::isPeriodicCell(parH.get(), otherNodeIndex, baseNodeIndex)); } class WriterUtilitiesNeighborOctTest : public testing::Test { - static void setUpNeighborsNeighborsForOct(LBMSimulationParameter* parH, const std::array<uint, 8>& nodeIndices) { // node indices: MMM, PMM, PPM, MPM,