From 638f73a106c78798f1f5e5103b1db13ddf89bf63 Mon Sep 17 00:00:00 2001 From: Anna Wellmann <a.wellmann@tu-braunschweig.de> Date: Thu, 28 Oct 2021 14:20:02 +0200 Subject: [PATCH] Write turbulence intensity to file --- apps/gpu/LBM/MusselOyster/MusselOyster.cpp | 2 ++ .../gpu/LBM/MusselOyster2x/MusselOyster2x.cpp | 5 +-- .../gpu/LBM/MusselOyster3z/MusselOyster3z.cpp | 2 ++ .../Calculation/CalcTurbulenceIntensity.cpp | 31 +++++++++++++++++++ .../Calculation/CalcTurbulenceIntensity.h | 2 ++ src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp | 2 +- .../VirtualFluids_GPU/Output/FileWriter.cpp | 6 ++-- 7 files changed, 43 insertions(+), 7 deletions(-) diff --git a/apps/gpu/LBM/MusselOyster/MusselOyster.cpp b/apps/gpu/LBM/MusselOyster/MusselOyster.cpp index 2752f3673..a4081b9e4 100644 --- a/apps/gpu/LBM/MusselOyster/MusselOyster.cpp +++ b/apps/gpu/LBM/MusselOyster/MusselOyster.cpp @@ -113,6 +113,8 @@ void multipleLevel(const std::string& configPath) bool useStreams = true; bool useLevels = true; para->useReducedCommunicationAfterFtoC = true; + para->setCalcTurbulenceIntensity(true); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/apps/gpu/LBM/MusselOyster2x/MusselOyster2x.cpp b/apps/gpu/LBM/MusselOyster2x/MusselOyster2x.cpp index f4c8de81f..d1b50d065 100644 --- a/apps/gpu/LBM/MusselOyster2x/MusselOyster2x.cpp +++ b/apps/gpu/LBM/MusselOyster2x/MusselOyster2x.cpp @@ -109,10 +109,11 @@ void multipleLevel(const std::string& configPath) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// bool useGridGenerator = true; - bool useMultiGPU = true; - bool useStreams = true; + bool useMultiGPU = false; + bool useStreams = false; bool useLevels = true; para->useReducedCommunicationAfterFtoC = true; + para->setCalcTurbulenceIntensity(true); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/apps/gpu/LBM/MusselOyster3z/MusselOyster3z.cpp b/apps/gpu/LBM/MusselOyster3z/MusselOyster3z.cpp index 0160b01c1..c9653f8d2 100644 --- a/apps/gpu/LBM/MusselOyster3z/MusselOyster3z.cpp +++ b/apps/gpu/LBM/MusselOyster3z/MusselOyster3z.cpp @@ -113,6 +113,8 @@ void multipleLevel(const std::string& configPath) bool useStreams = true; bool useLevels = true; para->useReducedCommunicationAfterFtoC = true; + para->setCalcTurbulenceIntensity(true); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/Calculation/CalcTurbulenceIntensity.cpp b/src/gpu/VirtualFluids_GPU/Calculation/CalcTurbulenceIntensity.cpp index e9a986daf..14ca01b0a 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/CalcTurbulenceIntensity.cpp +++ b/src/gpu/VirtualFluids_GPU/Calculation/CalcTurbulenceIntensity.cpp @@ -8,6 +8,7 @@ #include "Calculation/CalcTurbulenceIntensity.h" #include <cuda_runtime.h> #include <helper_cuda.h> +#include <basics/Core/StringUtilities/StringUtil.h> void allocTurbulenceIntensity(Parameter *para, CudaMemoryManager *cudaManager, uint size) { @@ -76,3 +77,33 @@ void resetTurbulenceIntensity(Parameter *para, CudaMemoryManager *cudaManager, u cudaManager->cudaCopyTurbulenceIntensityHD(lev, size); } +void writeTurbulenceIntensityToFile(Parameter *para, uint timestep, int *vectorOfSparseIndices) +{ + ////////////////////////////////////////////////////////////////////////// + // set level + int lev = para->getFine(); + ////////////////////////////////////////////////////////////////////////// + // set filename + std::string ffname = para->getFName() + StringUtil::toString<int>(para->getMyID()) + "_" + + StringUtil::toString<int>(timestep) + "_TurbulenIntensity.txt"; + const char *fname = ffname.c_str(); + ////////////////////////////////////////////////////////////////////////// + // set ofstream + std::ofstream ostr; + ////////////////////////////////////////////////////////////////////////// + // open file + ostr.open(fname); + ////////////////////////////////////////////////////////////////////////// + // add header + ostr << "index_sp" << "\t" << "ti" << std::endl; + ////////////////////////////////////////////////////////////////////////// + // fill file with data + for (size_t i = 0; i < para->getParH(lev)->turbulenceIntensity.size(); i++) { + ostr << vectorOfSparseIndices[i] << "\t" << para->getParH(lev)->turbulenceIntensity[i] + << std::endl; + } + ////////////////////////////////////////////////////////////////////////// + // close file + ostr.close(); + ////////////////////////////////////////////////////////////////////////// +} diff --git a/src/gpu/VirtualFluids_GPU/Calculation/CalcTurbulenceIntensity.h b/src/gpu/VirtualFluids_GPU/Calculation/CalcTurbulenceIntensity.h index d9e257594..be36534b2 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/CalcTurbulenceIntensity.h +++ b/src/gpu/VirtualFluids_GPU/Calculation/CalcTurbulenceIntensity.h @@ -11,4 +11,6 @@ extern "C" void calcVelocityAndFluctuations(Parameter *para, CudaMemoryManager * extern "C" void calcTurbulenceIntensity(Parameter *para, CudaMemoryManager *cudaManager, uint tdiff, uint size); extern "C" void resetTurbulenceIntensity(Parameter *para, CudaMemoryManager *cudaManager, uint size); +void writeTurbulenceIntensityToFile(Parameter *para, uint timestep, int *vectorOfSparseIndices); + #endif diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp index c01c265fe..c0b06e780 100644 --- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp +++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp @@ -966,7 +966,7 @@ void Simulation::run() { uint t_diff = t - t_turbulenceIntensity; calcTurbulenceIntensity(para.get(), cudaManager.get(), t_diff, para->getParH(para->getFine())->QGeom.kQ); - + writeTurbulenceIntensityToFile(para.get(), t, para->getParH(para->getFine())->QGeom.k); t_turbulenceIntensity = t; resetTurbulenceIntensity(para.get(), cudaManager.get(), para->getParH(para->getFine())->QGeom.kQ); } diff --git a/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp b/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp index 0a9e34166..da57e5f8f 100644 --- a/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp +++ b/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp @@ -182,7 +182,7 @@ void FileWriter::writeUnstrucuredGridLT(std::shared_ptr<Parameter> para, int lev nodedatanames.push_back("vx3"); nodedatanames.push_back("geo"); //nodedatanames.push_back("sendNodes"); - //nodedatanames.push_back("sparseIndex"); + nodedatanames.push_back("sparseIndex"); unsigned int number1, number2, number3, number4, number5, number6, number7, number8; uint dn1, dn2, dn3, dn4, dn5, dn6, dn7, dn8; bool neighborsAreFluid; @@ -228,11 +228,11 @@ void FileWriter::writeUnstrucuredGridLT(std::shared_ptr<Parameter> para, int lev nodedata[3][dn1] = (double)para->getParH(level)->vy_SP[pos] * (double)para->getVelocityRatio(); nodedata[4][dn1] = (double)para->getParH(level)->vz_SP[pos] * (double)para->getVelocityRatio(); nodedata[5][dn1] = (double)para->getParH(level)->geoSP[pos]; + nodedata[6][dn1] = (double) pos; //int sendNode = 0; // 0 - not a sendNode; 1 - sendNode; 2 - sendNode in communication after fine to coarse // testForSendNodeZ(para, level, pos, sendNode); // slow and should not be done multiple times --> use for debugging only! //nodedata[6][dn1] = (double) sendNode; - // nodedata[7][dn1] = (double) pos; ////////////////////////////////////////////////////////////////////////// number2 = para->getParH(level)->neighborX_SP[number1]; @@ -641,5 +641,3 @@ void FileWriter::writeUnstrucuredGridMedianLTConc(std::shared_ptr<Parameter> par - - -- GitLab