diff --git a/apps/cpu/ConvectionOfVortex/cov.cpp b/apps/cpu/ConvectionOfVortex/cov.cpp
index 8d53d608aa9a8793578f380e5f766128834f2e5c..35da90e5e24b2510429a08be9fa5bacdb66d33be 100644
--- a/apps/cpu/ConvectionOfVortex/cov.cpp
+++ b/apps/cpu/ConvectionOfVortex/cov.cpp
@@ -160,7 +160,7 @@ void run()
       //intHelper.addInteractor(outflowIntr4);
       intHelper.selectBlocks();
 
-      ppblocks->process(0);
+      ppblocks->update(0);
       ppblocks.reset();
 
       //set connectors  
@@ -265,7 +265,7 @@ void run()
       //Postrozess
       SPtr<UbScheduler> geoSch(new UbScheduler(1));
       SPtr<SimulationObserver> ppgeo(new WriteBoundaryConditionsSimulationObserver(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-      ppgeo->process(0);
+      ppgeo->update(0);
       ppgeo.reset();
 
       if (myid==0) UBLOG(logINFO, "Preprozess - end");
@@ -279,7 +279,7 @@ void run()
 
       SPtr<UbScheduler> visSch(new UbScheduler(outTime));
       SPtr<WriteMacroscopicQuantitiesSimulationObserver> writeMQSimulationObserver(new WriteMacroscopicQuantitiesSimulationObserver(grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-      writeMQSimulationObserver->process(0);
+      writeMQSimulationObserver->update(0);
 
       SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
       std::shared_ptr<NUPSCounterSimulationObserver> nupsSimulationObserver(new NUPSCounterSimulationObserver(grid, nupsSch, numOfThreads, comm));
@@ -290,7 +290,7 @@ void run()
       //tav->setWithGhostLayer(true);
 
       SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
+      SPtr<Simulation> calculator(new Simulation(grid, stepGhostLayer, endTime));
       calculator->addSimulationObserver(nupsSimulationObserver);
       calculator->addSimulationObserver(writeMQSimulationObserver);
       //calculator->addSimulationObserver(tav);
@@ -298,7 +298,7 @@ void run()
       //omp_set_num_threads(1);
 
       if (myid==0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
+      calculator->run();
       if (myid==0) UBLOG(logINFO, "Simulation-end");
    }
    catch (std::exception& e)
diff --git a/apps/cpu/CouetteFlow/cflow.cpp b/apps/cpu/CouetteFlow/cflow.cpp
index 774150eece9ba6e160331f8ec33c1ecacea698b8..11bb9b4d517d1e16889fa9d5be07fb6a9d47c18a 100644
--- a/apps/cpu/CouetteFlow/cflow.cpp
+++ b/apps/cpu/CouetteFlow/cflow.cpp
@@ -200,7 +200,7 @@ void bflow(string configname)
       //////////////////////////////////////
 
       SPtr<SimulationObserver> ppblocks(new WriteBlocksSimulationObserver(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-      ppblocks->process(0);
+      ppblocks->update(0);
 
       unsigned long nob = grid->getNumberOfBlocks();
       int gl = 3;
@@ -253,7 +253,7 @@ void bflow(string configname)
 
       SPtr<UbScheduler> geoSch(new UbScheduler(1));
       WriteBoundaryConditionsSimulationObserver ppgeo = WriteBoundaryConditionsSimulationObserver(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), comm);
-      ppgeo.process(1);
+      ppgeo.update(1);
 
       SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
       SPtr<SimulationObserver> npr(new NUPSCounterSimulationObserver(grid, nupsSch, numOfThreads, comm));
@@ -266,7 +266,7 @@ void bflow(string configname)
       SPtr<WriteThixotropyQuantitiesSimulationObserver> writeThixotropicMQSimulationObserver(new WriteThixotropyQuantitiesSimulationObserver(grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm));
 
       SPtr<UbScheduler> stepGhostLayer(new UbScheduler(outTime));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
+      SPtr<Simulation> calculator(new Simulation(grid, stepGhostLayer, endTime));
       calculator->addSimulationObserver(npr);
       calculator->addSimulationObserver(writeMQSimulationObserver);
       calculator->addSimulationObserver(writeThixotropicMQSimulationObserver);
@@ -274,7 +274,7 @@ void bflow(string configname)
       //calculator->addSimulationObserver(restartSimulationObserver);
 
       if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
+      calculator->run();
       if (myid == 0) UBLOG(logINFO, "Simulation-end");
    }
    catch (std::exception& e)
diff --git a/apps/cpu/FlowAroundCylinder/cylinder.cpp b/apps/cpu/FlowAroundCylinder/cylinder.cpp
index b98eb01b603bf176a6db8dfc4aca2e207c7ad9c6..f5d19e9ad5dc684d1d1e318b79d7d293d40ff5a9 100644
--- a/apps/cpu/FlowAroundCylinder/cylinder.cpp
+++ b/apps/cpu/FlowAroundCylinder/cylinder.cpp
@@ -217,7 +217,7 @@ void run(string configname)
          intHelper.selectBlocks();
 
 
-         ppblocks->process(0);
+         ppblocks->update(0);
          ppblocks.reset();
 
          unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
@@ -277,7 +277,7 @@ void run(string configname)
          SPtr<UbScheduler> geoSch(new UbScheduler(1));
          SPtr<SimulationObserver> ppgeo(
             new WriteBoundaryConditionsSimulationObserver(grid, geoSch, pathOut, WbWriterVtkXmlBinary::getInstance(), comm));
-         ppgeo->process(0);
+         ppgeo->update(0);
          ppgeo.reset();
 
          if (myid==0) UBLOG(logINFO, "Preprozess - end");
@@ -315,13 +315,13 @@ void run(string configname)
 
 	  omp_set_num_threads(numOfThreads);
 	  SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-	  SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
+	  SPtr<Simulation> calculator(new Simulation(grid, stepGhostLayer, endTime));
 	  calculator->addSimulationObserver(nupsSimulationObserver);
      calculator->addSimulationObserver(fp);
      calculator->addSimulationObserver(writeMQSimulationObserver);
 
       if(myid == 0) UBLOG(logINFO,"Simulation-start");
-	  calculator->calculate();
+	  calculator->run();
       if(myid == 0) UBLOG(logINFO,"Simulation-end");
    }
    catch(std::exception& e)
diff --git a/apps/cpu/HerschelBulkleyModel/hbflow.cpp b/apps/cpu/HerschelBulkleyModel/hbflow.cpp
index 85ac6681a6903483ed6a4cdc0a72478636781d89..f581304e047aa39711efe5989c02d4b5e0a44cee 100644
--- a/apps/cpu/HerschelBulkleyModel/hbflow.cpp
+++ b/apps/cpu/HerschelBulkleyModel/hbflow.cpp
@@ -247,7 +247,7 @@ void bflow(string configname)
       //////////////////////////////////////
 
       SPtr<SimulationObserver> ppblocks(new WriteBlocksSimulationObserver(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-      ppblocks->process(0);
+      ppblocks->update(0);
 
       unsigned long nob = grid->getNumberOfBlocks();
       int gl = 3;
@@ -300,7 +300,7 @@ void bflow(string configname)
 
       SPtr<UbScheduler> geoSch(new UbScheduler(1));
       WriteBoundaryConditionsSimulationObserver ppgeo = WriteBoundaryConditionsSimulationObserver(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), comm);
-      ppgeo.process(1);
+      ppgeo.update(1);
 
       SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
       SPtr<SimulationObserver> npr(new NUPSCounterSimulationObserver(grid, nupsSch, numOfThreads, comm));
@@ -321,7 +321,7 @@ void bflow(string configname)
       SPtr<WriteThixotropyQuantitiesSimulationObserver> writeThixotropicMQSimulationObserver(new WriteThixotropyQuantitiesSimulationObserver(grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm));
 
       SPtr<UbScheduler> stepGhostLayer(new UbScheduler(outTime));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
+      SPtr<Simulation> calculator(new Simulation(grid, stepGhostLayer, endTime));
       calculator->addSimulationObserver(npr);
       calculator->addSimulationObserver(writeMQSimulationObserver);
       calculator->addSimulationObserver(writeThixotropicMQSimulationObserver);
@@ -331,7 +331,7 @@ void bflow(string configname)
       //calculator->addSimulationObserver(restartSimulationObserver);
 
       if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
+      calculator->run();
       if (myid == 0) UBLOG(logINFO, "Simulation-end");
    }
    catch (std::exception& e)
diff --git a/apps/cpu/HerschelBulkleySphere/hbsphere.cpp b/apps/cpu/HerschelBulkleySphere/hbsphere.cpp
index 83da2bae974bd6c2386673eb4887626816317439..f2f47acd9368e1abbf2d3a0565909aca5ecfafaf 100644
--- a/apps/cpu/HerschelBulkleySphere/hbsphere.cpp
+++ b/apps/cpu/HerschelBulkleySphere/hbsphere.cpp
@@ -262,7 +262,7 @@ void bflow(string configname)
          //////////////////////////////////////
 
          SPtr<SimulationObserver> ppblocks(new WriteBlocksSimulationObserver(grid, SPtr<UbScheduler>(new UbScheduler(1)), outputPath, WbWriterVtkXmlBinary::getInstance(), comm));
-         ppblocks->process(0);
+         ppblocks->update(0);
 
          unsigned long nob = grid->getNumberOfBlocks();
          int gl = 3;
@@ -332,7 +332,7 @@ void bflow(string configname)
 
       SPtr<UbScheduler> geoSch(new UbScheduler(1));
       WriteBoundaryConditionsSimulationObserver ppgeo = WriteBoundaryConditionsSimulationObserver(grid, geoSch, outputPath, WbWriterVtkXmlASCII::getInstance(), comm);
-      ppgeo.process(0);
+      ppgeo.update(0);
 
       SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
       SPtr<SimulationObserver> npr(new NUPSCounterSimulationObserver(grid, nupsSch, numOfThreads, comm));
@@ -341,7 +341,7 @@ void bflow(string configname)
       SPtr<UbScheduler> visSch(new UbScheduler(outTime));
       //SPtr<UbScheduler> visSch(new UbScheduler(10,1));
       SPtr<WriteMacroscopicQuantitiesSimulationObserver> writeMQSimulationObserver(new WriteMacroscopicQuantitiesSimulationObserver(grid, visSch, outputPath, WbWriterVtkXmlBinary::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm));
-      //writeMQSimulationObserver->process(0);
+      //writeMQSimulationObserver->update(0);
 
       real area = UbMath::PI*radius*radius;
       SPtr<UbScheduler> forceSch(new UbScheduler(100));
@@ -351,7 +351,7 @@ void bflow(string configname)
       SPtr<WriteThixotropyQuantitiesSimulationObserver> writeThixotropicMQSimulationObserver(new WriteThixotropyQuantitiesSimulationObserver(grid, visSch, outputPath, WbWriterVtkXmlBinary::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm));
 
       SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
+      SPtr<Simulation> calculator(new Simulation(grid, stepGhostLayer, endTime));
       calculator->addSimulationObserver(npr);
       calculator->addSimulationObserver(fp);
       calculator->addSimulationObserver(writeMQSimulationObserver);
@@ -359,7 +359,7 @@ void bflow(string configname)
       calculator->addSimulationObserver(restartSimulationObserver);
 
       if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
+      calculator->run();
       if (myid == 0) UBLOG(logINFO, "Simulation-end");
    }
    catch (std::exception& e)
diff --git a/apps/cpu/JetBreakup/JetBreakup.cpp b/apps/cpu/JetBreakup/JetBreakup.cpp
index 828d52051af5860a8abdc65137161c7bea54d82e..7d00fe1f811ec3aba2df627d725146d16d587e73 100644
--- a/apps/cpu/JetBreakup/JetBreakup.cpp
+++ b/apps/cpu/JetBreakup/JetBreakup.cpp
@@ -444,7 +444,7 @@ void run(string configname)
 
             intHelper.selectBlocks();
 
-            ppblocks->process(0);
+            ppblocks->update(0);
             ppblocks.reset();
 
             unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
@@ -550,7 +550,7 @@ void run(string configname)
                 SPtr<UbScheduler> geoSch(new UbScheduler(1));
                 SPtr<WriteBoundaryConditionsSimulationObserver> ppgeo(new WriteBoundaryConditionsSimulationObserver(
                     grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-                ppgeo->process(0);
+                ppgeo->update(0);
                 ppgeo.reset();
             }
 
@@ -582,7 +582,7 @@ void run(string configname)
         visSch->addSchedule(t,t,t); //t=7.19
         SPtr<WriteMultiphaseQuantitiesSimulationObserver> pp(new WriteMultiphaseQuantitiesSimulationObserver(
             grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-        pp->process(0);
+        pp->update(0);
 
         SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
         SPtr<NUPSCounterSimulationObserver> npr(new NUPSCounterSimulationObserver(grid, nupsSch, numOfThreads, comm));
@@ -596,7 +596,7 @@ void run(string configname)
 #endif
 
         SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-        SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
+        SPtr<Simulation> calculator(new Simulation(grid, stepGhostLayer, endTime));
         calculator->addSimulationObserver(npr);
         calculator->addSimulationObserver(pp);
         calculator->addSimulationObserver(timeDepBC);
@@ -604,7 +604,7 @@ void run(string configname)
 
         if (myid == 0)
             UBLOG(logINFO, "Simulation-start");
-        calculator->calculate();
+        calculator->run();
         if (myid == 0)
             UBLOG(logINFO, "Simulation-end");
     } catch (std::exception &e) {
diff --git a/apps/cpu/LaminarTubeFlow/ltf.cpp b/apps/cpu/LaminarTubeFlow/ltf.cpp
index 2be4793c95d0a29dadb07edff137e4c09222762d..0b398539acf8e7b1a187159ada58e6f51faede7d 100644
--- a/apps/cpu/LaminarTubeFlow/ltf.cpp
+++ b/apps/cpu/LaminarTubeFlow/ltf.cpp
@@ -191,7 +191,7 @@ void run(string configname)
 
          SPtr<SimulationObserver> ppblocks(new WriteBlocksSimulationObserver(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
 
-         ppblocks->process(0);
+         ppblocks->update(0);
 
          SPtr<D3Q27Interactor> cylinderInt(new D3Q27Interactor(cylinder, grid, noSlipBC, Interactor3D::INVERSESOLID));
 
@@ -229,7 +229,7 @@ void run(string configname)
          intHelper.addInteractor(outflowInt);
          intHelper.selectBlocks();
 
-         ppblocks->process(0);
+         ppblocks->update(0);
          ppblocks.reset();
 
          unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
@@ -281,7 +281,7 @@ void run(string configname)
          {
             SPtr<UbScheduler> geoSch(new UbScheduler(1));
             SPtr<SimulationObserver> ppgeo(new WriteBoundaryConditionsSimulationObserver(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-            ppgeo->process(0);
+            ppgeo->update(0);
             ppgeo.reset();
          }
 
@@ -328,14 +328,14 @@ void run(string configname)
       omp_set_num_threads(numOfThreads);
       numOfThreads = 1;
       SPtr<UbScheduler> stepGhostLayer(visSch);
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, int(endTime)));
+      SPtr<Simulation> calculator(new Simulation(grid, stepGhostLayer, int(endTime)));
       calculator->addSimulationObserver(npr);
       calculator->addSimulationObserver(pp);
       calculator->addSimulationObserver(migSimulationObserver);
       //calculator->addSimulationObserver(timeDepBC);
 
       if (myid == 0) VF_LOG_INFO("Simulation-start");
-      calculator->calculate();
+      calculator->run();
       if (myid == 0) VF_LOG_INFO("Simulation-end");
    }
    catch (std::exception& e)
diff --git a/apps/cpu/Multiphase/Multiphase.cpp b/apps/cpu/Multiphase/Multiphase.cpp
index 753a6528d20ef710f92e9a80ae46cc6735857cf4..b04c785899f2eb65201971a625c02370286140f3 100644
--- a/apps/cpu/Multiphase/Multiphase.cpp
+++ b/apps/cpu/Multiphase/Multiphase.cpp
@@ -322,7 +322,7 @@ void run(string configname)
 
             intHelper.selectBlocks();
 
-            ppblocks->process(0);
+            ppblocks->update(0);
             ppblocks.reset();
 
             unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
@@ -417,7 +417,7 @@ void run(string configname)
                 SPtr<UbScheduler> geoSch(new UbScheduler(1));
                 SPtr<WriteBoundaryConditionsSimulationObserver> ppgeo(new WriteBoundaryConditionsSimulationObserver(
                     grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-                ppgeo->process(0);
+                ppgeo->update(0);
                 ppgeo.reset();
             }
 
@@ -458,7 +458,7 @@ void run(string configname)
         SPtr<WriteMultiphaseQuantitiesSimulationObserver> pp(new WriteMultiphaseQuantitiesSimulationObserver(
             //SPtr<WriteMacroscopicQuantitiesSimulationObserver> pp(new WriteMacroscopicQuantitiesSimulationObserver(
             grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-        pp->process(0);
+        pp->update(0);
 
         SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
         SPtr<NUPSCounterSimulationObserver> npr(new NUPSCounterSimulationObserver(grid, nupsSch, numOfThreads, comm));
@@ -472,7 +472,7 @@ void run(string configname)
 #endif
 
         SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-        SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
+        SPtr<Simulation> calculator(new Simulation(grid, stepGhostLayer, endTime));
         calculator->addSimulationObserver(npr);
         calculator->addSimulationObserver(pp);
         calculator->addSimulationObserver(timeDepBC);
@@ -483,7 +483,7 @@ void run(string configname)
 
         if (myid == 0)
             UBLOG(logINFO, "Simulation-start");
-        calculator->calculate();
+        calculator->run();
         if (myid == 0)
             UBLOG(logINFO, "Simulation-end");
     } catch (std::exception &e) {
diff --git a/apps/cpu/MultiphaseDropletTest/droplet.cpp b/apps/cpu/MultiphaseDropletTest/droplet.cpp
index 7686f87f96c54387c8ad6f3597e5ebf6b7564178..5a12f039ccf858ef6cfd34fcbe0d7722f7db55e4 100644
--- a/apps/cpu/MultiphaseDropletTest/droplet.cpp
+++ b/apps/cpu/MultiphaseDropletTest/droplet.cpp
@@ -244,7 +244,7 @@ void run(string configname)
             intHelper.addInteractor(wallYmaxInt);
             intHelper.selectBlocks();
 
-            ppblocks->process(0);
+            ppblocks->update(0);
             ppblocks.reset();
 
             unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
@@ -319,7 +319,7 @@ void run(string configname)
                 SPtr<UbScheduler> geoSch(new UbScheduler(1));
                 SPtr<WriteBoundaryConditionsSimulationObserver> ppgeo(new WriteBoundaryConditionsSimulationObserver(
                     grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-                ppgeo->process(0);
+                ppgeo->update(0);
                 ppgeo.reset();
             }
 
@@ -383,7 +383,7 @@ void run(string configname)
         SPtr<WriteMultiphaseQuantitiesSimulationObserver> pp(new WriteMultiphaseQuantitiesSimulationObserver(
             grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
         if(grid->getTimeStep() == 0) 
-            pp->process(0);
+            pp->update(0);
 
         SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
         SPtr<NUPSCounterSimulationObserver> npr(new NUPSCounterSimulationObserver(grid, nupsSch, numOfThreads, comm));
@@ -391,7 +391,7 @@ void run(string configname)
         omp_set_num_threads(numOfThreads);
 
         SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-        SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
+        SPtr<Simulation> calculator(new Simulation(grid, stepGhostLayer, endTime));
         calculator->addSimulationObserver(npr);
         calculator->addSimulationObserver(pp);
         calculator->addSimulationObserver(rcp);
@@ -399,7 +399,7 @@ void run(string configname)
 
         if (myid == 0)
             UBLOG(logINFO, "Simulation-start");
-        calculator->calculate();
+        calculator->run();
         if (myid == 0)
             UBLOG(logINFO, "Simulation-end");
             
diff --git a/apps/cpu/PoiseuilleFlow/pf1.cpp b/apps/cpu/PoiseuilleFlow/pf1.cpp
index c4503ea64cab5469f56136bdd7129d119007ed9d..cb4528b3ad5a11cff3391e010c823848309bf7d7 100644
--- a/apps/cpu/PoiseuilleFlow/pf1.cpp
+++ b/apps/cpu/PoiseuilleFlow/pf1.cpp
@@ -85,7 +85,7 @@ void pf1()
 
    //write data for visualization of block grid
    SPtr<SimulationObserver> ppblocks(new WriteBlocksSimulationObserver(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm));
-   ppblocks->process(0);
+   ppblocks->update(0);
    //ppblocks.reset();
 
    unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
@@ -164,7 +164,7 @@ void pf1()
    {
       SPtr<UbScheduler> geoSch(new UbScheduler(1));
       WriteBoundaryConditionsSimulationObserver ppgeo(grid, geoSch, pathOut, WbWriterVtkXmlBinary::getInstance(), /*SPtr<LBMUnitConverter>(new LBMUnitConverter()),*/ comm);
-      ppgeo.process(0);
+      ppgeo.update(0);
    }
    
    if (myid == 0) UBLOG(logINFO, "Preprocess - end");
@@ -177,7 +177,7 @@ void pf1()
    //migSimulationObserver->setNu(nuLB);
    //migSimulationObserver->restart(10);
 
-   ppblocks->process(1);
+   ppblocks->update(1);
 
    //write data for visualization of macroscopic quantities
    SPtr<UbScheduler> visSch(new UbScheduler(outTime));
@@ -191,17 +191,17 @@ void pf1()
    //start simulation 
    //omp_set_num_threads(numOfThreads);
    SPtr<UbScheduler> stepGhostLayer(new UbScheduler(outTime));
-   SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
+   SPtr<Simulation> calculator(new Simulation(grid, stepGhostLayer, endTime));
    calculator->addSimulationObserver(npr);
    calculator->addSimulationObserver(writeMQSimulationObserver);
    //calculator->addSimulationObserver(migSimulationObserver);
    //calculator->addSimulationObserver(restartSimulationObserver);
 
    if (myid == 0) UBLOG(logINFO, "Simulation-start");
-   calculator->calculate();
+   calculator->run();
    if (myid == 0) UBLOG(logINFO, "Simulation-end");
    
-   ppblocks->process(10);
+   ppblocks->update(10);
 }
 
 
diff --git a/apps/cpu/RisingBubble2D/RisingBubble2D.cpp b/apps/cpu/RisingBubble2D/RisingBubble2D.cpp
index be115369663d64e136b9f13dcf0980fb85921251..a5cd0aff9605b6dc51fde3f5b3c677095fc1c80f 100644
--- a/apps/cpu/RisingBubble2D/RisingBubble2D.cpp
+++ b/apps/cpu/RisingBubble2D/RisingBubble2D.cpp
@@ -256,7 +256,7 @@ void run(string configname)
             intHelper.addInteractor(wallYmaxInt);
             intHelper.selectBlocks();
 
-            ppblocks->process(0);
+            ppblocks->update(0);
             ppblocks.reset();
 
             unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
@@ -331,7 +331,7 @@ void run(string configname)
                 SPtr<UbScheduler> geoSch(new UbScheduler(1));
                 SPtr<WriteBoundaryConditionsSimulationObserver> ppgeo(new WriteBoundaryConditionsSimulationObserver(
                     grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-                ppgeo->process(0);
+                ppgeo->update(0);
                 ppgeo.reset();
             }
 
@@ -398,7 +398,7 @@ void run(string configname)
         SPtr<WriteMultiphaseQuantitiesSimulationObserver> pp(new WriteMultiphaseQuantitiesSimulationObserver(
             grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
         if(grid->getTimeStep() == 0) 
-            pp->process(0);
+            pp->update(0);
 
         SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
         SPtr<NUPSCounterSimulationObserver> npr(new NUPSCounterSimulationObserver(grid, nupsSch, numOfThreads, comm));
@@ -406,7 +406,7 @@ void run(string configname)
         //omp_set_num_threads(numOfThreads);
 
         SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-        SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
+        SPtr<Simulation> calculator(new Simulation(grid, stepGhostLayer, endTime));
         calculator->addSimulationObserver(npr);
         calculator->addSimulationObserver(pp);
         calculator->addSimulationObserver(rcp);
@@ -414,7 +414,7 @@ void run(string configname)
 
         if (myid == 0)
             UBLOG(logINFO, "Simulation-start");
-        calculator->calculate();
+        calculator->run();
         if (myid == 0)
             UBLOG(logINFO, "Simulation-end");
             
diff --git a/apps/cpu/ViskomatXL/viskomat.cpp b/apps/cpu/ViskomatXL/viskomat.cpp
index 2ec6f365afda33432b1b247352e97027e755d0cb..addceee87653eee5b5218790d9a7bc0ad2a7b054 100644
--- a/apps/cpu/ViskomatXL/viskomat.cpp
+++ b/apps/cpu/ViskomatXL/viskomat.cpp
@@ -321,7 +321,7 @@ void bflow(string configname)
          //////////////////////////////////////
 
          SPtr<SimulationObserver> ppblocks(new WriteBlocksSimulationObserver(grid, SPtr<UbScheduler>(new UbScheduler(1)), outputPath, WbWriterVtkXmlBinary::getInstance(), comm));
-         ppblocks->process(0);
+         ppblocks->update(0);
 
          unsigned long nob = grid->getNumberOfBlocks();
          int gl = 3;
@@ -366,7 +366,7 @@ void bflow(string configname)
 
          SPtr<UbScheduler> geoSch(new UbScheduler(1));
          WriteBoundaryConditionsSimulationObserver ppgeo = WriteBoundaryConditionsSimulationObserver(grid, geoSch, outputPath, WbWriterVtkXmlBinary::getInstance(), comm);
-         ppgeo.process(0);
+         ppgeo.update(0);
 
          if (myid == 0) UBLOG(logINFO, "Preprozess - end");
       }
@@ -397,7 +397,7 @@ void bflow(string configname)
 
          SPtr<SimulationObserver> ppblocks(new WriteBlocksSimulationObserver(grid, SPtr<UbScheduler>(new UbScheduler(1)), outputPath,
                                                                WbWriterVtkXmlBinary::getInstance(), comm));
-         ppblocks->process(1);
+         ppblocks->update(1);
       }
       
       //omp_set_num_threads(numOfThreads);
@@ -420,7 +420,7 @@ void bflow(string configname)
       SPtr<UbScheduler> visSch(new UbScheduler(outTime));
       //SPtr<UbScheduler> visSch(new UbScheduler(10,1));
       SPtr<WriteMacroscopicQuantitiesSimulationObserver> writeMQSimulationObserver(new WriteMacroscopicQuantitiesSimulationObserver(grid, visSch, outputPath, WbWriterVtkXmlBinary::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm));
-      //writeMQSimulationObserver->process(100);
+      //writeMQSimulationObserver->update(100);
 
       SPtr<UbScheduler> forceSch(new UbScheduler(100));
       SPtr<CalculateTorqueSimulationObserver> fp = make_shared<CalculateTorqueSimulationObserver>(grid, forceSch, outputPath + "/torque/TorqueRotor.csv", comm);
@@ -431,7 +431,7 @@ void bflow(string configname)
       //SPtr<WriteThixotropyQuantitiesSimulationObserver> writeThixotropicMQSimulationObserver(new WriteThixotropyQuantitiesSimulationObserver(grid, visSch, outputPath, WbWriterVtkXmlBinary::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm));
 
       SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
+      SPtr<Simulation> calculator(new Simulation(grid, stepGhostLayer, endTime));
       calculator->addSimulationObserver(npr);
       //calculator->addSimulationObserver(fp);
       calculator->addSimulationObserver(fp2);
@@ -440,7 +440,7 @@ void bflow(string configname)
       calculator->addSimulationObserver(restartSimulationObserver);
 
       if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
+      calculator->run();
       if (myid == 0) UBLOG(logINFO, "Simulation-end");
    }
    catch (std::exception& e)
diff --git a/apps/cpu/rheometer/rheometer.cpp b/apps/cpu/rheometer/rheometer.cpp
index a707b0899b7347f649be21291ed57a08ee93fcd1..5b716ffb61f935c2ea0955c22042f687f43273a5 100644
--- a/apps/cpu/rheometer/rheometer.cpp
+++ b/apps/cpu/rheometer/rheometer.cpp
@@ -329,7 +329,7 @@ void bflow(string configname)
          //////////////////////////////////////
 
          SPtr<SimulationObserver> ppblocks(new WriteBlocksSimulationObserver(grid, SPtr<UbScheduler>(new UbScheduler(1)), outputPath, WbWriterVtkXmlBinary::getInstance(), comm));
-         ppblocks->process(0);
+         ppblocks->update(0);
 
          unsigned long nob = grid->getNumberOfBlocks();
          int gl = 3;
@@ -402,7 +402,7 @@ void bflow(string configname)
 
       SPtr<UbScheduler> geoSch(new UbScheduler(1));
       WriteBoundaryConditionsSimulationObserver ppgeo = WriteBoundaryConditionsSimulationObserver(grid, geoSch, outputPath, WbWriterVtkXmlASCII::getInstance(), comm);
-      ppgeo.process(0);
+      ppgeo.update(0);
 
       SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
       SPtr<SimulationObserver> npr(new NUPSCounterSimulationObserver(grid, nupsSch, numOfThreads, comm));
@@ -411,7 +411,7 @@ void bflow(string configname)
       SPtr<UbScheduler> visSch(new UbScheduler(outTime));
       //SPtr<UbScheduler> visSch(new UbScheduler(10,1));
       SPtr<WriteMacroscopicQuantitiesSimulationObserver> writeMQSimulationObserver(new WriteMacroscopicQuantitiesSimulationObserver(grid, visSch, outputPath, WbWriterVtkXmlBinary::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm));
-      //writeMQSimulationObserver->process(0);
+      //writeMQSimulationObserver->update(0);
 
       SPtr<UbScheduler> forceSch(new UbScheduler(100));
       SPtr<CalculateTorqueSimulationObserver> fp = make_shared<CalculateTorqueSimulationObserver>(grid, forceSch, outputPath + "/torque/TorqueRotor.txt", comm);
@@ -422,7 +422,7 @@ void bflow(string configname)
       SPtr<WriteThixotropyQuantitiesSimulationObserver> writeThixotropicMQSimulationObserver(new WriteThixotropyQuantitiesSimulationObserver(grid, visSch, outputPath, WbWriterVtkXmlBinary::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm));
 
       SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
+      SPtr<Simulation> calculator(new Simulation(grid, stepGhostLayer, endTime));
       calculator->addSimulationObserver(npr);
       calculator->addSimulationObserver(fp);
       calculator->addSimulationObserver(fp2);
@@ -431,7 +431,7 @@ void bflow(string configname)
       //calculator->addSimulationObserver(restartSimulationObserver);
 
       if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
+      calculator->run();
       if (myid == 0) UBLOG(logINFO, "Simulation-end");
    }
    catch (std::exception& e)
diff --git a/apps/cpu/sphere/sphere.cpp b/apps/cpu/sphere/sphere.cpp
index c1fe99267ea46fccd558b09510ac50d22cc206c0..c9677c0a56d1ebedf451478714b61d5047ebf308 100644
--- a/apps/cpu/sphere/sphere.cpp
+++ b/apps/cpu/sphere/sphere.cpp
@@ -197,7 +197,7 @@ void run(string configname)
          //PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
          //grid->accept(pqPartVisitor);
 
-         ppblocks->process(0);
+         ppblocks->update(0);
          ppblocks.reset();
 
          unsigned long nob = grid->getNumberOfBlocks();
@@ -253,7 +253,7 @@ void run(string configname)
          SPtr<UbScheduler> geoSch(new UbScheduler(1));
          SPtr<SimulationObserver> ppgeo(
             new WriteBoundaryConditionsSimulationObserver(grid, geoSch, outputPath, WbWriterVtkXmlBinary::getInstance(), comm));
-         ppgeo->process(0);
+         ppgeo->update(0);
          ppgeo.reset();
 
          if (myid == 0) UBLOG(logINFO, "Preprozess - end");
@@ -293,14 +293,14 @@ void run(string configname)
       fp->addInteractor(sphereInt);
 
       SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endstep));
+      SPtr<Simulation> calculator(new Simulation(grid, stepGhostLayer, endstep));
       calculator->addSimulationObserver(npr);
       calculator->addSimulationObserver(fp);
       calculator->addSimulationObserver(writeMQSimulationObserver);
 
 
       if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
+      calculator->run();
       if (myid == 0) UBLOG(logINFO, "Simulation-end");
 
    }
diff --git a/src/cpu/LiggghtsCoupling/LiggghtsCouplingSimulationObserver.cpp b/src/cpu/LiggghtsCoupling/LiggghtsCouplingSimulationObserver.cpp
index 3c4a021cc976ba364b409619c144e284e3c1e2f4..a3332aed105cb4371f1e2c19c79d7181b09df952 100644
--- a/src/cpu/LiggghtsCoupling/LiggghtsCouplingSimulationObserver.cpp
+++ b/src/cpu/LiggghtsCoupling/LiggghtsCouplingSimulationObserver.cpp
@@ -25,7 +25,7 @@ LiggghtsCouplingSimulationObserver::~LiggghtsCouplingSimulationObserver()
 {
 }
 
-void LiggghtsCouplingSimulationObserver::process(double actualTimeStep)
+void LiggghtsCouplingSimulationObserver::update(double actualTimeStep)
 { 
     if (comm->getProcessID() == 0)
         std::cout << "LiggghtsCouplingSimulationObserver step: " << actualTimeStep << "\n";
diff --git a/src/cpu/LiggghtsCoupling/LiggghtsCouplingSimulationObserver.h b/src/cpu/LiggghtsCoupling/LiggghtsCouplingSimulationObserver.h
index 7962086538dbdfe91b20dd67cb7f35abfccdcf41..0ae1786dd72346456621f3f4cf584679fca64f42 100644
--- a/src/cpu/LiggghtsCoupling/LiggghtsCouplingSimulationObserver.h
+++ b/src/cpu/LiggghtsCoupling/LiggghtsCouplingSimulationObserver.h
@@ -65,7 +65,7 @@ public:
                                 LiggghtsCouplingWrapper &wrapper, int demSteps, SPtr<LBMUnitConverter> units);
     virtual ~LiggghtsCouplingSimulationObserver();
 
-    void process(double actualTimeStep) override;
+    void update(double actualTimeStep) override;
 
     
 protected:
diff --git a/src/cpu/VirtualFluids.h b/src/cpu/VirtualFluids.h
index 69b768e9851d1bdf27542426fed91c49867c1e24..c73d535490bc38ff8990060d027e0fbd2c8644d4 100644
--- a/src/cpu/VirtualFluids.h
+++ b/src/cpu/VirtualFluids.h
@@ -173,10 +173,9 @@
 #include <Data/EsoTwistD3Q27System.h>
 #include <Data/VoidData3D.h>
 
-#include <Grid/BasicCalculator.h>
-#include <Grid/Block3D.h>
-#include <Grid/Calculator.h>
-#include <Grid/Grid3D.h>
+#include <Simulation/Block3D.h>
+#include <Simulation/Simulation.h>
+#include <Simulation/Grid3D.h>
 
 #include <Interactors/D3Q27Interactor.h>
 #include <Interactors/D3Q27TriFaceMeshInteractor.h>
diff --git a/src/cpu/VirtualFluidsCore/CMakeLists.txt b/src/cpu/VirtualFluidsCore/CMakeLists.txt
index 75db42ccb7d321994696478d7738b3a38f99a641..6554189c337f2534704368c47565c3d4b0378f80 100644
--- a/src/cpu/VirtualFluidsCore/CMakeLists.txt
+++ b/src/cpu/VirtualFluidsCore/CMakeLists.txt
@@ -40,7 +40,7 @@ target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Da
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Interactors)
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/LBM)
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Parallel)
-target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Grid)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Simulation)
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Visitors)
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/SimulationObservers)
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Utilities)
diff --git a/src/cpu/VirtualFluidsCore/Grid/BasicCalculator.h b/src/cpu/VirtualFluidsCore/Grid/BasicCalculator.h
deleted file mode 100644
index 3ef1f4c712e552ea5d5b5e82306e2bd94d74d7ab..0000000000000000000000000000000000000000
--- a/src/cpu/VirtualFluidsCore/Grid/BasicCalculator.h
+++ /dev/null
@@ -1,69 +0,0 @@
-//=======================================================================================
-// ____          ____    __    ______     __________   __      __       __        __
-// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
-//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
-//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
-//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
-//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
-//      \    \  |    |   ________________________________________________________________
-//       \    \ |    |  |  ______________________________________________________________|
-//        \    \|    |  |  |         __          __     __     __     ______      _______
-//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
-//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
-//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
-//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
-//
-//  This file is part of VirtualFluids. VirtualFluids is free software: you can
-//  redistribute it and/or modify it under the terms of the GNU General Public
-//  License as published by the Free Software Foundation, either version 3 of
-//  the License, or (at your option) any later version.
-//
-//  VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
-//  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-//  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-//  for more details.
-//
-//  You should have received a copy of the GNU General Public License along
-//  with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
-//
-//! \file BasicCalculator.h
-//! \ingroup Grid
-//! \author Konstantin Kutscher
-//=======================================================================================
-
-#ifndef BasicCalculator_h__
-#define BasicCalculator_h__
-
-#include "Calculator.h"
-
-class Block3DConnector;
-
-//! \class BasicCalculator
-//! \brief Class implements basic functionality with MPI + OpenMP parallelization for main calculation loop
-//! \author  Konstantin Kutscher
-
-class BasicCalculator : public Calculator
-{
-public:
-    BasicCalculator(SPtr<Grid3D> grid, SPtr<UbScheduler> additionalGhostLayerUpdateScheduler, int numberOfTimeSteps);
-    ~BasicCalculator() override = default;
-    void calculate() override;
-
-protected:
-    void calculateBlocks(int startLevel, int maxInitLevel, int calcStep);
-    void swapDistributions(int startLevel, int maxInitLevel);
-    void exchangeBlockData(int startLevel, int maxInitLevel);
-    void connectorsPrepareLocal(std::vector<SPtr<Block3DConnector>> &connectors);
-    void connectorsSendLocal(std::vector<SPtr<Block3DConnector>> &connectors);
-    void connectorsReceiveLocal(std::vector<SPtr<Block3DConnector>> &connectors);
-    void connectorsPrepareRemote(std::vector<SPtr<Block3DConnector>> &connectors);
-    void connectorsSendRemote(std::vector<SPtr<Block3DConnector>> &connectors);
-    void connectorsReceiveRemote(std::vector<SPtr<Block3DConnector>> &connectors);
-    void interpolation(int startLevel, int maxInitLevel);
-    void applyPreCollisionBC(int startLevel, int maxInitLevel);
-    void applyPostCollisionBC(int startLevel, int maxInitLevel);
-
-private:
-};
-
-#endif // BasicCalculator_h__
diff --git a/src/cpu/VirtualFluidsCore/Grid/Calculator.cpp b/src/cpu/VirtualFluidsCore/Grid/Calculator.cpp
deleted file mode 100644
index a0b55fc79e77a3b07f78ebac1fc485ba20aab358..0000000000000000000000000000000000000000
--- a/src/cpu/VirtualFluidsCore/Grid/Calculator.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-//=======================================================================================
-// ____          ____    __    ______     __________   __      __       __        __
-// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
-//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
-//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
-//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
-//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
-//      \    \  |    |   ________________________________________________________________
-//       \    \ |    |  |  ______________________________________________________________|
-//        \    \|    |  |  |         __          __     __     __     ______      _______
-//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
-//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
-//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
-//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
-//
-//  This file is part of VirtualFluids. VirtualFluids is free software: you can
-//  redistribute it and/or modify it under the terms of the GNU General Public
-//  License as published by the Free Software Foundation, either version 3 of
-//  the License, or (at your option) any later version.
-//
-//  VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
-//  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-//  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-//  for more details.
-//
-//  You should have received a copy of the GNU General Public License along
-//  with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
-//
-//! \file Calculator.cpp
-//! \ingroup Grid
-//! \author Konstantin Kutscher
-//=======================================================================================
-
-#include "Calculator.h"
-
-#include "Block3D.h"
-#include "Block3DConnector.h"
-#include "SimulationObserver.h"
-#include "Grid3D.h"
-#include "UbScheduler.h"
-
-#include <basics/utilities/UbException.h>
-
-Calculator::Calculator(SPtr<Grid3D> grid, SPtr<UbScheduler> additionalGhostLayerUpdateScheduler, int numberOfTimeSteps)
-    : grid(grid), additionalGhostLayerUpdateScheduler(additionalGhostLayerUpdateScheduler),
-      numberOfTimeSteps(numberOfTimeSteps)
-{
-    this->grid    = grid;
-    startTimeStep = int(grid->getTimeStep()) + 1;
-    minLevel      = grid->getCoarsestInitializedLevel();
-    maxLevel      = grid->getFinestInitializedLevel();
-    if (maxLevel > 0)
-        refinement = true;
-    else
-        refinement = false;
-    blocks.resize(maxLevel + 1);
-    localConns.resize(maxLevel + 1);
-    remoteConns.resize(maxLevel + 1);
-    localInterConns.resize(maxLevel);
-    remoteInterConns.resize(maxLevel);
-
-    int gridRank = grid->getRank();
-
-    for (int level = minLevel; level <= maxLevel; level++) {
-        std::vector<SPtr<Block3D>> blockVector;
-        grid->getBlocks(level, gridRank, true, blockVector);
-        for (const auto &block : blockVector)
-            if (block)
-                blocks[block->getLevel()].push_back(block);
-    }
-
-    initLocalConnectors();
-    initRemoteConnectors();
-}
-//////////////////////////////////////////////////////////////////////////
-Calculator::~Calculator() = default;
-//////////////////////////////////////////////////////////////////////////
-void Calculator::addSimulationObserver(SPtr<SimulationObserver> coProcessor) { coProcessors.push_back(coProcessor); }
-//////////////////////////////////////////////////////////////////////////
-void Calculator::coProcess(real step)
-{
-    for (SPtr<SimulationObserver> cp : coProcessors) {
-        cp->process(step);
-    }
-}
-//////////////////////////////////////////////////////////////////////////
-void Calculator::initLocalConnectors()
-{
-    UBLOG(logDEBUG1, "Calculator::initLocalConnectors() - start");
-
-    for (int l = minLevel; l <= maxLevel; l++) {
-        for (SPtr<Block3D> block : blocks[l]) {
-            block->pushBackLocalSameLevelConnectors(localConns[l]);
-
-            if (l != maxLevel)
-                block->pushBackLocalInterpolationConnectorsCF(localInterConns[l]);
-        }
-        if (l != maxLevel) {
-            for (SPtr<Block3D> block : blocks[l + 1]) {
-                block->pushBackLocalInterpolationConnectorsFC(localInterConns[l]);
-            }
-        }
-        UBLOG(logDEBUG5, "Calculator::initConnectors()-initConnectors(localConns[" << l << "])");
-        initConnectors(localConns[l]);
-
-        if (l != maxLevel) {
-            UBLOG(logDEBUG5, "Calculator::initConnectors()-initConnectors(localInterConns[" << l << "])");
-            initConnectors(localInterConns[l]);
-        }
-    }
-
-    UBLOG(logDEBUG1, "Calculator::initLocalConnectors() - end");
-}
-//////////////////////////////////////////////////////////////////////////
-void Calculator::initRemoteConnectors()
-{
-    std::vector<std::vector<SPtr<Block3DConnector>>> remoteInterConnsCF;
-    std::vector<std::vector<SPtr<Block3DConnector>>> remoteInterConnsFC;
-    remoteInterConnsCF.resize(maxLevel + 1);
-    remoteInterConnsFC.resize(maxLevel + 1);
-
-    for (int l = minLevel; l <= maxLevel; l++) {
-        std::vector<SPtr<Block3D>> blockVector;
-        // grid->getBlocks(level, gridRank, true, blockVector);
-        grid->getBlocks(l, blockVector);
-        for (SPtr<Block3D> block : blockVector) {
-            int block_level = block->getLevel();
-            block->pushBackRemoteSameLevelConnectors(remoteConns[block_level]);
-
-            block->pushBackRemoteInterpolationConnectorsCF(remoteInterConnsCF[block_level]);
-            block->pushBackRemoteInterpolationConnectorsFC(remoteInterConnsFC[block_level]);
-        }
-    }
-
-    for (int l = minLevel; l <= maxLevel; l++) {
-        UBLOG(logDEBUG5, "Calculator::initRemoteConnectors()-initConnectors(remoteConns[" << l << "])");
-        initConnectors(remoteConns[l]);
-        if (l != maxLevel) {
-            for (size_t i = 0; i < remoteInterConnsCF[l].size(); i++)
-                remoteInterConns[l].push_back(remoteInterConnsCF[l][i]);
-            for (size_t i = 0; i < remoteInterConnsFC[l + 1].size(); i++)
-                remoteInterConns[l].push_back(remoteInterConnsFC[l + 1][i]);
-        }
-    }
-    //////////////////////////////////////////////////////////////////////////
-    // UBLOG(logDEBUG5, "Calculator::initConnectors() - connectoren initialisieren - start");
-    for (int l = minLevel; l <= maxLevel; l++) {
-        if (l != maxLevel) {
-            UBLOG(logDEBUG5, "Calculator::initRemoteConnectors()-initConnectors(remoteInterConns[" << l << "])");
-            for (SPtr<Block3DConnector> c : remoteInterConns[l])
-                c->init();
-        }
-    }
-    // UBLOG(logDEBUG5, "Calculator::initConnectors() - connectoren initialisieren - end");
-    //////////////////////////////////////////////////////////////////////////
-    // sendTransmitterDataSize
-    // UBLOG(logDEBUG5, "Calculator::initConnectors() - sendTransmitterDataSize - start");
-    for (int l = minLevel; l <= maxLevel; l++) {
-        if (l != maxLevel) {
-            UBLOG(logDEBUG5,
-                  "Calculator::initRemoteConnectors()-sendTransmitterDataSize(remoteInterConns[" << l << "])");
-            for (SPtr<Block3DConnector> c : remoteInterConns[l])
-                c->sendTransmitterDataSize();
-        }
-    }
-    // UBLOG(logDEBUG5, "Calculator::initConnectors() - sendTransmitterDataSize - end");
-    //////////////////////////////////////////////////////////////////////////
-    // receiveTransmitterDataSize
-    // wenn er hier bei verteilten berechnungen stopped, dann ist vermutlich auf einer seite ein nicht aktiver block!!!
-    // UBLOG(logDEBUG5, "Calculator::initConnectors() - receiveTransmitterDataSize - start");
-    for (int l = minLevel; l <= maxLevel; l++) {
-        if (l != maxLevel) {
-            UBLOG(logDEBUG5,
-                  "Calculator::initRemoteConnectors()-receiveTransmitterDataSize(remoteInterConns[" << l << "])");
-            for (SPtr<Block3DConnector> c : remoteInterConns[l])
-                c->receiveTransmitterDataSize();
-        }
-    }
-    // UBLOG(logDEBUG5, "Calculator::initConnectors() - receiveTransmitterDataSize - end");
-    //////////////////////////////////////////////////////////////////////////
-}
-//////////////////////////////////////////////////////////////////////////
-void Calculator::initConnectors(std::vector<SPtr<Block3DConnector>> &connectors)
-{
-    UBLOG(logDEBUG1, "Calculator::initConnectors() - start");
-
-    // initialization
-    //////////////////////////////////////////////////////////////////////////
-    // initialize connectors
-    UBLOG(logDEBUG5, "Calculator::initConnectors() - connectoren initialisieren - start");
-    for (SPtr<Block3DConnector> c : connectors)
-        c->init();
-    UBLOG(logDEBUG5, "Calculator::initConnectors() - connectoren initialisieren - end");
-    //////////////////////////////////////////////////////////////////////////
-    // sendTransmitterDataSize
-    UBLOG(logDEBUG5, "Calculator::initConnectors() - sendTransmitterDataSize - start");
-    for (SPtr<Block3DConnector> c : connectors)
-        c->sendTransmitterDataSize();
-    UBLOG(logDEBUG5, "Calculator::initConnectors() - sendTransmitterDataSize - end");
-    //////////////////////////////////////////////////////////////////////////
-    // receiveTransmitterDataSize
-    // wenn er hier bei verteilten berechnungen stopped, dann ist vermutlich auf einer seite ein nicht aktiver block!!!
-    UBLOG(logDEBUG5, "Calculator::initConnectors() - receiveTransmitterDataSize - start");
-    for (SPtr<Block3DConnector> c : connectors)
-        c->receiveTransmitterDataSize();
-    UBLOG(logDEBUG5, "Calculator::initConnectors() - receiveTransmitterDataSize - end");
-
-    UBLOG(logDEBUG1, "Calculator::initConnectors() - end");
-}
-//////////////////////////////////////////////////////////////////////////
-void Calculator::deleteBlocks()
-{
-    for (std::vector<SPtr<Block3D>> &bs : blocks)
-        bs.resize(0);
-}
-//////////////////////////////////////////////////////////////////////////
-void Calculator::deleteConnectors()
-{
-    deleteConnectors(localConns);
-    deleteConnectors(remoteConns);
-
-    deleteConnectors(localInterConns);
-    deleteConnectors(remoteInterConns);
-}
-//////////////////////////////////////////////////////////////////////////
-void Calculator::deleteConnectors(std::vector<std::vector<SPtr<Block3DConnector>>> &conns)
-{
-    for (std::vector<SPtr<Block3DConnector>> &c : conns)
-        c.resize(0);
-}
-//////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/Parallel/ZoltanPartitioner.cpp b/src/cpu/VirtualFluidsCore/Parallel/ZoltanPartitioner.cpp
index 220fe67c5d0c34ecb40e4066c68d84649ca0dfc1..820af332b19754ee2a4325f0328bdb01de3d784b 100644
--- a/src/cpu/VirtualFluidsCore/Parallel/ZoltanPartitioner.cpp
+++ b/src/cpu/VirtualFluidsCore/Parallel/ZoltanPartitioner.cpp
@@ -76,7 +76,7 @@ void ZoltanPartitioner::partition()
                                  &exportToPart);    /* Partition to which each vertex will belong */
 
     if (rc != ZOLTAN_OK) {
-        cout << "Partitioning failed on process " << rank << "\n" << endl;
+        cout << "Partitioning failed on update " << rank << "\n" << endl;
         MPI_Finalize();
         Zoltan_Destroy(&zz);
         exit(0);
diff --git a/src/cpu/VirtualFluidsCore/Grid/Block3D.cpp b/src/cpu/VirtualFluidsCore/Simulation/Block3D.cpp
similarity index 100%
rename from src/cpu/VirtualFluidsCore/Grid/Block3D.cpp
rename to src/cpu/VirtualFluidsCore/Simulation/Block3D.cpp
diff --git a/src/cpu/VirtualFluidsCore/Grid/Block3D.h b/src/cpu/VirtualFluidsCore/Simulation/Block3D.h
similarity index 100%
rename from src/cpu/VirtualFluidsCore/Grid/Block3D.h
rename to src/cpu/VirtualFluidsCore/Simulation/Block3D.h
diff --git a/src/cpu/VirtualFluidsCore/Grid/Grid3D.cpp b/src/cpu/VirtualFluidsCore/Simulation/Grid3D.cpp
similarity index 100%
rename from src/cpu/VirtualFluidsCore/Grid/Grid3D.cpp
rename to src/cpu/VirtualFluidsCore/Simulation/Grid3D.cpp
diff --git a/src/cpu/VirtualFluidsCore/Grid/Grid3D.h b/src/cpu/VirtualFluidsCore/Simulation/Grid3D.h
similarity index 100%
rename from src/cpu/VirtualFluidsCore/Grid/Grid3D.h
rename to src/cpu/VirtualFluidsCore/Simulation/Grid3D.h
diff --git a/src/cpu/VirtualFluidsCore/Grid/BasicCalculator.cpp b/src/cpu/VirtualFluidsCore/Simulation/Simulation.cpp
similarity index 54%
rename from src/cpu/VirtualFluidsCore/Grid/BasicCalculator.cpp
rename to src/cpu/VirtualFluidsCore/Simulation/Simulation.cpp
index b4874366c947938423d5683f72dff19b0e1cc182..e3b0169847d43efd62bdf7dabf80fdc009027d46 100644
--- a/src/cpu/VirtualFluidsCore/Grid/BasicCalculator.cpp
+++ b/src/cpu/VirtualFluidsCore/Simulation/Simulation.cpp
@@ -26,16 +26,19 @@
 //  You should have received a copy of the GNU General Public License along
 //  with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
 //
-//! \file BasicCalculator.cpp
+//! \file Simulation.cpp
 //! \ingroup Grid
 //! \author Konstantin Kutscher
 //=======================================================================================
 
-#include "BasicCalculator.h"
+#include "Simulation.h"
 
-#include "BCSet.h"
 #include "Block3D.h"
 #include "Block3DConnector.h"
+#include "SimulationObserver.h"
+#include "Grid3D.h"
+#include "BCSet.h"
+#include "Block3DConnector.h"
 #include "LBMKernel.h"
 #include "UbLogger.h"
 #include "UbScheduler.h"
@@ -45,22 +48,207 @@
 #endif
 #define OMP_SCHEDULE guided
 
-//#define TIMING
-//#include "UbTiming.h"
+// #define TIMING
+// #include "UbTiming.h"
+
+#include <basics/utilities/UbException.h>
+
+
+Simulation::Simulation(SPtr<Grid3D> grid, SPtr<UbScheduler> additionalGhostLayerUpdateScheduler, int numberOfTimeSteps)
+    : grid(grid), additionalGhostLayerUpdateScheduler(additionalGhostLayerUpdateScheduler),
+      numberOfTimeSteps(numberOfTimeSteps)
+{
+    this->grid    = grid;
+    startTimeStep = int(grid->getTimeStep()) + 1;
+    minLevel      = grid->getCoarsestInitializedLevel();
+    maxLevel      = grid->getFinestInitializedLevel();
+    if (maxLevel > 0)
+        refinement = true;
+    else
+        refinement = false;
+    blocks.resize(maxLevel + 1);
+    localConns.resize(maxLevel + 1);
+    remoteConns.resize(maxLevel + 1);
+    localInterConns.resize(maxLevel);
+    remoteInterConns.resize(maxLevel);
+
+    int gridRank = grid->getRank();
+
+    for (int level = minLevel; level <= maxLevel; level++) {
+        std::vector<SPtr<Block3D>> blockVector;
+        grid->getBlocks(level, gridRank, true, blockVector);
+        for (const auto &block : blockVector)
+            if (block)
+                blocks[block->getLevel()].push_back(block);
+    }
+
+    initLocalConnectors();
+    initRemoteConnectors();
+}
+//////////////////////////////////////////////////////////////////////////
+Simulation::~Simulation() = default;
+//////////////////////////////////////////////////////////////////////////
+void Simulation::addSimulationObserver(SPtr<SimulationObserver> coProcessor) { simulationObserver.push_back(coProcessor); }
+//////////////////////////////////////////////////////////////////////////
+void Simulation::notifyObservers(real step)
+{
+    for (SPtr<SimulationObserver> cp : simulationObserver) {
+        cp->update(step);
+    }
+}
+//////////////////////////////////////////////////////////////////////////
+void Simulation::initLocalConnectors()
+{
+    UBLOG(logDEBUG1, "Simulation::initLocalConnectors() - start");
+
+    for (int l = minLevel; l <= maxLevel; l++) {
+        for (SPtr<Block3D> block : blocks[l]) {
+            block->pushBackLocalSameLevelConnectors(localConns[l]);
+
+            if (l != maxLevel)
+                block->pushBackLocalInterpolationConnectorsCF(localInterConns[l]);
+        }
+        if (l != maxLevel) {
+            for (SPtr<Block3D> block : blocks[l + 1]) {
+                block->pushBackLocalInterpolationConnectorsFC(localInterConns[l]);
+            }
+        }
+        UBLOG(logDEBUG5, "Simulation::initConnectors()-initConnectors(localConns[" << l << "])");
+        initConnectors(localConns[l]);
+
+        if (l != maxLevel) {
+            UBLOG(logDEBUG5, "Simulation::initConnectors()-initConnectors(localInterConns[" << l << "])");
+            initConnectors(localInterConns[l]);
+        }
+    }
+
+    UBLOG(logDEBUG1, "Simulation::initLocalConnectors() - end");
+}
+//////////////////////////////////////////////////////////////////////////
+void Simulation::initRemoteConnectors()
+{
+    std::vector<std::vector<SPtr<Block3DConnector>>> remoteInterConnsCF;
+    std::vector<std::vector<SPtr<Block3DConnector>>> remoteInterConnsFC;
+    remoteInterConnsCF.resize(maxLevel + 1);
+    remoteInterConnsFC.resize(maxLevel + 1);
+
+    for (int l = minLevel; l <= maxLevel; l++) {
+        std::vector<SPtr<Block3D>> blockVector;
+        // grid->getBlocks(level, gridRank, true, blockVector);
+        grid->getBlocks(l, blockVector);
+        for (SPtr<Block3D> block : blockVector) {
+            int block_level = block->getLevel();
+            block->pushBackRemoteSameLevelConnectors(remoteConns[block_level]);
+
+            block->pushBackRemoteInterpolationConnectorsCF(remoteInterConnsCF[block_level]);
+            block->pushBackRemoteInterpolationConnectorsFC(remoteInterConnsFC[block_level]);
+        }
+    }
 
-BasicCalculator::BasicCalculator(SPtr<Grid3D> grid, SPtr<UbScheduler> additionalGhostLayerUpdateScheduler,
-                                 int numberOfTimeSteps)
-    : Calculator(grid, additionalGhostLayerUpdateScheduler, numberOfTimeSteps)
+    for (int l = minLevel; l <= maxLevel; l++) {
+        UBLOG(logDEBUG5, "Simulation::initRemoteConnectors()-initConnectors(remoteConns[" << l << "])");
+        initConnectors(remoteConns[l]);
+        if (l != maxLevel) {
+            for (size_t i = 0; i < remoteInterConnsCF[l].size(); i++)
+                remoteInterConns[l].push_back(remoteInterConnsCF[l][i]);
+            for (size_t i = 0; i < remoteInterConnsFC[l + 1].size(); i++)
+                remoteInterConns[l].push_back(remoteInterConnsFC[l + 1][i]);
+        }
+    }
+    //////////////////////////////////////////////////////////////////////////
+    // UBLOG(logDEBUG5, "Simulation::initConnectors() - connectoren initialisieren - start");
+    for (int l = minLevel; l <= maxLevel; l++) {
+        if (l != maxLevel) {
+            UBLOG(logDEBUG5, "Simulation::initRemoteConnectors()-initConnectors(remoteInterConns[" << l << "])");
+            for (SPtr<Block3DConnector> c : remoteInterConns[l])
+                c->init();
+        }
+    }
+    // UBLOG(logDEBUG5, "Simulation::initConnectors() - connectoren initialisieren - end");
+    //////////////////////////////////////////////////////////////////////////
+    // sendTransmitterDataSize
+    // UBLOG(logDEBUG5, "Simulation::initConnectors() - sendTransmitterDataSize - start");
+    for (int l = minLevel; l <= maxLevel; l++) {
+        if (l != maxLevel) {
+            UBLOG(logDEBUG5,
+                  "Simulation::initRemoteConnectors()-sendTransmitterDataSize(remoteInterConns[" << l << "])");
+            for (SPtr<Block3DConnector> c : remoteInterConns[l])
+                c->sendTransmitterDataSize();
+        }
+    }
+    // UBLOG(logDEBUG5, "Simulation::initConnectors() - sendTransmitterDataSize - end");
+    //////////////////////////////////////////////////////////////////////////
+    // receiveTransmitterDataSize
+    // if it stops here during distributed calculations, then there is probably an inactive block on one side!!!
+    // UBLOG(logDEBUG5, "Simulation::initConnectors() - receiveTransmitterDataSize - start");
+    for (int l = minLevel; l <= maxLevel; l++) {
+        if (l != maxLevel) {
+            UBLOG(logDEBUG5,
+                  "Simulation::initRemoteConnectors()-receiveTransmitterDataSize(remoteInterConns[" << l << "])");
+            for (SPtr<Block3DConnector> c : remoteInterConns[l])
+                c->receiveTransmitterDataSize();
+        }
+    }
+    // UBLOG(logDEBUG5, "Simulation::initConnectors() - receiveTransmitterDataSize - end");
+    //////////////////////////////////////////////////////////////////////////
+}
+//////////////////////////////////////////////////////////////////////////
+void Simulation::initConnectors(std::vector<SPtr<Block3DConnector>> &connectors)
 {
+    UBLOG(logDEBUG1, "Simulation::initConnectors() - start");
+
+    // initialization
+    //////////////////////////////////////////////////////////////////////////
+    // initialize connectors
+    UBLOG(logDEBUG5, "Simulation::initConnectors() - connectoren initialisieren - start");
+    for (SPtr<Block3DConnector> c : connectors)
+        c->init();
+    UBLOG(logDEBUG5, "Simulation::initConnectors() - connectoren initialisieren - end");
+    //////////////////////////////////////////////////////////////////////////
+    // sendTransmitterDataSize
+    UBLOG(logDEBUG5, "Simulation::initConnectors() - sendTransmitterDataSize - start");
+    for (SPtr<Block3DConnector> c : connectors)
+        c->sendTransmitterDataSize();
+    UBLOG(logDEBUG5, "Simulation::initConnectors() - sendTransmitterDataSize - end");
+    //////////////////////////////////////////////////////////////////////////
+    // receiveTransmitterDataSize
+    // if it stops here during distributed calculations, then there is probably an inactive block on one side!!!
+    UBLOG(logDEBUG5, "Simulation::initConnectors() - receiveTransmitterDataSize - start");
+    for (SPtr<Block3DConnector> c : connectors)
+        c->receiveTransmitterDataSize();
+    UBLOG(logDEBUG5, "Simulation::initConnectors() - receiveTransmitterDataSize - end");
+
+    UBLOG(logDEBUG1, "Simulation::initConnectors() - end");
+}
+//////////////////////////////////////////////////////////////////////////
+void Simulation::deleteBlocks()
+{
+    for (std::vector<SPtr<Block3D>> &bs : blocks)
+        bs.resize(0);
+}
+//////////////////////////////////////////////////////////////////////////
+void Simulation::deleteConnectors()
+{
+    deleteConnectors(localConns);
+    deleteConnectors(remoteConns);
+
+    deleteConnectors(localInterConns);
+    deleteConnectors(remoteInterConns);
 }
 //////////////////////////////////////////////////////////////////////////
-void BasicCalculator::calculate()
+void Simulation::deleteConnectors(std::vector<std::vector<SPtr<Block3DConnector>>> &conns)
 {
-    UBLOG(logDEBUG1, "OMPCalculator::calculate() - started");
+    for (std::vector<SPtr<Block3DConnector>> &c : conns)
+        c.resize(0);
+}
+//////////////////////////////////////////////////////////////////////////
+void Simulation::run()
+{
+    UBLOG(logDEBUG1, "OMPSimulation::calculate() - started");
     int calcStep = 0;
     try {
-        int minInitLevel       = minLevel;
-        int maxInitLevel       = maxLevel - minLevel;
+        int minInitLevel = minLevel;
+        int maxInitLevel = maxLevel - minLevel;
         int straightStartLevel = minInitLevel;
         int internalIterations = 1 << (maxInitLevel - minInitLevel);
         int threshold;
@@ -75,16 +263,15 @@ void BasicCalculator::calculate()
 #ifdef TIMING
             UBLOG(logINFO, "calcStep = " << calcStep);
 #endif
-         //////////////////////////////////////////////////////////////////////////
+            //////////////////////////////////////////////////////////////////////////
 
-         for (int staggeredStep = 1; staggeredStep <= internalIterations; staggeredStep++)
-         {
-            if (staggeredStep == internalIterations) straightStartLevel = minInitLevel;
-            else
-            {
-               for (straightStartLevel = maxInitLevel, threshold = 1;
-                  (staggeredStep & threshold) != threshold; straightStartLevel--, threshold <<= 1);
-            }
+            for (int staggeredStep = 1; staggeredStep <= internalIterations; staggeredStep++) {
+                if (staggeredStep == internalIterations)
+                    straightStartLevel = minInitLevel;
+                else {
+                    for (straightStartLevel = maxInitLevel, threshold = 1; (staggeredStep & threshold) != threshold; straightStartLevel--, threshold <<= 1)
+                        ;
+                }
 #ifdef TIMING
                 timer.resetAndStart();
 #endif
@@ -124,8 +311,7 @@ void BasicCalculator::calculate()
 #endif
                 //////////////////////////////////////////////////////////////////////////
                 if (refinement) {
-                    if (straightStartLevel < maxInitLevel)
-                        exchangeBlockData(straightStartLevel, maxInitLevel);
+                    if (straightStartLevel < maxInitLevel) exchangeBlockData(straightStartLevel, maxInitLevel);
                         //////////////////////////////////////////////////////////////////////////
 #ifdef TIMING
                     time[4] = timer.stop();
@@ -147,10 +333,10 @@ void BasicCalculator::calculate()
             if (additionalGhostLayerUpdateScheduler->isDue(calcStep)) {
                 exchangeBlockData(straightStartLevel, maxInitLevel);
             }
-            coProcess((real)(calcStep));
+            notifyObservers((real)(calcStep));
             // now ghost nodes have actual values
         }
-        UBLOG(logDEBUG1, "OMPCalculator::calculate() - stoped");
+        UBLOG(logDEBUG1, "OMPSimulation::calculate() - stoped");
     } catch (std::exception &e) {
         UBLOG(logERROR, e.what());
         UBLOG(logERROR, " step = " << calcStep);
@@ -167,7 +353,7 @@ void BasicCalculator::calculate()
     }
 }
 //////////////////////////////////////////////////////////////////////////
-void BasicCalculator::calculateBlocks(int startLevel, int maxInitLevel, int calcStep)
+void Simulation::calculateBlocks(int startLevel, int maxInitLevel, int calcStep)
 {
 #ifdef _OPENMP
 #pragma omp parallel
@@ -199,7 +385,7 @@ void BasicCalculator::calculateBlocks(int startLevel, int maxInitLevel, int calc
     }
 }
 //////////////////////////////////////////////////////////////////////////
-void BasicCalculator::exchangeBlockData(int startLevel, int maxInitLevel)
+void Simulation::exchangeBlockData(int startLevel, int maxInitLevel)
 {
     // startLevel bis maxInitLevel
     for (int level = startLevel; level <= maxInitLevel; level++) {
@@ -213,7 +399,7 @@ void BasicCalculator::exchangeBlockData(int startLevel, int maxInitLevel)
     }
 }
 //////////////////////////////////////////////////////////////////////////
-void BasicCalculator::swapDistributions(int startLevel, int maxInitLevel)
+void Simulation::swapDistributions(int startLevel, int maxInitLevel)
 {
 #ifdef _OPENMP
 #pragma omp parallel
@@ -232,7 +418,7 @@ void BasicCalculator::swapDistributions(int startLevel, int maxInitLevel)
     }
 }
 //////////////////////////////////////////////////////////////////////////
-void BasicCalculator::connectorsPrepareLocal(std::vector<SPtr<Block3DConnector>> &connectors)
+void Simulation::connectorsPrepareLocal(std::vector<SPtr<Block3DConnector>> &connectors)
 {
     int size = (int)connectors.size();
 #ifdef _OPENMP
@@ -249,7 +435,7 @@ void BasicCalculator::connectorsPrepareLocal(std::vector<SPtr<Block3DConnector>>
     }
 }
 //////////////////////////////////////////////////////////////////////////
-void BasicCalculator::connectorsSendLocal(std::vector<SPtr<Block3DConnector>> &connectors)
+void Simulation::connectorsSendLocal(std::vector<SPtr<Block3DConnector>> &connectors)
 {
     int size = (int)connectors.size();
 #ifdef _OPENMP
@@ -266,7 +452,7 @@ void BasicCalculator::connectorsSendLocal(std::vector<SPtr<Block3DConnector>> &c
     }
 }
 //////////////////////////////////////////////////////////////////////////
-void BasicCalculator::connectorsReceiveLocal(std::vector<SPtr<Block3DConnector>> &connectors)
+void Simulation::connectorsReceiveLocal(std::vector<SPtr<Block3DConnector>> &connectors)
 {
     int size = (int)connectors.size();
 #ifdef _OPENMP
@@ -277,7 +463,7 @@ void BasicCalculator::connectorsReceiveLocal(std::vector<SPtr<Block3DConnector>>
         connectors[i]->distributeReceiveVectors();
     }
 }
-void BasicCalculator::connectorsPrepareRemote(std::vector<SPtr<Block3DConnector>> &connectors)
+void Simulation::connectorsPrepareRemote(std::vector<SPtr<Block3DConnector>> &connectors)
 {
     int size = (int)connectors.size();
     for (int i = 0; i < size; i++) {
@@ -286,7 +472,7 @@ void BasicCalculator::connectorsPrepareRemote(std::vector<SPtr<Block3DConnector>
     }
 }
 //////////////////////////////////////////////////////////////////////////
-void BasicCalculator::connectorsSendRemote(std::vector<SPtr<Block3DConnector>> &connectors)
+void Simulation::connectorsSendRemote(std::vector<SPtr<Block3DConnector>> &connectors)
 {
     int size = (int)connectors.size();
     for (int i = 0; i < size; i++) {
@@ -295,7 +481,7 @@ void BasicCalculator::connectorsSendRemote(std::vector<SPtr<Block3DConnector>> &
     }
 }
 //////////////////////////////////////////////////////////////////////////
-void BasicCalculator::connectorsReceiveRemote(std::vector<SPtr<Block3DConnector>> &connectors)
+void Simulation::connectorsReceiveRemote(std::vector<SPtr<Block3DConnector>> &connectors)
 {
     int size = (int)connectors.size();
     for (int i = 0; i < size; i++) {
@@ -304,7 +490,7 @@ void BasicCalculator::connectorsReceiveRemote(std::vector<SPtr<Block3DConnector>
     }
 }
 //////////////////////////////////////////////////////////////////////////
-void BasicCalculator::interpolation(int startLevel, int maxInitLevel)
+void Simulation::interpolation(int startLevel, int maxInitLevel)
 {
     for (int level = startLevel; level < maxInitLevel; level++) {
         connectorsPrepareLocal(localInterConns[level]);
@@ -322,7 +508,7 @@ void BasicCalculator::interpolation(int startLevel, int maxInitLevel)
     }
 }
 //////////////////////////////////////////////////////////////////////////
-void BasicCalculator::applyPreCollisionBC(int startLevel, int maxInitLevel)
+void Simulation::applyPreCollisionBC(int startLevel, int maxInitLevel)
 {
     // from startLevel to maxInitLevel
     for (int level = startLevel; level <= maxInitLevel; level++) {
@@ -347,7 +533,7 @@ void BasicCalculator::applyPreCollisionBC(int startLevel, int maxInitLevel)
     }
 }
 //////////////////////////////////////////////////////////////////////////
-void BasicCalculator::applyPostCollisionBC(int startLevel, int maxInitLevel)
+void Simulation::applyPostCollisionBC(int startLevel, int maxInitLevel)
 {
     //  from startLevel to maxInitLevel
     for (int level = startLevel; level <= maxInitLevel; level++) {
@@ -370,4 +556,4 @@ void BasicCalculator::applyPostCollisionBC(int startLevel, int maxInitLevel)
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/src/cpu/VirtualFluidsCore/Grid/Calculator.h b/src/cpu/VirtualFluidsCore/Simulation/Simulation.h
similarity index 74%
rename from src/cpu/VirtualFluidsCore/Grid/Calculator.h
rename to src/cpu/VirtualFluidsCore/Simulation/Simulation.h
index 8ae810c7e895902999c0414c5ab28c5f9fff22e3..7b6aef20c9f693c1602891286652d9b65d408a64 100644
--- a/src/cpu/VirtualFluidsCore/Grid/Calculator.h
+++ b/src/cpu/VirtualFluidsCore/Simulation/Simulation.h
@@ -26,13 +26,13 @@
 //  You should have received a copy of the GNU General Public License along
 //  with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
 //
-//! \file Calculator.h
+//! \file Simulation.h
 //! \ingroup Grid
 //! \author Konstantin Kutscher
 //=======================================================================================
 
-#ifndef CALCULATOR_H
-#define CALCULATOR_H
+#ifndef Simulation_H
+#define Simulation_H
 
 #include <PointerDefinitions.h>
 #include <vector>
@@ -44,19 +44,19 @@ class Block3D;
 class Block3DConnector;
 class SimulationObserver;
 
-//! \class Calculator
-//! \brief A base class for main calculation loop
+//! \class Simulation
+//! \brief A base class for main simulation loop
 
-class Calculator
+class Simulation
 {
 public:
-    Calculator(SPtr<Grid3D> grid, SPtr<UbScheduler> additionalGhostLayerUpdateScheduler, int numberOfTimeSteps);
-    virtual ~Calculator();
+    Simulation(SPtr<Grid3D> grid, SPtr<UbScheduler> additionalGhostLayerUpdateScheduler, int numberOfTimeSteps);
+    virtual ~Simulation();
     //! control of coProcessors
     void addSimulationObserver(SPtr<SimulationObserver> coProcessor);
-    void coProcess(real step);
+    void notifyObservers(real step);
 
-    virtual void calculate() = 0;
+    virtual void run();
 
 protected:
     virtual void initLocalConnectors();
@@ -66,6 +66,19 @@ protected:
     void deleteConnectors();
     void deleteConnectors(std::vector<std::vector<SPtr<Block3DConnector>>> &conns);
 
+    void calculateBlocks(int startLevel, int maxInitLevel, int calcStep);
+    void swapDistributions(int startLevel, int maxInitLevel);
+    void exchangeBlockData(int startLevel, int maxInitLevel);
+    void connectorsPrepareLocal(std::vector<SPtr<Block3DConnector>> &connectors);
+    void connectorsSendLocal(std::vector<SPtr<Block3DConnector>> &connectors);
+    void connectorsReceiveLocal(std::vector<SPtr<Block3DConnector>> &connectors);
+    void connectorsPrepareRemote(std::vector<SPtr<Block3DConnector>> &connectors);
+    void connectorsSendRemote(std::vector<SPtr<Block3DConnector>> &connectors);
+    void connectorsReceiveRemote(std::vector<SPtr<Block3DConnector>> &connectors);
+    void interpolation(int startLevel, int maxInitLevel);
+    void applyPreCollisionBC(int startLevel, int maxInitLevel);
+    void applyPostCollisionBC(int startLevel, int maxInitLevel);
+
     int minLevel, maxLevel;
     int startTimeStep;
     int numberOfTimeSteps;
@@ -86,7 +99,7 @@ protected:
     std::vector<std::vector<SPtr<Block3DConnector>>> localInterConns;
     std::vector<std::vector<SPtr<Block3DConnector>>> remoteInterConns;
 
-    std::vector<SPtr<SimulationObserver>> coProcessors;
+    std::vector<SPtr<SimulationObserver>> simulationObserver;
 };
 
 #endif
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/AdjustForcingSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/AdjustForcingSimulationObserver.cpp
index af91e66fb0ff3ec073b9cee6e90529c1b5653777..2254b9b02ea383e18c654a7569f0e5b2e973c839 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/AdjustForcingSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/AdjustForcingSimulationObserver.cpp
@@ -71,7 +71,7 @@ AdjustForcingSimulationObserver::AdjustForcingSimulationObserver(SPtr<Grid3D> gr
 }
 
 //////////////////////////////////////////////////////////////////////////
-void AdjustForcingSimulationObserver::process(real step)
+void AdjustForcingSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/AdjustForcingSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/AdjustForcingSimulationObserver.h
index 72141c6dd4195b2f4439df1b7ac117a53f6ec9eb..9e570e34dc43fa025c47c3d3c29c0dad4a262b99 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/AdjustForcingSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/AdjustForcingSimulationObserver.h
@@ -24,7 +24,7 @@ public:
     AdjustForcingSimulationObserver(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string &path,
                              SPtr<IntegrateValuesHelper> integrateValues, real vTarged, std::shared_ptr<vf::mpi::Communicator> comm);
     //!< calls collect PostprocessData
-    void process(real step) override;
+    void update(real step) override;
 
 protected:
     //!< object that can compute spacial average values in 3D-subdomain.
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/AverageValuesSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/AverageValuesSimulationObserver.cpp
index 9dc2e93ee8d4dab1d4600c7e37bdfb0e8458c215..1adf3ad9944a49c8065756988e95ab837e9f6d15 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/AverageValuesSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/AverageValuesSimulationObserver.cpp
@@ -54,7 +54,7 @@ AverageValuesSimulationObserver::AverageValuesSimulationObserver(SPtr<Grid3D> gr
     // restartStep = 0.0;
 }
 //////////////////////////////////////////////////////////////////////////
-void AverageValuesSimulationObserver::process(real step)
+void AverageValuesSimulationObserver::update(real step)
 {
     // resetRMS(step);
     if (resetSchedulerRMS->isDue(step))
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/AverageValuesSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/AverageValuesSimulationObserver.h
index d406a018bed76096b30a29937549f0d9d7cf51e1..b5ce823ba3cedffd145d0d513c5acf715a631430 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/AverageValuesSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/AverageValuesSimulationObserver.h
@@ -29,7 +29,7 @@ public:
     AverageValuesSimulationObserver(SPtr<Grid3D> grid, const std::string &path, WbWriter *const writer, SPtr<UbScheduler> s,
                              SPtr<UbScheduler> Avs, SPtr<UbScheduler> rsMeans, SPtr<UbScheduler> rsRMS, bool restart);
     //! Make update
-    void process(real step) override;
+    void update(real step) override;
     //! Resets averaged velocity and RMS-values according to ResetSceduler
     void reset(real step);
 
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateForcesSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateForcesSimulationObserver.cpp
index 9189a4089756b0221d7334908d1178bbf376bad6..8610c5df9e4b56496c3dc3ba1c25fabfd355f294 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateForcesSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateForcesSimulationObserver.cpp
@@ -57,7 +57,7 @@ CalculateForcesSimulationObserver::CalculateForcesSimulationObserver(SPtr<Grid3D
 //////////////////////////////////////////////////////////////////////////
 CalculateForcesSimulationObserver::~CalculateForcesSimulationObserver() = default;
 //////////////////////////////////////////////////////////////////////////
-void CalculateForcesSimulationObserver::process(real step)
+void CalculateForcesSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateForcesSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateForcesSimulationObserver.h
index 4198b99ddb4b86de63ae127b2ca327bf7d25d223..02b76e77bc6bfb3ee375e79465f2d548226189cb 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateForcesSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateForcesSimulationObserver.h
@@ -33,7 +33,7 @@ public:
     CalculateForcesSimulationObserver(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string &path, std::shared_ptr<vf::mpi::Communicator> comm,
                                real v, real a);
     ~CalculateForcesSimulationObserver() override;
-    void process(real step) override;
+    void update(real step) override;
     void addInteractor(SPtr<D3Q27Interactor> interactor);
 
 protected:
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateTorqueSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateTorqueSimulationObserver.cpp
index 5cacf602f05f21ab3bd9a2e605b30211296e5248..6d2e1dfbc9c5a28f02d17fcc9d827287a87b30ee 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateTorqueSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateTorqueSimulationObserver.cpp
@@ -42,7 +42,7 @@ CalculateTorqueSimulationObserver::~CalculateTorqueSimulationObserver()
 
 }
 //////////////////////////////////////////////////////////////////////////
-void CalculateTorqueSimulationObserver::process( real step )
+void CalculateTorqueSimulationObserver::update( real step )
 {
    if(scheduler->isDue(step) )
       collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateTorqueSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateTorqueSimulationObserver.h
index 75d840ed3fd64bd1f36dcc9f5bb993d4efef0095..d0cd9c41d5afc4e127f9be74e106960c86097f96 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateTorqueSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateTorqueSimulationObserver.h
@@ -31,7 +31,7 @@ public:
    //! Constructor
    CalculateTorqueSimulationObserver(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string &path, std::shared_ptr<vf::mpi::Communicator> comm);
 	virtual ~CalculateTorqueSimulationObserver();             
-	void process(real step); 
+	void update(real step); 
    void addInteractor(SPtr<D3Q27Interactor> interactor);
 protected:
 	void collectData(real step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/DecreaseViscositySimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/DecreaseViscositySimulationObserver.cpp
index d8b9757aa30413f16454ed51b856b184d586b7ed..0754491767b55e2a6059c8eef160a94a1f087540 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/DecreaseViscositySimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/DecreaseViscositySimulationObserver.cpp
@@ -26,7 +26,7 @@ DecreaseViscositySimulationObserver::DecreaseViscositySimulationObserver(SPtr<Gr
 //////////////////////////////////////////////////////////////////////////
 DecreaseViscositySimulationObserver::~DecreaseViscositySimulationObserver() = default;
 //////////////////////////////////////////////////////////////////////////
-void DecreaseViscositySimulationObserver::process(real step)
+void DecreaseViscositySimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         setViscosity(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/DecreaseViscositySimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/DecreaseViscositySimulationObserver.h
index a06652efa69a664e4dc678db5725ba87d8ca640d..2e2c655d223619169e0f3edd3bfa554e924639e0 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/DecreaseViscositySimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/DecreaseViscositySimulationObserver.h
@@ -31,7 +31,7 @@ public:
     DecreaseViscositySimulationObserver(SPtr<Grid3D> grid, SPtr<UbScheduler> s, mu::Parser *nueFunc, std::shared_ptr<vf::mpi::Communicator> comm);
     ~DecreaseViscositySimulationObserver() override;
     //! calls collect PostprocessData.
-    void process(real step) override;
+    void update(real step) override;
 
 protected:
     //! resets the collision factor depending on the current timestep.
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/EmergencyExitSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/EmergencyExitSimulationObserver.cpp
index a502e834b2f8b24ff2616840fdb6183c716ca463..a6826a713b45f74239c603d9a23b946169ac60d5 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/EmergencyExitSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/EmergencyExitSimulationObserver.cpp
@@ -22,7 +22,7 @@ EmergencyExitSimulationObserver::EmergencyExitSimulationObserver(SPtr<Grid3D> gr
 //////////////////////////////////////////////////////////////////////////
 EmergencyExitSimulationObserver::~EmergencyExitSimulationObserver() = default;
 //////////////////////////////////////////////////////////////////////////
-void EmergencyExitSimulationObserver::process(real step)
+void EmergencyExitSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
@@ -33,7 +33,7 @@ void EmergencyExitSimulationObserver::process(real step)
 void EmergencyExitSimulationObserver::collectData(real step)
 {
     if (readMetafile()) {
-        rp->process((int)step);
+        rp->update((int)step);
         if (comm->getProcessID() == comm->getRoot())
             UBLOG(logINFO, "EmergencyExitSimulationObserver save step: " << step);
         comm->barrier();
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/EmergencyExitSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/EmergencyExitSimulationObserver.h
index b7d8f22191d3a4967e0fa7cede125122248cb152..f4a8e79f6f8b89f1b4e37714f0c42d2be4be1810 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/EmergencyExitSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/EmergencyExitSimulationObserver.h
@@ -25,7 +25,7 @@ public:
                              SPtr<MPIIORestartSimulationObserver> rp, std::shared_ptr<vf::mpi::Communicator> comm);
     ~EmergencyExitSimulationObserver() override;
 
-    void process(real step) override;
+    void update(real step) override;
 
 protected:
     void collectData(real step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/InSituCatalystSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/InSituCatalystSimulationObserver.cpp
index 5b3eee03fb77b570d89ad8802c3d078dc3eb92bf..4e8fd6d5f39fbeb581ace18bf544fa5346719850 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/InSituCatalystSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/InSituCatalystSimulationObserver.cpp
@@ -42,7 +42,7 @@ InSituCatalystSimulationObserver::InSituCatalystSimulationObserver(SPtr<Grid3D>
 //////////////////////////////////////////////////////////////////////////
 InSituCatalystSimulationObserver::~InSituCatalystSimulationObserver() {}
 //////////////////////////////////////////////////////////////////////////
-void InSituCatalystSimulationObserver::process(real step)
+void InSituCatalystSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/InSituCatalystSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/InSituCatalystSimulationObserver.h
index 705aeb9272765e845a1c970dc25f63fbb30f5a87..f81fe767a448a75f04d8cf965b33a14cdf36b2b4 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/InSituCatalystSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/InSituCatalystSimulationObserver.h
@@ -25,7 +25,7 @@ public:
     InSituCatalystSimulationObserver();
     InSituCatalystSimulationObserver(SPtr<Grid3D> grid, SPtr<UbScheduler> s, std::string script);
     virtual ~InSituCatalystSimulationObserver();
-    void process(real step);
+    void update(real step);
 
 protected:
     void collectData(real step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/InSituVTKSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/InSituVTKSimulationObserver.cpp
index 663bbc94026b009448868d17a90708bcc3ae55a5..74c1b653bd4f8b5f2def3492f83fa38677170feb 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/InSituVTKSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/InSituVTKSimulationObserver.cpp
@@ -57,7 +57,7 @@ InSituVTKSimulationObserver::InSituVTKSimulationObserver(SPtr<Grid3D> grid, SPtr
 //////////////////////////////////////////////////////////////////////////
 InSituVTKSimulationObserver::~InSituVTKSimulationObserver() { comm->CloseConnection(); }
 //////////////////////////////////////////////////////////////////////////
-void InSituVTKSimulationObserver::process(real step)
+void InSituVTKSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/InSituVTKSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/InSituVTKSimulationObserver.h
index d429930028c06c5ea8792aa09288fc12fe7dfacf..1171c54252fa315d1e9e84caed34d2596b9520c2 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/InSituVTKSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/InSituVTKSimulationObserver.h
@@ -23,7 +23,7 @@ public:
     InSituVTKSimulationObserver(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string &configFile,
                          SPtr<LBMUnitConverter> conv);
     virtual ~InSituVTKSimulationObserver();
-    void process(real step);
+    void update(real step);
 
 protected:
     void collectData(real step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/LineTimeSeriesSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/LineTimeSeriesSimulationObserver.cpp
index 5000d9b0342c8aa20d5fb98a04241c6727b3acd4..75350fb6e0904c434519a241228d7662c84ecf22 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/LineTimeSeriesSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/LineTimeSeriesSimulationObserver.cpp
@@ -61,7 +61,7 @@ LineTimeSeriesSimulationObserver::LineTimeSeriesSimulationObserver(SPtr<Grid3D>
     ix3 = x3min % val<3>(blockNx) + 1;
 }
 //////////////////////////////////////////////////////////////////////////
-void LineTimeSeriesSimulationObserver::process(real step)
+void LineTimeSeriesSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step)) {
         collectData();
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/LineTimeSeriesSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/LineTimeSeriesSimulationObserver.h
index d534ef7fe94909527f0441621ccc3e628a14a0a0..0f8a9ab44ac60e16708be7453e65809ec0505155 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/LineTimeSeriesSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/LineTimeSeriesSimulationObserver.h
@@ -30,7 +30,7 @@ public:
                               int level, std::shared_ptr<vf::mpi::Communicator> comm);
     ~LineTimeSeriesSimulationObserver() override = default;
 
-    void process(real step) override;
+    void update(real step) override;
     void writeLine(const std::string &path);
 
 protected:
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationBESimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationBESimulationObserver.cpp
index 4d2a44541fa3439aa5ffe5ec48f4737f4a9738fd..ef220856838baabadb3b8cf40270d0e505147069 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationBESimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationBESimulationObserver.cpp
@@ -40,7 +40,7 @@ MPIIOMigrationBESimulationObserver::MPIIOMigrationBESimulationObserver(SPtr<Grid
 //////////////////////////////////////////////////////////////////////////
 MPIIOMigrationBESimulationObserver::~MPIIOMigrationBESimulationObserver() { MPI_Type_free(&sendBlockIntType); }
 
-void MPIIOMigrationBESimulationObserver::process(real step)
+void MPIIOMigrationBESimulationObserver::update(real step)
 {
     if (scheduler->isDue(step)) {
         if (comm->isRoot())
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationBESimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationBESimulationObserver.h
index 31c4de3d0a4574de6b82dee68da090f059421bd6..fa55ea17a350ec9a1de215892258526142f6d19b 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationBESimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationBESimulationObserver.h
@@ -36,7 +36,7 @@ public:
                                 std::shared_ptr<vf::mpi::Communicator> comm);
     ~MPIIOMigrationBESimulationObserver() override;
     //! Each timestep writes the grid into the files
-    void process(real step) override;
+    void update(real step) override;
     //! Reads the grid from the files before grid reconstruction
     void restart(int step);
     //! Writes the blocks of the grid into the file cpBlocks.bin
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationSimulationObserver.cpp
index 0cd149101cf77f3b85fee735e25f180d4c4ec2a1..32e6ba5188626c0a37fba8e9db0ad4447502d001 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationSimulationObserver.cpp
@@ -69,7 +69,7 @@ MPIIOMigrationSimulationObserver::~MPIIOMigrationSimulationObserver()
 }
 
 //////////////////////////////////////////////////////////////////////////
-void MPIIOMigrationSimulationObserver::process(real step)
+void MPIIOMigrationSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step)) 
     {
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationSimulationObserver.h
index c9d2ac3a301d009b844eb5c954c28e97a1b3270f..588366a6498c107600d377a65819e11100aa6702 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationSimulationObserver.h
@@ -34,7 +34,7 @@ public:
     MPIIOMigrationSimulationObserver(SPtr<Grid3D> grid, SPtr<UbScheduler> s, SPtr<Grid3DVisitor> mV, const std::string &path, std::shared_ptr<vf::mpi::Communicator> comm);
     ~MPIIOMigrationSimulationObserver() override;
     //! Each timestep writes the grid into the files
-    void process(real step) override;
+    void update(real step) override;
     //! Reads the grid from the files before grid reconstruction
     void restart(int step);
     //! Writes the blocks of the grid into the file cpBlocks.bin
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIORestartSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIORestartSimulationObserver.cpp
index dd987625ec243bca24f13517818c6a8d9b9029ce..b2e9e5505e459b756d171ac7d564d3da457ed518 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIORestartSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIORestartSimulationObserver.cpp
@@ -77,7 +77,7 @@ MPIIORestartSimulationObserver::~MPIIORestartSimulationObserver()
 }
 
 //////////////////////////////////////////////////////////////////////////
-void MPIIORestartSimulationObserver::process(real step)
+void MPIIORestartSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step)) 
     {
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIORestartSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIORestartSimulationObserver.h
index a76b69306e69976d44b585006b9dd333af75f150..5681d9886e3a6f9a4b8d1cf1b8d32e9970fb8855 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIORestartSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIORestartSimulationObserver.h
@@ -35,7 +35,7 @@ public:
     MPIIORestartSimulationObserver(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string &path, std::shared_ptr<vf::mpi::Communicator> comm);
     ~MPIIORestartSimulationObserver() override;
     //! Each timestep writes the grid into the files
-    void process(real step) override;
+    void update(real step) override;
     //! Reads the grid from the files before grid reconstruction
     void restart(int step);
     //! Writes the blocks of the grid into the file cpBlocks.bin
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOSimulationObserver.h
index e42b7117e65d6220b60955acc800a93e16ed69d4..c04938a71e62db4753689ad35160a7f980c0c0cb 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOSimulationObserver.h
@@ -19,7 +19,7 @@ public:
     ~MPIIOSimulationObserver() override;
 
     //! Each timestep writes the grid into the files
-    void process(real step) override = 0;
+    void update(real step) override = 0;
 
     //! Writes the blocks of the grid into the file cpBlocks.bin
     void writeBlocks(int step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MicrophoneArraySimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/MicrophoneArraySimulationObserver.cpp
index a456fe6f88d92569a34943a0dc9c931a3e9fbfb5..2979c841c9c07e44b5a22998897d5665c67b51dc 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/MicrophoneArraySimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/MicrophoneArraySimulationObserver.cpp
@@ -22,7 +22,7 @@ MicrophoneArraySimulationObserver::MicrophoneArraySimulationObserver(SPtr<Grid3D
 
 MicrophoneArraySimulationObserver::~MicrophoneArraySimulationObserver() = default;
 
-void MicrophoneArraySimulationObserver::process(real step)
+void MicrophoneArraySimulationObserver::update(real step)
 {
     if (microphones.size() > 0) {
         collectData(step);
@@ -31,7 +31,7 @@ void MicrophoneArraySimulationObserver::process(real step)
             writeFile(step);
     }
 
-    UBLOG(logDEBUG3, "MicrophoneArraySimulationObserver::process:" << step);
+    UBLOG(logDEBUG3, "MicrophoneArraySimulationObserver::update:" << step);
 }
 
 bool MicrophoneArraySimulationObserver::addMicrophone(Vector3D coords)
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MicrophoneArraySimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/MicrophoneArraySimulationObserver.h
index fc773771b31287cbcd88c458e2a8e04a281dfc33..e87954fa2902df3c27833729869a70abac348508 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/MicrophoneArraySimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/MicrophoneArraySimulationObserver.h
@@ -27,7 +27,7 @@ public:
     ~MicrophoneArraySimulationObserver() override;
 
     //! calls collectData.
-    void process(real step) override;
+    void update(real step) override;
 
     //! add microphone
     bool addMicrophone(Vector3D coords);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/NUPSCounterSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/NUPSCounterSimulationObserver.cpp
index b3a8b3d675365dfdb5bd1c79160d73c9a2b3b521..3bd0bd6f888e64da0db8f492c872c4b15a518b4a 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/NUPSCounterSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/NUPSCounterSimulationObserver.cpp
@@ -61,7 +61,7 @@ NUPSCounterSimulationObserver::NUPSCounterSimulationObserver(SPtr<Grid3D> grid,
 //////////////////////////////////////////////////////////////////////////
 NUPSCounterSimulationObserver::~NUPSCounterSimulationObserver() = default;
 //////////////////////////////////////////////////////////////////////////
-void NUPSCounterSimulationObserver::process(real step)
+void NUPSCounterSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
@@ -76,7 +76,7 @@ void NUPSCounterSimulationObserver::collectData(real step)
         real tnups  = nups / (real)numOfThreads;
         UBLOG(logINFO, "Calculation step = " << step);
         UBLOG(logINFO, "Total performance = " << nups_t << " NUPS");
-        UBLOG(logINFO, "Performance per process = " << nups << " NUPS");
+        UBLOG(logINFO, "Performance per update = " << nups << " NUPS");
         UBLOG(logINFO, "Performance per thread = " << tnups << " NUPS");
         UBLOG(logINFO, "Time for " << step - nupsStep << " steps = " << time << " s");
         nupsStep = step;
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/NUPSCounterSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/NUPSCounterSimulationObserver.h
index 37e41d11a9fba4d43f59a1cc40dd2f15d4b67254..fdce1c4d67519b6d0a109e3cbd13e23b69d0fb19 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/NUPSCounterSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/NUPSCounterSimulationObserver.h
@@ -57,7 +57,7 @@ public:
     NUPSCounterSimulationObserver(SPtr<Grid3D> grid, SPtr<UbScheduler> s, int numOfThreads, std::shared_ptr<vf::mpi::Communicator> comm);
     ~NUPSCounterSimulationObserver() override;
 
-    void process(real step) override;
+    void update(real step) override;
 
 protected:
     //! Collect data for calculation of NUPS
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/PressureCoefficientSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/PressureCoefficientSimulationObserver.cpp
index 8df444b9f7465ffb7190dbad6c130c11eb3e88ed..7c9cd4b85e1404339b2c180bef93eafedff38c23 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/PressureCoefficientSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/PressureCoefficientSimulationObserver.cpp
@@ -23,7 +23,7 @@ PressureCoefficientSimulationObserver::PressureCoefficientSimulationObserver(SPt
 //////////////////////////////////////////////////////////////////////////
 PressureCoefficientSimulationObserver::~PressureCoefficientSimulationObserver() = default;
 //////////////////////////////////////////////////////////////////////////
-void PressureCoefficientSimulationObserver::process(real step)
+void PressureCoefficientSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/PressureCoefficientSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/PressureCoefficientSimulationObserver.h
index f8a9520aaeb6d612bf82797850cd1e70a7b9bbe4..bfb56a65dd31fd6f434462471c6a236340b05db0 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/PressureCoefficientSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/PressureCoefficientSimulationObserver.h
@@ -22,7 +22,7 @@ public:
                                    const std::string &path, std::shared_ptr<vf::mpi::Communicator> comm);
     ~PressureCoefficientSimulationObserver() override;
 
-    void process(real step) override;
+    void update(real step) override;
 
     void addInteractor(SPtr<D3Q27Interactor> interactor);
     void readValues(int step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/PressureDifferenceSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/PressureDifferenceSimulationObserver.cpp
index 4234d8907b62d18cd1077a277d62557d81d202f9..9b3c63f407b9fac00de6177a369fec2cb3e74a82 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/PressureDifferenceSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/PressureDifferenceSimulationObserver.cpp
@@ -71,7 +71,7 @@ PressureDifferenceSimulationObserver::PressureDifferenceSimulationObserver(SPtr<
 //////////////////////////////////////////////////////////////////////////
 PressureDifferenceSimulationObserver::~PressureDifferenceSimulationObserver() = default;
 //////////////////////////////////////////////////////////////////////////
-void PressureDifferenceSimulationObserver::process(real step)
+void PressureDifferenceSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/PressureDifferenceSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/PressureDifferenceSimulationObserver.h
index 447fb5374560bae134398783adb618ed32548a6f..35356d25f9fa941500188fc75850d1bb7c8f86fb 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/PressureDifferenceSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/PressureDifferenceSimulationObserver.h
@@ -29,7 +29,7 @@ public:
                                   /*const SPtr<LBMUnitConverter> conv,*/ std::shared_ptr<vf::mpi::Communicator> comm);
     ~PressureDifferenceSimulationObserver() override;
 
-    void process(real step) override;
+    void update(real step) override;
 
 protected:
     SPtr<IntegrateValuesHelper> h1, h2;
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/QCriterionSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/QCriterionSimulationObserver.cpp
index 3648d95261e75b88ffdf6b697c41b66c6334782d..010d9ff664e22519ceb169c549ecc05307655ed4 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/QCriterionSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/QCriterionSimulationObserver.cpp
@@ -32,7 +32,7 @@ void QCriterionSimulationObserver::init()
     }
 }
 //////////////////////////////////////////////////////////////////////////
-void QCriterionSimulationObserver::process(real step)
+void QCriterionSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/QCriterionSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/QCriterionSimulationObserver.h
index a624a4606c46715b2e183d66f279b45a97941fc8..1d5aec23f9d4af9d9e232dd215fbde060a7c6f7c 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/QCriterionSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/QCriterionSimulationObserver.h
@@ -31,7 +31,7 @@ public:
     QCriterionSimulationObserver(SPtr<Grid3D> grid, const std::string &path, WbWriter *const writer, SPtr<UbScheduler> s,
                           std::shared_ptr<vf::mpi::Communicator> comm);
     //! Make update if timestep is write-timestep specified in SPtr<UbScheduler> s
-    void process(real step) override;
+    void update(real step) override;
 
 protected:
     //! Prepare data and write in .vtk file
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/ShearStressSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/ShearStressSimulationObserver.cpp
index 5bc88dae1d9a6cbe8c25f00acd978ec2af391e6d..92c8f5f60344019cff472851104b86e5838302a8 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/ShearStressSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/ShearStressSimulationObserver.cpp
@@ -38,7 +38,7 @@ ShearStressSimulationObserver::ShearStressSimulationObserver(SPtr<Grid3D> grid,
 //////////////////////////////////////////////////////////////////////////
 ShearStressSimulationObserver::~ShearStressSimulationObserver() = default;
 //////////////////////////////////////////////////////////////////////////
-void ShearStressSimulationObserver::process(real step)
+void ShearStressSimulationObserver::update(real step)
 {
     if (step == 0) {
         initDistance();
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/ShearStressSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/ShearStressSimulationObserver.h
index 03ee83d21ee79f24ea536c10f0b144532c7811ab..66a76356d5a1fe8d7b096e3db0e1452dca8d613f 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/ShearStressSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/ShearStressSimulationObserver.h
@@ -31,7 +31,7 @@ public:
                            SPtr<UbScheduler> rs);
     ~ShearStressSimulationObserver() override;
 
-    void process(real step) override;
+    void update(real step) override;
 
     void addInteractor(SPtr<D3Q27Interactor> interactor);
 
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/SimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/SimulationObserver.h
index c80327b68d1ec4489b0beb2262a4191d06847450..f0c8e0e2c6428c4093f5a94204851988af38a5cd 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/SimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/SimulationObserver.h
@@ -59,7 +59,7 @@ public:
     virtual ~SimulationObserver();
     //! \brief Updates observer
     //! \param step is the actual time step
-    virtual void process(real step) = 0;
+    virtual void update(real step) = 0;
 
 protected:
     SPtr<Grid3D> grid;
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeAveragedValuesSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/TimeAveragedValuesSimulationObserver.cpp
index cdfc16ed5c919ebb09bb2bf237ad2ad7f1976362..ebd65f625600a1c68f48d00c33a79976ea6d1a5a 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeAveragedValuesSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/TimeAveragedValuesSimulationObserver.cpp
@@ -116,7 +116,7 @@ void TimeAveragedValuesSimulationObserver::initData()
     }
 }
 //////////////////////////////////////////////////////////////////////////
-void TimeAveragedValuesSimulationObserver::process(real step)
+void TimeAveragedValuesSimulationObserver::update(real step)
 {
     if (step == minStep) {
         initData();
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeAveragedValuesSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/TimeAveragedValuesSimulationObserver.h
index 26930848e16bfed709131083075c008e7187281e..14a1f6354aa57ca588361299caf7a1d336001f9e 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeAveragedValuesSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/TimeAveragedValuesSimulationObserver.h
@@ -47,7 +47,7 @@ public:
                                   std::vector<real> &levelCoords, std::vector<real> &bounds,
                                   bool timeAveraging = true);
     //! Make update
-    void process(real step) override;
+    void update(real step) override;
     //! Computes subtotal of velocity , fluctuations and triple correlations
     void calculateSubtotal(real step);
     void addLevelCoordinate(real c);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeDependentBCSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/TimeDependentBCSimulationObserver.cpp
index 99e7ebafd6cd3835b5993cad28a5531a2965fd3d..cedf228b665fff58a777f01aee8832c0e8e1cec4 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeDependentBCSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/TimeDependentBCSimulationObserver.cpp
@@ -8,7 +8,7 @@ TimeDependentBCSimulationObserver::TimeDependentBCSimulationObserver(SPtr<Grid3D
 //////////////////////////////////////////////////////////////////////////
 TimeDependentBCSimulationObserver::~TimeDependentBCSimulationObserver() = default;
 //////////////////////////////////////////////////////////////////////////
-void TimeDependentBCSimulationObserver::process(real step)
+void TimeDependentBCSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step)) {
         for (SPtr<Interactor3D> inter : interactors)
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeDependentBCSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/TimeDependentBCSimulationObserver.h
index 32a1ea780be575ae1dffd1dea11a64ff5f42d591..0c72054f2feadcaa6cf9792453d1e3389e7213bb 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeDependentBCSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/TimeDependentBCSimulationObserver.h
@@ -18,7 +18,7 @@ public:
     TimeDependentBCSimulationObserver(SPtr<Grid3D> grid, SPtr<UbScheduler> s);
     ~TimeDependentBCSimulationObserver() override;
 
-    void process(real step) override;
+    void update(real step) override;
 
     //! add interactors to SimulationObserver
     void addInteractor(SPtr<Interactor3D> interactor);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeseriesSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/TimeseriesSimulationObserver.cpp
index 861045cf62dcb08cfc19b56f3cbd50b988961d74..e0560e2767b70dcc51db08f807a29e467efa6a2d 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeseriesSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/TimeseriesSimulationObserver.cpp
@@ -43,7 +43,7 @@ TimeseriesSimulationObserver::TimeseriesSimulationObserver(SPtr<Grid3D> grid, SP
 //////////////////////////////////////////////////////////////////////////
 TimeseriesSimulationObserver::~TimeseriesSimulationObserver() = default;
 //////////////////////////////////////////////////////////////////////////
-void TimeseriesSimulationObserver::process(real step)
+void TimeseriesSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeseriesSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/TimeseriesSimulationObserver.h
index 1cc7ed37583995a503f70953f38c8695d3650e87..db41bd2ecea38ac86e97740310ba9501f94caa4a 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeseriesSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/TimeseriesSimulationObserver.h
@@ -31,7 +31,7 @@ public:
     ~TimeseriesSimulationObserver() override;
 
     //! calls collectData.
-    void process(real step) override;
+    void update(real step) override;
 
 protected:
     void collectData(real step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TurbulenceIntensitySimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/TurbulenceIntensitySimulationObserver.cpp
index ee19e1bf28cc65ea4bd6ff2b9fcf855fbd9798b2..47b865ed7b80fd1c420d59fa54144d5afa1471f5 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/TurbulenceIntensitySimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/TurbulenceIntensitySimulationObserver.cpp
@@ -40,7 +40,7 @@ void TurbulenceIntensitySimulationObserver::init()
     }
 }
 //////////////////////////////////////////////////////////////////////////
-void TurbulenceIntensitySimulationObserver::process(real step)
+void TurbulenceIntensitySimulationObserver::update(real step)
 {
     calculateAverageValues(int(step));
 
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TurbulenceIntensitySimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/TurbulenceIntensitySimulationObserver.h
index edede6fe6f76f6df237900c5c77eb0eead6ef4b3..c615bbda5cb58a522e6853fcf3f8475bc3320b52 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/TurbulenceIntensitySimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/TurbulenceIntensitySimulationObserver.h
@@ -19,7 +19,7 @@ class TurbulenceIntensitySimulationObserver : public SimulationObserver
 public:
     TurbulenceIntensitySimulationObserver(SPtr<Grid3D> grid, const std::string &path, WbWriter *const writer,
                                    SPtr<UbScheduler> s, std::shared_ptr<vf::mpi::Communicator> comm);
-    void process(real step) override;
+    void update(real step) override;
 
 protected:
     void collectData(real step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBlocksSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBlocksSimulationObserver.cpp
index 8dec964fdb3943a4d8c194fb39d107d8dc2921aa..fd983bd02bd0bf3a7ae0cd0af96b2f169180f31b 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBlocksSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBlocksSimulationObserver.cpp
@@ -49,7 +49,7 @@ WriteBlocksSimulationObserver::WriteBlocksSimulationObserver(SPtr<Grid3D> grid,
 //////////////////////////////////////////////////////////////////////////
 WriteBlocksSimulationObserver::~WriteBlocksSimulationObserver() = default;
 //////////////////////////////////////////////////////////////////////////
-void WriteBlocksSimulationObserver::process(real step)
+void WriteBlocksSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBlocksSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBlocksSimulationObserver.h
index 4bc210c82d34a00102aaee55b0421793bfa12a4d..805605b64564272c6a327545a4b01bc89926da38 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBlocksSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBlocksSimulationObserver.h
@@ -60,7 +60,7 @@ public:
                            std::shared_ptr<vf::mpi::Communicator> comm);
     ~WriteBlocksSimulationObserver() override;
 
-    void process(real step) override;
+    void update(real step) override;
 
 protected:
     //! Collect data for VTK-file
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.cpp
index 9685a942aeefc0176c538d0c69bdad285d448451..9d09db9e2c839f5db6bdd4c95e348e3ade094759 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.cpp
@@ -69,7 +69,7 @@ WriteBoundaryConditionsSimulationObserver::WriteBoundaryConditionsSimulationObse
     }
 }
 //////////////////////////////////////////////////////////////////////////
-void WriteBoundaryConditionsSimulationObserver::process(real step)
+void WriteBoundaryConditionsSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.h
index 86ff363d5eb14f54f3cf733a37671a70445f9a18..ad5b20df942748e065cebe926ba346581b9bf30b 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.h
@@ -64,7 +64,7 @@ public:
                                        WbWriter *const writer, std::shared_ptr<vf::mpi::Communicator> comm);
     ~WriteBoundaryConditionsSimulationObserver() override = default;
 
-    void process(real step) override;
+    void update(real step) override;
 
 protected:
     //! Collect data for VTK-file
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteGbObjectsSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteGbObjectsSimulationObserver.cpp
index 7f2b699e4eb2a163db2791969bd78fcb5e20ef91..62178444f92abffebe8ce5d2ad1bd8a1f54960f0 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteGbObjectsSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteGbObjectsSimulationObserver.cpp
@@ -14,7 +14,7 @@ WriteGbObjectsSimulationObserver::WriteGbObjectsSimulationObserver(SPtr<Grid3D>
 //////////////////////////////////////////////////////////////////////////
 WriteGbObjectsSimulationObserver::~WriteGbObjectsSimulationObserver() = default;
 //////////////////////////////////////////////////////////////////////////
-void WriteGbObjectsSimulationObserver::process(real step)
+void WriteGbObjectsSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteGbObjectsSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteGbObjectsSimulationObserver.h
index 7fa7709177c79195495cc259b33234f2ac418ffc..50f88c65ddbf87bb9960f2be61e380e9ad2d570b 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteGbObjectsSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteGbObjectsSimulationObserver.h
@@ -24,7 +24,7 @@ public:
                               std::shared_ptr<vf::mpi::Communicator> comm);
     ~WriteGbObjectsSimulationObserver() override;
     //! calls collectData.
-    void process(real step) override;
+    void update(real step) override;
     //! adds geometry object
     void addGbObject(SPtr<GbObject3D> object);
 
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMQFromSelectionSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMQFromSelectionSimulationObserver.cpp
index a9f837653124aa485769aa99d0487ef683d6c7e7..caf1e8c1ed2d4c43a219e1fd7a09b3a96e0e2370 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMQFromSelectionSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMQFromSelectionSimulationObserver.cpp
@@ -35,7 +35,7 @@ WriteMQFromSelectionSimulationObserver::WriteMQFromSelectionSimulationObserver(S
 //////////////////////////////////////////////////////////////////////////
 void WriteMQFromSelectionSimulationObserver::init() {}
 //////////////////////////////////////////////////////////////////////////
-void WriteMQFromSelectionSimulationObserver::process(real step)
+void WriteMQFromSelectionSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMQFromSelectionSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMQFromSelectionSimulationObserver.h
index 23af9d28fccbc635c4adceb3b867adfdefc29fac..e91fc369e1ddb33af68629d6aab75cf5b3756290 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMQFromSelectionSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMQFromSelectionSimulationObserver.h
@@ -27,7 +27,7 @@ public:
                                     std::shared_ptr<vf::mpi::Communicator> comm);
     ~WriteMQFromSelectionSimulationObserver() override = default;
 
-    void process(real step) override;
+    void update(real step) override;
 
 protected:
     void collectData(real step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.cpp
index f20c4c91bf95512a66ee9e0c1ec53098a7066e33..142bcc52b053f0be71c8a1ca41eaf0dfeaf24f1b 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.cpp
@@ -72,7 +72,7 @@ void WriteMacroscopicQuantitiesPlusMassSimulationObserver::init()
 {}
 
 //////////////////////////////////////////////////////////////////////////
-void WriteMacroscopicQuantitiesPlusMassSimulationObserver::process(real step)
+void WriteMacroscopicQuantitiesPlusMassSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.h
index 9da90c1d709fc1f98eca7848da6947fe22599aa9..ce6946528269adec3374dff655991b4a8cb0aaf7 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.h
@@ -66,7 +66,7 @@ public:
                                           WbWriter *const writer, SPtr<LBMUnitConverter> conv, std::shared_ptr<vf::mpi::Communicator> comm);
     ~WriteMacroscopicQuantitiesPlusMassSimulationObserver() override = default;
 
-    void process(real step) override;
+    void update(real step) override;
 
 protected:
     //! Collect data for VTK-file
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.cpp
index 195ef22a89be25855f058184e141f721f572acab..b87b5cfcfc5b10b3fc97d54b135a745c811f9e0e 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.cpp
@@ -72,7 +72,7 @@ void WriteMacroscopicQuantitiesSimulationObserver::init()
 {}
 
 //////////////////////////////////////////////////////////////////////////
-void WriteMacroscopicQuantitiesSimulationObserver::process(real step)
+void WriteMacroscopicQuantitiesSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.h
index 02c76ea2e1ca88b5d2676103bf65a29e400416ef..85de0336487a71774d63c86f4c6ba1b65b15fe2a 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.h
@@ -66,7 +66,7 @@ public:
                                           WbWriter *const writer, SPtr<LBMUnitConverter> conv, std::shared_ptr<vf::mpi::Communicator> comm);
     ~WriteMacroscopicQuantitiesSimulationObserver() override = default;
 
-    void process(real step) override;
+    void update(real step) override;
 
 protected:
     //! Collect data for VTK-file
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMultiphaseQuantitiesSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMultiphaseQuantitiesSimulationObserver.cpp
index 46d1d7c83e4cc823f32156b7f0b3e73aa889ce61..7669dec49c77bc2621bd903f614d2c3d3d03e2a4 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMultiphaseQuantitiesSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMultiphaseQuantitiesSimulationObserver.cpp
@@ -73,7 +73,7 @@ void WriteMultiphaseQuantitiesSimulationObserver::init()
 {}
 
 //////////////////////////////////////////////////////////////////////////
-void WriteMultiphaseQuantitiesSimulationObserver::process(real step)
+void WriteMultiphaseQuantitiesSimulationObserver::update(real step)
 {
     if (scheduler->isDue(step))
         collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMultiphaseQuantitiesSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMultiphaseQuantitiesSimulationObserver.h
index 9a97b35bcaee16db398f03406c6684958cb8dea3..452a06d3bbb23943995f42ce84d712aa3c01b6a4 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMultiphaseQuantitiesSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMultiphaseQuantitiesSimulationObserver.h
@@ -66,7 +66,7 @@ public:
                                           WbWriter *const writer, SPtr<LBMUnitConverter> conv, std::shared_ptr<vf::mpi::Communicator> comm);
     ~WriteMultiphaseQuantitiesSimulationObserver() override = default;
 
-    void process(real step) override;
+    void update(real step) override;
 
 protected:
     //! Collect data for VTK-file
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteThixotropyQuantitiesSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteThixotropyQuantitiesSimulationObserver.cpp
index dbfcd2b565529eb06001141df7ffb97e3f767e3a..5671e4acf6417d50249462afef709c9bb3747fdf 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteThixotropyQuantitiesSimulationObserver.cpp
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteThixotropyQuantitiesSimulationObserver.cpp
@@ -71,7 +71,7 @@ void WriteThixotropyQuantitiesSimulationObserver::init()
 
 }
 //////////////////////////////////////////////////////////////////////////
-void WriteThixotropyQuantitiesSimulationObserver::process(real step)
+void WriteThixotropyQuantitiesSimulationObserver::update(real step)
 {
 	if (scheduler->isDue(step))
 		collectData(step);
diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteThixotropyQuantitiesSimulationObserver.h b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteThixotropyQuantitiesSimulationObserver.h
index c5bea7d70732667b64e9c1df62a9dc49ad581c30..3ac9664e595adef9b45edaee662849a3ab63616f 100644
--- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteThixotropyQuantitiesSimulationObserver.h
+++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteThixotropyQuantitiesSimulationObserver.h
@@ -48,7 +48,7 @@ public:
 	WriteThixotropyQuantitiesSimulationObserver(SPtr<Grid3D> grid, SPtr<UbScheduler> s, const std::string& path, WbWriter* const writer, SPtr<LBMUnitConverter> conv, std::shared_ptr<vf::mpi::Communicator> comm);
 	~WriteThixotropyQuantitiesSimulationObserver() = default;
 
-   void process(real step) override;
+   void update(real step) override;
 
 protected:
    void collectData(real step);