diff --git a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cpp b/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cpp index 3c3971c3322e41859b07d3b4071d4e287fd27469..36cedd63677f13bb82bfd8d8f49b2656c324ce9b 100644 --- a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cpp +++ b/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cpp @@ -29,7 +29,8 @@ protected: SPtr<Parameter> para; int level = 0; int numNodes = 10; - + std::vector<real> recvFs; + void SetUp() override { para = initParameterClass(); @@ -43,21 +44,28 @@ protected: para->getParH(level)->edgeNodesXtoZ.emplace_back(0, 7, 0, 8); para->getParH(level)->edgeNodesXtoZ.emplace_back(0, 7, 0, 8); } + + SPtr<std::vector<ProcessNeighbor27>> setUpRecvProcessNeighbors(int numberOfNodesInRecv){ + SPtr<std::vector<ProcessNeighbor27>>recvProcessNeighborHost=std::make_shared<std::vector<ProcessNeighbor27>>(1); + recvFs.resize(numberOfNodesInRecv); + std::fill(recvFs.begin(), recvFs.end(), 0.5); // 0.5s should not be copied + for (LBMSimulationParameter::EdgeNodePositions edgeNode : para->getParH(level)->edgeNodesXtoZ) { + recvFs[edgeNode.indexInRecvBuffer] = 0.1; // 0.1s should be copied + } + setUpFsByCopyingF0(recvFs, numberOfNodesInRecv); + (*recvProcessNeighborHost)[0].f[0] = recvFs.data(); + (*recvProcessNeighborHost)[0].numberOfNodes = numberOfNodesInRecv; + return recvProcessNeighborHost; + } + }; TEST_F(ExchangeData27Test_CopyEdgeNodesXZTest, copyEdgeNodes_XZ_CommunicationAfterFtoC_recvVectorFullSize) { - int numNodesAfterFtoC = 5; // indexInSend < 5 --> in AfterFToC + int numNodesAfterFtoC = 5; // indexInSend < 5 --> mode is in AfterFToC // recvProcessNeighborHost - std::vector<ProcessNeighbor27> recvProcessNeighborHost(1); - std::vector<real> recvFs(numNodes, 0.5); // 0.5s should not be copied - for (LBMSimulationParameter::EdgeNodePositions edgeNode : para->getParH(level)->edgeNodesXtoZ) { - recvFs[edgeNode.indexInRecvBuffer] = 0.1; // 0.1s should be copied - } - setUpFsByCopyingF0(recvFs, numNodes); - recvProcessNeighborHost[0].f[0] = recvFs.data(); - recvProcessNeighborHost[0].numberOfNodes = numNodes; + SPtr<std::vector<ProcessNeighbor27>>recvProcessNeighborHost = setUpRecvProcessNeighbors(numNodes); // sendProcessNeighborHost std::vector<ProcessNeighbor27> sendProcessNeighborHost(1); @@ -72,7 +80,7 @@ TEST_F(ExchangeData27Test_CopyEdgeNodesXZTest, copyEdgeNodes_XZ_CommunicationAft setUpFsByCopyingF0(expectedFs, numNodesAfterFtoC); // act - copyEdgeNodes(para->getParH(level)->edgeNodesXtoZ, recvProcessNeighborHost, sendProcessNeighborHost); + copyEdgeNodes(para->getParH(level)->edgeNodesXtoZ, *recvProcessNeighborHost, sendProcessNeighborHost); // convert result to std::vector std::vector<real> result; @@ -83,17 +91,8 @@ TEST_F(ExchangeData27Test_CopyEdgeNodesXZTest, copyEdgeNodes_XZ_CommunicationAft TEST_F(ExchangeData27Test_CopyEdgeNodesXZTest, copyEdgeNodes_XZ_CommunicateAll) { - int numNodes = 10; - // recvProcessNeighborHost - std::vector<ProcessNeighbor27> recvProcessNeighborHost(1); - std::vector<real> recvFs(numNodes, 0.5); // 0.5s should not be copied - for (LBMSimulationParameter::EdgeNodePositions edgeNode : para->getParH(level)->edgeNodesXtoZ) { - recvFs[edgeNode.indexInRecvBuffer] = 0.1; // 0.1s should be copied - } - setUpFsByCopyingF0(recvFs, numNodes); - recvProcessNeighborHost[0].f[0] = recvFs.data(); - recvProcessNeighborHost[0].numberOfNodes = numNodes; + SPtr<std::vector<ProcessNeighbor27>>recvProcessNeighborHost = setUpRecvProcessNeighbors(numNodes); // sendProcessNeighborHost std::vector<ProcessNeighbor27> sendProcessNeighborHost(1); @@ -110,7 +109,7 @@ TEST_F(ExchangeData27Test_CopyEdgeNodesXZTest, copyEdgeNodes_XZ_CommunicateAll) setUpFsByCopyingF0(expectedFs, numNodes); // act - copyEdgeNodes(para->getParH(level)->edgeNodesXtoZ, recvProcessNeighborHost, sendProcessNeighborHost); + copyEdgeNodes(para->getParH(level)->edgeNodesXtoZ, *recvProcessNeighborHost, sendProcessNeighborHost); // convert result to std::vector std::vector<real> result;