diff --git a/apps/gpu/LBM/MusselOyster/MusselOyster.cpp b/apps/gpu/LBM/MusselOyster/MusselOyster.cpp index 2752f367343b52a0247525bc2ffd7c933537013d..a4081b9e41c635f7b38afe4338dbcddb21119f92 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 f4c8de81f78b301bb010b76c7e6e473a292ba550..d1b50d065cb503c31cc29d60b9a7236d94612a41 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 0160b01c137f2ba3cd0269c5552c62154c1f9de7..c9653f8d2ba963eb0ca606257ec0600a71c1b998 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 e9a986daf3b489827f11d8d2526dc99e08057b97..14ca01b0a7061a9068e4a225c13a7907aa5db227 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 d9e2575945f48f8890c31952b3d89cd111ada481..be36534b21d318ca6dfca8bc837c3b295f88d73e 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 c01c265feb7e785698d7d0ad62a0268c9941b800..c0b06e78052bcca7fb50a3595da4530666aa76e8 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 0a9e34166652613659b5b1d609bc40d07f6cee76..da57e5f8ff7ae5688c83be25a432e1e2455915e1 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 - -