diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp index e27f4a9152f6713abbba75fefc8aba23c2631891..284b9f2397ca542bf99b1095061d88f4646eefc7 100644 --- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp +++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp @@ -392,11 +392,12 @@ void Simulation::init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider, std // writers for version with communication hiding if(para->getNumprocs() > 1 && para->getUseStreams()){ - InterfaceDebugWriter::writeInterfaceFCC_Send(para.get()); - InterfaceDebugWriter::writeInterfaceCFC_Recv(para.get()); - InterfaceDebugWriter::writeSendNodesStream(para.get()); - InterfaceDebugWriter::writeRecvNodesStream(para.get()); + // InterfaceDebugWriter::writeInterfaceFCC_Send(para.get()); + // InterfaceDebugWriter::writeInterfaceCFC_Recv(para.get()); + // InterfaceDebugWriter::writeSendNodesStream(para.get()); + // InterfaceDebugWriter::writeRecvNodesStream(para.get()); EdgeNodeDebugWriter::writeEdgeNodesXZ_Send(para); + EdgeNodeDebugWriter::writeEdgeNodesXZ_Recv(para); } } diff --git a/src/gpu/VirtualFluids_GPU/Output/EdgeNodeDebugWriter.hpp b/src/gpu/VirtualFluids_GPU/Output/EdgeNodeDebugWriter.hpp index bba1b2331a0eabe57781ca5794a61f0ff5e11401..4b2d2f275bd127f0065f135acb94b738260c4668 100644 --- a/src/gpu/VirtualFluids_GPU/Output/EdgeNodeDebugWriter.hpp +++ b/src/gpu/VirtualFluids_GPU/Output/EdgeNodeDebugWriter.hpp @@ -60,6 +60,42 @@ void writeEdgeNodesXZ_Send(SPtr<Parameter> para) WbWriterVtkXmlBinary::getInstance()->writeNodesWithNodeData(filenameVec, nodesVec, datanames, nodedata); } } + +void writeEdgeNodesXZ_Recv(SPtr<Parameter> para) +{ + std::vector<UbTupleFloat3> nodesVec; + std::vector<std::string> datanames = { "SparseIndex", "ProcessNeighbor", "IndexInRecvVector", "AfterFtoC" }; + std::vector<std::vector<double>> nodedata; + + int numberOfNodes = 0; + for (int level = 0; level < para->getMaxLevel(); level++){ + numberOfNodes += (int) para->getParH(level)->edgeNodesXtoZ.size(); + } + nodesVec.resize(numberOfNodes); + nodedata.resize(datanames.size(), std::vector<double>(numberOfNodes)); + + int nodeCount = 0; + for (int level = 0; level < para->getMaxLevel(); level++) { + for (int u = 0; u < numberOfNodes; u++) { + int indexOfProcessNeighborRecv = para->getParH(level)->edgeNodesXtoZ[u].indexOfProcessNeighborRecv; + int indexInRecvBuffer = para->getParH(level)->edgeNodesXtoZ[u].indexInRecvBuffer; + int sparseIndex = para->getParH(level)->recvProcessNeighborX[indexOfProcessNeighborRecv].index[indexInRecvBuffer]; + nodedata[0][nodeCount] = sparseIndex; + nodedata[1][nodeCount] = indexOfProcessNeighborRecv; + nodedata[2][nodeCount] = indexInRecvBuffer; + nodedata[3][nodeCount] = indexInRecvBuffer < para->getParH(level)->recvProcessNeighborX[indexOfProcessNeighborRecv].numberOfNodes; + + addCoordinatesToNodeVector(para->getParH(level), nodesVec, nodeCount, sparseIndex); + + nodeCount++; + } + std::string filenameVec = para->getFName() + "_writeEdgeNodesXZ_Recv_PID_" + + std::to_string(vf::gpu::Communicator::getInstanz()->getPID()) + "_" + + StringUtil::toString<int>(level); + + WbWriterVtkXmlBinary::getInstance()->writeNodesWithNodeData(filenameVec, nodesVec, datanames, nodedata); + } +} } // namespace EdgeNodeDebugWriter #endif