From 65ec9b00d2df8fa86bd6fa16692ae0befcb2cb71 Mon Sep 17 00:00:00 2001 From: Soeren Peters <peters@irmb.tu-bs.de> Date: Wed, 2 May 2018 16:06:00 +0200 Subject: [PATCH] - bugfix --- 3rdParty/fftw/fftw-3.3.7/CMakeLists.txt | 4 +- .../DataStructureInitializer/GridProvider.h | 2 +- src/VirtualFluids_GPU/LBM/Simulation.cpp | 51 ++++++++++--------- src/VirtualFluids_GPU/LBM/Simulation.h | 2 +- targets/apps/HULC/main.cpp | 4 +- .../Tests/OrderOfAccuracy/OrderOfAccuracy.cpp | 2 +- .../TestCondition/TestConditionImp.cpp | 24 ++++++++- .../TestConditionFactory.h | 2 +- .../ShearWaveTestParameter.cpp | 2 +- .../TaylorGreenTestParameter.cpp | 2 +- targets/tests/TestingHULC/config.txt | 14 ++--- targets/tests/TestingHULC/main.cpp | 5 +- 12 files changed, 70 insertions(+), 44 deletions(-) diff --git a/3rdParty/fftw/fftw-3.3.7/CMakeLists.txt b/3rdParty/fftw/fftw-3.3.7/CMakeLists.txt index 9c96a0363..e2155c440 100644 --- a/3rdParty/fftw/fftw-3.3.7/CMakeLists.txt +++ b/3rdParty/fftw/fftw-3.3.7/CMakeLists.txt @@ -11,7 +11,7 @@ if (POLICY CMP0042) endif () option (BUILD_SHARED_LIBS "Build shared libraries" ON) -option (BUILD_TESTS "Build tests" ON) +option (BUILD_TESTS "Build tests" OFF) option (ENABLE_OPENMP "Use OpenMP for multithreading" OFF) option (ENABLE_THREADS "Use pthread for multithreading" OFF) @@ -335,6 +335,8 @@ if (OPENMP_FOUND) target_compile_options (${fftw3_lib}_omp PRIVATE ${OpenMP_C_FLAGS}) endif () +groupTarget(${fftw3_lib} ${thirdPartyFolder}) + foreach(subtarget ${subtargets}) set_target_properties (${subtarget} PROPERTIES SOVERSION 3.5.7 VERSION 3) install (TARGETS ${subtarget} diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h b/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h index 434b5c3e8..579a43442 100644 --- a/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h +++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h @@ -34,7 +34,7 @@ public: protected: void setNumberOfNodes(const int numberOfNodes, const int level) const; - void setInitalNodeValues(const int numberOfNodes, const int level) const; + virtual void setInitalNodeValues(const int numberOfNodes, const int level) const; void setPressSizePerLevel(int level, int sizePerLevel) const; void setVelocitySizePerLevel(int level, int sizePerLevel) const; diff --git a/src/VirtualFluids_GPU/LBM/Simulation.cpp b/src/VirtualFluids_GPU/LBM/Simulation.cpp index ad55ee63b..279043afc 100644 --- a/src/VirtualFluids_GPU/LBM/Simulation.cpp +++ b/src/VirtualFluids_GPU/LBM/Simulation.cpp @@ -70,7 +70,7 @@ void Simulation::init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider, std this->dataWriter = dataWriter; this->gridProvider = gridProvider; gridProvider->initalGridInformations(); - comm = SPtr<Communicator>(Communicator::getInstanz()); + comm = Communicator::getInstanz(); this->para = para; para->setMyID(comm->getPID()); @@ -390,7 +390,7 @@ void Simulation::run() getLastCudaError("before starting a kernel we get an execution failed"); if (para->getMaxLevel()>=1) { - updateGrid27(para.get(), comm.get(), pm, 1, para->getMaxLevel(), t); + updateGrid27(para.get(), comm, pm, 1, para->getMaxLevel(), t); } //////////////////////////////////////////////////////////////////////////////// // Collision and Propagation @@ -1081,21 +1081,21 @@ void Simulation::run() ////////////////////////////////////////////////////////////////////////// //3D domain decomposition //output << "start exchange Post X (level 0) \n"; - exchangePostCollDataXGPU27(para.get(), comm.get(), 0); + exchangePostCollDataXGPU27(para.get(), comm, 0); //output << "end exchange Post X (level 0) \n"; //output << "start exchange Post Y (level 0) \n"; - exchangePostCollDataYGPU27(para.get(), comm.get(), 0); + exchangePostCollDataYGPU27(para.get(), comm, 0); //output << "end exchange Post Y (level 0) \n"; //output << "start exchange Post Z (level 0) \n"; - exchangePostCollDataZGPU27(para.get(), comm.get(), 0); + exchangePostCollDataZGPU27(para.get(), comm, 0); //output << "end exchange Post Z (level 0) \n"; //////////////////////////////////////////////////////////////////////// //3D domain decomposition convection diffusion if (para->getDiffOn()==true) { - exchangePostCollDataADXGPU27(para.get(), comm.get(), 0); - exchangePostCollDataADYGPU27(para.get(), comm.get(), 0); - exchangePostCollDataADZGPU27(para.get(), comm.get(), 0); + exchangePostCollDataADXGPU27(para.get(), comm, 0); + exchangePostCollDataADYGPU27(para.get(), comm, 0); + exchangePostCollDataADZGPU27(para.get(), comm, 0); } } //////////////////////////////////////////////////////////////////////////////// @@ -1474,6 +1474,7 @@ void Simulation::run() //////////////////////////////////////////////////////////////////////////////// if (para->getParD(0)->evenOrOdd==true) para->getParD(0)->evenOrOdd=false; else para->getParD(0)->evenOrOdd=true; + //////////////////////////////////////////////////////////////////////////////// @@ -1804,24 +1805,24 @@ void Simulation::run() if (para->getNumprocs() > 1) { ////1D domain decomposition - //exchangePreCollDataGPU27(para, comm.get(), 0); + //exchangePreCollDataGPU27(para, comm, 0); //3D domain decomposition //output << "start exchange Pre X (level 0) \n"; - exchangePreCollDataXGPU27(para.get(), comm.get(), 0); + exchangePreCollDataXGPU27(para.get(), comm, 0); //output << "end exchange Pre X (level 0) \n"; //output << "start exchange Pre Y (level 0) \n"; - exchangePreCollDataYGPU27(para.get(), comm.get(), 0); + exchangePreCollDataYGPU27(para.get(), comm, 0); //output << "end exchange Pre Y (level 0) \n"; //output << "start exchange Pre Z (level 0) \n"; - exchangePreCollDataZGPU27(para.get(), comm.get(), 0); + exchangePreCollDataZGPU27(para.get(), comm, 0); //output << "end exchange Pre Z (level 0) \n"; ////////////////////////////////////////////////////////////////////////// //3D domain decomposition convection diffusion if (para->getDiffOn()==true) { - exchangePreCollDataADXGPU27(para.get(), comm.get(), 0); - exchangePreCollDataADYGPU27(para.get(), comm.get(), 0); - exchangePreCollDataADZGPU27(para.get(), comm.get(), 0); + exchangePreCollDataADXGPU27(para.get(), comm, 0); + exchangePreCollDataADYGPU27(para.get(), comm, 0); + exchangePreCollDataADZGPU27(para.get(), comm, 0); } } ////////////////////////////////////////////////////////////////////////// @@ -2215,7 +2216,7 @@ void Simulation::run() //////////////////////////////////////////////////////////////////////////////// // File IO //////////////////////////////////////////////////////////////////////////////// - //comm.get()->startTimer(); + //comm->startTimer(); if(para->getTOut()>0 && t%para->getTOut()==0 && t>para->getTStartOut()) { ////////////////////////////////////////////////////////////////////////////////// @@ -2258,24 +2259,24 @@ void Simulation::run() if (para->getNumprocs() > 1) { ////1D domain decomposition - //exchangePreCollDataGPU27(para, comm.get(), 0); + //exchangePreCollDataGPU27(para, comm, 0); //3D domain decomposition //output << "(print) start exchange Pre X (level 0) \n"; - exchangePreCollDataXGPU27(para.get(), comm.get(), 0); + exchangePreCollDataXGPU27(para.get(), comm, 0); //output << "(print) end exchange Pre X (level 0) \n"; //output << "(print) start exchange Pre Y (level 0) \n"; - exchangePreCollDataYGPU27(para.get(), comm.get(), 0); + exchangePreCollDataYGPU27(para.get(), comm, 0); //output << "(print) end exchange Pre Y (level 0) \n"; //output << "(print) start exchange Pre Z (level 0) \n"; - exchangePreCollDataZGPU27(para.get(), comm.get(), 0); + exchangePreCollDataZGPU27(para.get(), comm, 0); //output << "(print) end exchange Pre Z (level 0) \n"; ////////////////////////////////////////////////////////////////////////// //3D domain decomposition convection diffusion if (para->getDiffOn()==true) { - exchangePreCollDataADXGPU27(para.get(), comm.get(), 0); - exchangePreCollDataADYGPU27(para.get(), comm.get(), 0); - exchangePreCollDataADZGPU27(para.get(), comm.get(), 0); + exchangePreCollDataADXGPU27(para.get(), comm, 0); + exchangePreCollDataADYGPU27(para.get(), comm, 0); + exchangePreCollDataADZGPU27(para.get(), comm, 0); } } ////////////////////////////////////////////////////////////////////////// @@ -2628,8 +2629,8 @@ void Simulation::run() //para->cudaFreeVeloBC(lev); //para->cudaFreeWallBC(lev); //para->cudaFreeVeloBC(lev); - para->cudaFreeInlet(lev); - para->cudaFreeOutlet(lev); + //para->cudaFreeInlet(lev); + //para->cudaFreeOutlet(lev); //para->cudaFreeGeomBC(lev); //para->cudaFreePress(lev); } diff --git a/src/VirtualFluids_GPU/LBM/Simulation.h b/src/VirtualFluids_GPU/LBM/Simulation.h index be8e809d9..54080f018 100644 --- a/src/VirtualFluids_GPU/LBM/Simulation.h +++ b/src/VirtualFluids_GPU/LBM/Simulation.h @@ -45,7 +45,7 @@ protected: LogWriter output; - SPtr<Communicator> comm; + Communicator* comm; SPtr<Parameter> para; SPtr<GridProvider> gridProvider; SPtr<DataWriter> dataWriter; diff --git a/targets/apps/HULC/main.cpp b/targets/apps/HULC/main.cpp index b85d1632b..e43ec64f9 100644 --- a/targets/apps/HULC/main.cpp +++ b/targets/apps/HULC/main.cpp @@ -40,8 +40,8 @@ std::string getGridPath(std::shared_ptr<Parameter> para, std::string Gridpath) { if (para->getNumprocs() == 1) return Gridpath + "/"; - else - return Gridpath + "/" + StringUtil::toString(para->getMyID()) + "/"; + + return Gridpath + "/" + StringUtil::toString(para->getMyID()) + "/"; } void setParameters(std::shared_ptr<Parameter> para, std::unique_ptr<input::Input> &input) diff --git a/targets/tests/TestingHULC/Tests/OrderOfAccuracy/OrderOfAccuracy.cpp b/targets/tests/TestingHULC/Tests/OrderOfAccuracy/OrderOfAccuracy.cpp index 02fa93b22..1ea96dd28 100644 --- a/targets/tests/TestingHULC/Tests/OrderOfAccuracy/OrderOfAccuracy.cpp +++ b/targets/tests/TestingHULC/Tests/OrderOfAccuracy/OrderOfAccuracy.cpp @@ -13,5 +13,5 @@ TEST_P(OrderOfAccuracy, Test) { bool OrderOfAccuracy::test(double a, double b) { - return a>b; + return a > b; } diff --git a/targets/tests/TestingHULC/Utilities/TestCondition/TestConditionImp.cpp b/targets/tests/TestingHULC/Utilities/TestCondition/TestConditionImp.cpp index b862ac9d5..4d901dd69 100644 --- a/targets/tests/TestingHULC/Utilities/TestCondition/TestConditionImp.cpp +++ b/targets/tests/TestingHULC/Utilities/TestCondition/TestConditionImp.cpp @@ -57,6 +57,7 @@ void TestConditionImp::initParameter(real viscosity, std::string aGridPath, std: para->setTEnd(endTime); para->setTOut(timeStepLength); + para->setTStartOut(1); para->setViscosity(viscosity); para->setVelocity(0.096); @@ -88,7 +89,26 @@ void TestConditionImp::initParameter(real viscosity, std::string aGridPath, std: para->setbackBcValues(gridPath + "backBoundaryValues.dat"); para->setnumberNodes(gridPath + "numberNodes.dat"); para->setLBMvsSI(gridPath + "LBMvsSI.dat"); - + para->setscaleCFC(gridPath + "scaleCFC.dat"); + para->setscaleCFF(gridPath + "scaleCFF.dat"); + para->setscaleFCC(gridPath + "scaleFCC.dat"); + para->setscaleFCF(gridPath + "scaleFCF.dat"); + para->setscaleOffsetCF(gridPath + "offsetVecCF.dat"); + para->setscaleOffsetFC(gridPath + "offsetVecFC.dat"); + para->setCalcParticles(false); + para->setDiffOn(false); + para->setDoCheckPoint(false); + para->setDoRestart(false); + para->setGeometryValues(false); + para->setCalc2ndOrderMoments(false); + para->setCalc3rdOrderMoments(false); + para->setCalcHighOrderMoments(false); + para->setReadGeo(false); + para->setCalcMedian(false); + para->setConcFile(false); + para->setUseMeasurePoints(false); + para->setUseWale(false); + para->setSimulatePorousMedia(false); para->setForcing(0.0, 0.0, 0.0); std::vector<int> dist; @@ -97,6 +117,8 @@ void TestConditionImp::initParameter(real viscosity, std::string aGridPath, std: para->setDistX(dist); para->setDistY(dist); para->setDistZ(dist); + + para->setNeedInterface(std::vector<bool>{true, true, true, true, true, true}); } void TestConditionImp::initInitialConditions(std::shared_ptr<InitialCondition> initialCondition) diff --git a/targets/tests/TestingHULC/Utilities/TestConditionFactory/TestConditionFactory.h b/targets/tests/TestingHULC/Utilities/TestConditionFactory/TestConditionFactory.h index 354fe948e..2bb18bf5b 100644 --- a/targets/tests/TestingHULC/Utilities/TestConditionFactory/TestConditionFactory.h +++ b/targets/tests/TestingHULC/Utilities/TestConditionFactory/TestConditionFactory.h @@ -10,6 +10,6 @@ class TestParameter; class TestConditionFactory { public: - virtual std::vector<std::shared_ptr<TestCondition>> makeTestConditions() = 0; + virtual std::vector<std::shared_ptr<TestCondition> > makeTestConditions() = 0; }; #endif diff --git a/targets/tests/TestingHULC/Utilities/TestParameter/ShearWaveTestParameter/ShearWaveTestParameter.cpp b/targets/tests/TestingHULC/Utilities/TestParameter/ShearWaveTestParameter/ShearWaveTestParameter.cpp index 8d0da14f5..dcfb109d2 100644 --- a/targets/tests/TestingHULC/Utilities/TestParameter/ShearWaveTestParameter/ShearWaveTestParameter.cpp +++ b/targets/tests/TestingHULC/Utilities/TestParameter/ShearWaveTestParameter/ShearWaveTestParameter.cpp @@ -18,7 +18,7 @@ ShearWaveTestParameter::ShearWaveTestParameter(real u0, real v0, real viscosity, :TestParameterImp(viscosity, lx, numberOfTimeSteps, basisTimeStepLength, startStepCalculation, ySliceForCalculation, gridPath, writeFiles, startStepFileWriter), u0(u0), v0(v0) { std::ostringstream oss; - oss << filePath + "\\ShearWave\\grid" << lx; + oss << filePath + "/ShearWave/grid" << lx; this->filePath = oss.str(); initialCondition = std::shared_ptr<InitialConditionShearWave>(new InitialConditionShearWave((double)lx, (double)lz, (double)l0, u0, v0, rho0)); diff --git a/targets/tests/TestingHULC/Utilities/TestParameter/TaylorGreenTestParameter/TaylorGreenTestParameter.cpp b/targets/tests/TestingHULC/Utilities/TestParameter/TaylorGreenTestParameter/TaylorGreenTestParameter.cpp index ddb95439f..0d75f1240 100644 --- a/targets/tests/TestingHULC/Utilities/TestParameter/TaylorGreenTestParameter/TaylorGreenTestParameter.cpp +++ b/targets/tests/TestingHULC/Utilities/TestParameter/TaylorGreenTestParameter/TaylorGreenTestParameter.cpp @@ -18,7 +18,7 @@ TaylorGreenTestParameter::TaylorGreenTestParameter(real u0, real amplitude, real :TestParameterImp(viscosity, lx, numberOfTimeSteps, basisTimeStepLength, startStepCalculation, ySliceForCalculation, gridPath, writeFiles, startStepFileWriter), u0(u0), amplitude(amplitude) { std::ostringstream oss; - oss << filePath + "\\TaylorGreenVortex\\grid" << lx; + oss << filePath + "/TaylorGreenVortex/grid" << lx; this->filePath = oss.str(); initialCondition = std::shared_ptr<InitialConditionTaylorGreen>(new InitialConditionTaylorGreen((double)lx, (double)lz, (double)l0, u0, amplitude, rho0)); diff --git a/targets/tests/TestingHULC/config.txt b/targets/tests/TestingHULC/config.txt index 86fd37d76..e919556ba 100644 --- a/targets/tests/TestingHULC/config.txt +++ b/targets/tests/TestingHULC/config.txt @@ -40,19 +40,19 @@ ShearWave512=false ################################################## # Grid Information # ################################################## -GridPath32="C:\Users\Timon\Documents\studienarbeitIRMB\grids\gridUni32x4x48" -GridPath64="C:\Users\Timon\Documents\studienarbeitIRMB\grids\gridUni64x4x96" -GridPath128="C:\Users\Timon\Documents\studienarbeitIRMB\grids\gridUni128x4x192" -GridPath256="C:\Users\Timon\Documents\studienarbeitIRMB\grids\gridUni256x4x384" -GridPath512="C:\Users\Timon\Documents\studienarbeitIRMB\grids\gridUni512x4x768" +GridPath32="D:/GRIDGENERATION/numeric_testing/grids/gridUni32x4x48" +GridPath64="D:/GRIDGENERATION/numeric_testing/grids/gridUni64x4x96" +GridPath128="D:/GRIDGENERATION/numeric_testing/grids/gridUni128x4x192" +GridPath256="D:/GRIDGENERATION/numeric_testing/grids/gridUni256x4x384" +GridPath512="D:/GRIDGENERATION/numeric_testing/grids/gridUni512x4x768" ################################################## # File Writing Information # ################################################## WriteFiles=true -PathForFileWriting="C:\Users\Timon\Documents\studienarbeitIRMB\Output" +PathForFileWriting="D:/GRIDGENERATION/numeric_testing/output" StartStepFileWriter=0 -PathLogFile="C:\Users\Timon\Documents\studienarbeitIRMB\logFiles" +PathLogFile="D:/GRIDGENERATION/numeric_testing/logFiles" diff --git a/targets/tests/TestingHULC/main.cpp b/targets/tests/TestingHULC/main.cpp index ada84ac2b..5d5bbd345 100644 --- a/targets/tests/TestingHULC/main.cpp +++ b/targets/tests/TestingHULC/main.cpp @@ -39,7 +39,7 @@ static void testHULC(const std::string &configFile) std::vector< std::shared_ptr< EvaluationParameter > > evaPara = configReader->makeEvaluationParameter(); std::shared_ptr<TestInformation> testInfo = configReader->makeTestInformation(); - std::vector<std::shared_ptr<TestParameter>> testPara = configReader->makeTestParameter(); + std::vector<std::shared_ptr<TestParameter> > testPara = configReader->makeTestParameter(); std::shared_ptr<TestConditionFactory> factory = TestConditionFactoryImp::getNewInstance(testPara); std::vector<std::shared_ptr<TestCondition>> testConditions = factory->makeTestConditions(); @@ -81,8 +81,9 @@ int main(int argc, char **argv) testHULC(argv[1]); ::testing::InitGoogleTest(&argc, argv); + MPI_Finalize(); + return RUN_ALL_TESTS(); - MPI_Finalize(); } INSTANTIATE_TEST_CASE_P(TaylorGreenVortexNu, OrderOfAccuracy, ValuesIn(nuTGV)); -- GitLab