diff --git a/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinder.cpp b/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinder.cpp index 06a408fd659f772ee5a6482dc263d9b8e39e2da7..31019a9cb2b7e457e3c395534f1c219c302b2e3a 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinder.cpp +++ b/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinder.cpp @@ -1,5 +1,4 @@ #include "EdgeNodeFinder.h" -#include "Parameter.h" namespace vf::gpu { @@ -15,52 +14,38 @@ void findEdgeNodesCommMultiGPU(SPtr<Parameter> parameter) namespace { + void findEdgeNodesXY(int level, SPtr<Parameter> parameter) { - int indexOfProcessNeighborSend; - int indexInSendBuffer; - for (uint i = 0; i < (unsigned int)(parameter->getNumberOfProcessNeighborsX(level, "recv")); i++) { - for (int j = 0; j < parameter->getParH(level)->recvProcessNeighborX[i].numberOfNodes; j++) { - int nodeIndex = parameter->getParH(level)->recvProcessNeighborX[i].index[j]; - bool foundIndex = findIndexInSendNodes(nodeIndex, parameter->getParH(level)->sendProcessNeighborY, - indexOfProcessNeighborSend, indexInSendBuffer); - if (foundIndex) { - parameter->getParH(level)->edgeNodesXtoY.emplace_back(i, j, indexOfProcessNeighborSend, - indexInSendBuffer); - } - } - } + findEdgeNodes(parameter->getParH(level)->recvProcessNeighborX, parameter->getParH(level)->sendProcessNeighborY, + parameter->getParH(level)->edgeNodesXtoY); } void findEdgeNodesXZ(int level, SPtr<Parameter> parameter) { - int indexOfProcessNeighborSend; - int indexInSendBuffer; - for (uint i = 0; i < (unsigned int)(parameter->getNumberOfProcessNeighborsX(level, "recv")); i++) { - for (int j = 0; j < parameter->getParH(level)->recvProcessNeighborX[i].numberOfNodes; j++) { - int nodeIndex = parameter->getParH(level)->recvProcessNeighborX[i].index[j]; - bool foundIndex = findIndexInSendNodes(nodeIndex, parameter->getParH(level)->sendProcessNeighborZ, - indexOfProcessNeighborSend, indexInSendBuffer); - if (foundIndex) { - parameter->getParH(level)->edgeNodesXtoZ.emplace_back(i, j, indexOfProcessNeighborSend, - indexInSendBuffer); - } - } - } + findEdgeNodes(parameter->getParH(level)->recvProcessNeighborX, parameter->getParH(level)->sendProcessNeighborZ, + parameter->getParH(level)->edgeNodesXtoZ); } void findEdgeNodesYZ(int level, SPtr<Parameter> parameter) +{ + findEdgeNodes(parameter->getParH(level)->recvProcessNeighborY, parameter->getParH(level)->sendProcessNeighborZ, + parameter->getParH(level)->edgeNodesYtoZ); +} + +void findEdgeNodes(const std::vector<ProcessNeighbor27> &recvProcessNeighbor, + const std::vector<ProcessNeighbor27> &sendProcessNeighbor, + std::vector<LBMSimulationParameter::EdgeNodePositions> &edgeNodes) { int indexOfProcessNeighborSend; int indexInSendBuffer; - for (uint i = 0; i < (unsigned int)(parameter->getNumberOfProcessNeighborsY(level, "recv")); i++) { - for (int j = 0; j < parameter->getParH(level)->recvProcessNeighborY[i].numberOfNodes; j++) { - int nodeIndex = parameter->getParH(level)->recvProcessNeighborY[i].index[j]; - bool foundIndex = findIndexInSendNodes(nodeIndex, parameter->getParH(level)->sendProcessNeighborZ, - indexOfProcessNeighborSend, indexInSendBuffer); + for (uint i = 0; i < (unsigned int)(recvProcessNeighbor.size()); i++) { + for (int j = 0; j < recvProcessNeighbor[i].numberOfNodes; j++) { + int nodeIndex = recvProcessNeighbor[i].index[j]; + bool foundIndex = + findIndexInSendNodes(nodeIndex, sendProcessNeighbor, indexOfProcessNeighborSend, indexInSendBuffer); if (foundIndex) { - parameter->getParH(level)->edgeNodesYtoZ.emplace_back(i, j, indexOfProcessNeighborSend, - indexInSendBuffer); + edgeNodes.emplace_back(i, j, indexOfProcessNeighborSend, indexInSendBuffer); } } } diff --git a/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinder.h b/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinder.h index 831f4efcc70c6decdc21ac77269378c647403283..b91321957a87ad446398e5adef9c0c2da44431fb 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinder.h +++ b/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinder.h @@ -42,8 +42,7 @@ #include "Core/DataTypes.h" #include "basics/PointerDefinitions.h" #include "gpu/VirtualFluids_GPU/LBM/LB.h" - -class Parameter; +#include "Parameter.h" namespace vf::gpu { @@ -54,8 +53,10 @@ void findEdgeNodesCommMultiGPU(SPtr<Parameter> parameter); // anonymous namespace namespace { -bool findIndexInSendNodes(int nodeIndex, const std::vector<ProcessNeighbor27> &sendProcessNeighbor, - int &indexOfProcessNeighborSend, int &indexInSendBuffer); +void findEdgeNodes(const std::vector<ProcessNeighbor27> &recvProcessNeighbor, + const std::vector<ProcessNeighbor27> &sendProcessNeighbor, + std::vector<LBMSimulationParameter::EdgeNodePositions> &edgeNodes); +bool findIndexInSendNodes(int nodeIndex, const std::vector<ProcessNeighbor27>& sendProcessNeighbor, int &indexOfProcessNeighborSend, int &indexInSendBuffer); void findEdgeNodesXY(int level, SPtr<Parameter> parameter); void findEdgeNodesXZ(int level, SPtr<Parameter> parameter); void findEdgeNodesYZ(int level, SPtr<Parameter> parameter); diff --git a/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinderTest.cpp b/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinderTest.cpp index ac515474c5704cdf1d56b282415b14d50d080376..8c680d1c2cb9334cec101ab2469ad495360d5dd8 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinderTest.cpp +++ b/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinderTest.cpp @@ -2,7 +2,6 @@ #include <filesystem> -#include "Parameter.h" #include "basics/config/ConfigurationFile.h" #include "EdgeNodeFinder.h"