From 0b7e5de051aa43be082b7d6762512e1072d9a793 Mon Sep 17 00:00:00 2001 From: Anna Wellmann <a.wellmann@tu-bs.de> Date: Tue, 7 Jun 2022 12:59:35 +0000 Subject: [PATCH] Remove duplicate code in EdgeNodeFinder --- .../Parameter/EdgeNodeFinder.cpp | 53 +++++++------------ .../Parameter/EdgeNodeFinder.h | 9 ++-- .../Parameter/EdgeNodeFinderTest.cpp | 1 - 3 files changed, 24 insertions(+), 39 deletions(-) diff --git a/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinder.cpp b/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinder.cpp index 06a408fd6..31019a9cb 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 831f4efcc..b91321957 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 ac515474c..8c680d1c2 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" -- GitLab