From 38fe2972b4e95cf7ba7dd692d7bc2d864e013bfc Mon Sep 17 00:00:00 2001 From: Konstantin Kutscher <kutscher@irmb.tu-bs.de> Date: Tue, 9 Apr 2019 13:56:36 +0200 Subject: [PATCH] fix MPIIOMigrationCoProcessor::readDataSet() issue --- source/Applications/LaminarTubeFlow/ltf.cpp | 66 +++++++------------ .../MPIIOMigrationCoProcessor.cpp | 1 + .../Visitors/SetUndefinedNodesBlockVisitor.h | 2 +- 3 files changed, 24 insertions(+), 45 deletions(-) diff --git a/source/Applications/LaminarTubeFlow/ltf.cpp b/source/Applications/LaminarTubeFlow/ltf.cpp index 00e05aea7..8b1577853 100644 --- a/source/Applications/LaminarTubeFlow/ltf.cpp +++ b/source/Applications/LaminarTubeFlow/ltf.cpp @@ -13,7 +13,7 @@ void run(string configname) ConfigurationFile config; config.load(configname); - string pathname = config.getString("pathname"); + string pathname = config.getValue<string>("pathname"); int numOfThreads = config.getValue<int>("numOfThreads"); vector<int> blocknx = config.getVector<int>("blocknx"); double uLB = config.getValue<double>("uLB"); @@ -90,11 +90,21 @@ void run(string configname) SPtr<Grid3D> grid(new Grid3D(comm)); + SPtr<BCProcessor> bcProc; + bcProc = SPtr<BCProcessor>(new BCProcessor()); + + SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulant4thOrderViscosityLBMKernel()); + double bulckViscosity = 3700*nuLB; + dynamicPointerCast<CompressibleCumulant4thOrderViscosityLBMKernel>(kernel)->setBulkViscosity(bulckViscosity); + kernel->setBCProcessor(bcProc); + kernel->setBCProcessor(bcProc); + ////////////////////////////////////////////////////////////////////////// //restart - SPtr<UbScheduler> rSch(new UbScheduler(cpStep, cpStart)); - //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT); - MPIIORestartCoProcessor rcp(grid, rSch, pathname, comm); + SPtr<UbScheduler> mSch(new UbScheduler(cpStep, cpStart)); + SPtr<MPIIOMigrationCoProcessor> migCoProcessor(new MPIIOMigrationCoProcessor(grid, mSch, pathname + "/mig", comm)); + migCoProcessor->setLBMKernel(kernel); + migCoProcessor->setBCProcessor(bcProc); ////////////////////////////////////////////////////////////////////////// if (newStart) @@ -187,14 +197,11 @@ void run(string configname) SPtr<BCAdapter> velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST)); velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityBCAlgorithm())); //velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityWithDensityBCAlgorithm())); - - SPtr<D3Q27Interactor> inflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID)); //outflow SPtr<D3Q27Interactor> outflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, denBCAdapter, Interactor3D::SOLID)); - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B)); InteractorsHelper intHelper(grid, metisVisitor); intHelper.addInteractor(cylinderInt); @@ -202,7 +209,6 @@ void run(string configname) intHelper.addInteractor(outflowInt); intHelper.selectBlocks(); - ppblocks->process(0); ppblocks.reset(); @@ -231,17 +237,6 @@ void run(string configname) UBLOG(logINFO, "Available memory per process = " << availMem << " bytes"); } - SPtr<LBMKernel> kernel; - - kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel()); - //kernel = SPtr<LBMKernel>(new CompressibleCumulantLBMKernel()); - - // - SPtr<BCProcessor> bcProc(new BCProcessor()); - //SPtr<BCProcessor> bcProc(new ThinWallBCProcessor()); - - kernel->setBCProcessor(bcProc); - SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem); grid->accept(kernelVisitor); @@ -262,18 +257,6 @@ void run(string configname) //initVisitor.setVx1(uLB); grid->accept(initVisitor); - //set connectors - InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor()); - //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor()); - SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor); - //SPtr<ConnectorFactory> factory(new Block3DConnectorFactory()); - //ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, factory); - grid->accept(setConnsVisitor); - - //domain decomposition for threads - PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads); - grid->accept(pqPartVisitor); - //boundary conditions grid { SPtr<UbScheduler> geoSch(new UbScheduler(1)); @@ -299,23 +282,17 @@ void run(string configname) UBLOG(logINFO, "path = " << pathname); } - rcp.restart((int)restartStep); + migCoProcessor->restart((int)restartStep); grid->setTimeStep(restartStep); - SPtr<BCAdapter> velBCAdapter(new VelocityBCAdapter()); - velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityBCAlgorithm())); - //velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityWithDensityBCAlgorithm())); - bcVisitor.addBC(velBCAdapter); - grid->accept(bcVisitor); - - //set connectors - InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor()); - //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor()); - SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor); - grid->accept(setConnsVisitor); - if (myid == 0) UBLOG(logINFO, "Restart - end"); } + + SPtr<InterpolationProcessor> iProcessor(new CompressibleOffsetMomentsInterpolationProcessor()); + dynamicPointerCast<CompressibleOffsetMomentsInterpolationProcessor>(iProcessor)->setBulkViscosity(nuLB, bulckViscosity); + SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor); + grid->accept(setConnsVisitor); + SPtr<UbScheduler> visSch(new UbScheduler(outTime)); SPtr<CoProcessor> pp(new WriteMacroscopicQuantitiesCoProcessor(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv, comm)); @@ -327,6 +304,7 @@ void run(string configname) SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime)); calculator->addCoProcessor(npr); calculator->addCoProcessor(pp); + calculator->addCoProcessor(migCoProcessor); if (myid == 0) UBLOG(logINFO, "Simulation-start"); calculator->calculate(); diff --git a/source/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.cpp index cd8e490ce..4240eec8e 100644 --- a/source/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.cpp +++ b/source/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.cpp @@ -1752,6 +1752,7 @@ void MPIIOMigrationCoProcessor::readDataSet(int step) SPtr<Block3D> block = grid->getBlock(dataSetArray[n].globalID); //std::cout << "rank="<<rank<<", dataSetArray[n].globalID=" << dataSetArray[n].globalID << std::endl; + this->lbmKernel->setBlock(block); SPtr<LBMKernel> kernel = this->lbmKernel->clone(); kernel->setGhostLayerWidth(dataSetArray[n].ghostLayerWidth); kernel->setCollisionFactor(dataSetArray[n].collFactor); diff --git a/source/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h b/source/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h index b4fc9f37b..9c47ca3e9 100644 --- a/source/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h +++ b/source/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h @@ -12,7 +12,7 @@ class BCArray3D; class SetUndefinedNodesBlockVisitor : public Block3DVisitor { public: - SetUndefinedNodesBlockVisitor(bool twoTypeOfConnectorsCheck); + SetUndefinedNodesBlockVisitor(bool twoTypeOfConnectorsCheck=true); virtual ~SetUndefinedNodesBlockVisitor() {} -- GitLab