diff --git a/source/VirtualFluidsBasic/numerics/geometry3d/CoordinateTransformation3D.h b/source/VirtualFluidsBasic/numerics/geometry3d/CoordinateTransformation3D.h index 6928c5db250eaf9f9c3fa0524a9a1b9a118fcca9..922d51986b93c70d446abfcc1754c3bf8a81b92b 100644 --- a/source/VirtualFluidsBasic/numerics/geometry3d/CoordinateTransformation3D.h +++ b/source/VirtualFluidsBasic/numerics/geometry3d/CoordinateTransformation3D.h @@ -153,6 +153,7 @@ private: friend class MPIIORestartCoProcessor; friend class MPIIOMigrationCoProcessor; friend class MPIIOMigrationBECoProcessor; + friend class CheckpointConverter; }; #endif //COORDINATETRANSFORMATION3D_H diff --git a/source/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.cpp index 1992d0726fdc0126ad4238bac9a777b39951a26c..77e6788bf2c5714050e89967afe1ac0f98da36a2 100644 --- a/source/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.cpp +++ b/source/VirtualFluidsCore/CoProcessors/MPIIOMigrationBECoProcessor.cpp @@ -1698,6 +1698,7 @@ void MPIIOMigrationBECoProcessor::readDataSet(int step) // find the nesessary block and fill it SPtr<Block3D> block = grid->getBlock(blockID); + this->lbmKernel->setBlock(block); SPtr<LBMKernel> kernel = this->lbmKernel->clone(); LBMReal collFactor = LBMSystem::calcCollisionFactor(this->nue, block->getLevel()); kernel->setCollisionFactor(collFactor); diff --git a/source/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.cpp index 4240eec8efc664dba2b61807b963fc239af63785..236cb7135c0a1404cb21c59369ec9ab8c69f14ac 100644 --- a/source/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.cpp +++ b/source/VirtualFluidsCore/CoProcessors/MPIIOMigrationCoProcessor.cpp @@ -1560,13 +1560,14 @@ void MPIIOMigrationCoProcessor::readBlocks(int step) } // clear the grid - std::vector<SPtr<Block3D>> blocksVector; - grid->getBlocks(0, blocksVector); - int del = 0; - for (SPtr<Block3D> block : blocksVector) + std::vector<SPtr<Block3D>> blocksVector[25]; + int minInitLevel = this->grid->getCoarsestInitializedLevel(); + int maxInitLevel = this->grid->getFinestInitializedLevel(); + for (int level = minInitLevel; level <= maxInitLevel; level++) { - grid->deleteBlock(block); - del++; + grid->getBlocks(level, blocksVector[level]); + for (SPtr<Block3D> block : blocksVector[level]) // blocks of the current level + grid->deleteBlock(block); } // restore the grid diff --git a/source/VirtualFluidsCore/CoProcessors/MPIIORestartCoProcessor.cpp b/source/VirtualFluidsCore/CoProcessors/MPIIORestartCoProcessor.cpp index d8b0068048b66a317060dbb5d537983508964128..4e7d3c2392198cb78ea699e3e82c0b4bb74b92e3 100644 --- a/source/VirtualFluidsCore/CoProcessors/MPIIORestartCoProcessor.cpp +++ b/source/VirtualFluidsCore/CoProcessors/MPIIORestartCoProcessor.cpp @@ -1921,6 +1921,7 @@ void MPIIORestartCoProcessor::readDataSet(int step) // find the nesessary block and fill it SPtr<Block3D> block = grid->getBlock(dataSetArray[n].x1, dataSetArray[n].x2, dataSetArray[n].x3, dataSetArray[n].level); + this->lbmKernel->setBlock(block); SPtr<LBMKernel> kernel = this->lbmKernel->clone(); kernel->setGhostLayerWidth(dataSetArray[n].ghostLayerWidth); kernel->setCollisionFactor(dataSetArray[n].collFactor);